Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/16: Рейтинг темы: голосов - 16, средняя оценка - 4.75
alucard115
10 / 1 / 1
Регистрация: 07.05.2013
Сообщений: 67
1

Преобразовать массив таким образом, чтобы сначала располагались все элементы, модуль которых не превышает 1

19.02.2014, 16:32. Просмотров 3146. Ответов 5
Метки нет (Все метки)

В одномерном массиве, состоящей из n вещественных элементов, вычислить:
1) номер минимального элемента массива;
2) сумму элементов массива, расположенных между первым и вторым отрицательными элементами.
3) Преобразовать массив таким образом, чтобы сначала располагались все элементы, модуль которых не превышает 1, а потом - все остальные.

Код
#include <iostream>
#include <cstdlib>
#include <cmath>
#include <locale> 

using namespace std;

double minElem(double *arr, int n);
double summElem(double *arr, int n);

int main() {
	int n = 0;
	
	setlocale(0, "rus");
	srand((unsigned)time(NULL));

	cout << "Введите количество элементов: ";
	cin >> n;

	double *arr = new double [n];
	
	for(int i = 0; i < n; i++) {
		 arr[i]=rand() % 20 - 10;
		cout << " [" << i << "] = ";
		cout << arr[i];
	}
	cout << "\n Минимальный элемент: " << minElem(arr, n) << endl;
	cout << "\n Сумма элементов: " << summElem(arr, n) << endl;
	delete [] arr;
	
	system("PAUSE");
	return 0;
}

double minElem(double *arr, int n) 
{
	double min = arr[0];

	for(int i = 1; i < n; i++) {
		if(arr[i] < min)
			min = arr[i];
	}
	return min;
}

double summElem(double *arr, int n)
{
	double summ = 0.0;
	bool flag = false;	// Флаг
	int begin = 0;
	int end = 0;	

	for(int i = 0; i < n; i++) {
		if(arr[i] < 0 && !flag) {
			begin = i;
			flag = true;
		}
		else if(arr[i] < 0 && flag) {
			end = i;
			break;
		}
	}
	
	for(int i = begin + 1; i < end; i++) {
		summ += arr[i];
	}
	return summ;
}
Первые 2 подпункта сделаны, все работает. Помогите пожалуйста сделать 3 подпункт. и еще, как оформить, чтобы каждый подпункт был как функция, и вся задача целиком была структурой?

Добавлено через 23 часа 25 минут
помогите пожалуйста...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.02.2014, 16:32
Ответы с готовыми решениями:

Преобразовать массив таким образом, чтобы сначала располагались все элементы, модуль которых не превышает 1
В одномерном массиве, состоящей из n вещественных элементов, вычислить: 1)...

Преобразовать массив таким образом, чтобы сначала располагались все элементы, целая часть которых не превышает 1, а потом все остальные
привет всем) никак не могу придумать влгоритм для куска задачи:...

Преобразовать массив таким образом, чтобы сначала располагались все нулевые элементы
В двумерном массиве, состоящем из NxN вещественных элементов, вычислить:...

Преобразовать массив, чтобы сначала располагались элементы, модуль которых не превышает 5, а потом остальные
Помогите преобразовать массив таким образом, чтобы сначала располагались все...

Преобразовать массив таким образом, чтобы сначала располагались все положительные элементы, а потом все отрицательные
В одномерном массиве, состоящем из n вещественных элементов, вычислить:...

5
stikkas
19 / 19 / 8
Регистрация: 26.01.2014
Сообщений: 56
19.02.2014, 16:41 2
что имеемтся ввиду вся программа была структурой?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
struct massiv {
   void init();
   double minElement();
   double sumElements();
   void sort();
   void show();
   private:
     double items[10];
};
 
int main() {
 massiv m;
 m.init();
 cout << m.minElement();
 cout << m.sumEelements();
 m.sort();
 m.show();
 return 0;
}
это имеется ввиду?
0
alucard115
10 / 1 / 1
Регистрация: 07.05.2013
Сообщений: 67
19.02.2014, 16:53  [ТС] 3
Цитата Сообщение от stikkas Посмотреть сообщение
что имеемтся ввиду вся программа была структурой?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
struct massiv {
   void init();
   double minElement();
   double sumElements();
   void sort();
   void show();
   private:
     double items[10];
};
 
int main() {
 massiv m;
 m.init();
 cout << m.minElement();
 cout << m.sumEelements();
 m.sort();
 m.show();
 return 0;
}
это имеется ввиду?
да, что то типо этого). последний пункт сделать надо, каждый пункт как функция, и вся задача, целиком в структуру сделана.
0
stikkas
19 / 19 / 8
Регистрация: 26.01.2014
Сообщений: 56
19.02.2014, 16:54 4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <cmath>
int arr[8] = {10, 20, 30, 1, 0, -1, -2, -4};
    for (int i = 0; i < 8; ++i) {
        if (abs(arr[i]) <= 1)
            continue;
        for (int j = i + 1; j < 8; ++j) {
            if (abs(arr[j]) <= 1) {
                int tmp = arr[j];
                arr[j] = arr[i];
                arr[i] = tmp;
                break;
            }
        }
    }
0
alucard115
10 / 1 / 1
Регистрация: 07.05.2013
Сообщений: 67
19.02.2014, 17:02  [ТС] 5
Цитата Сообщение от stikkas Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <cmath>
int arr[8] = {10, 20, 30, 1, 0, -1, -2, -4};
    for (int i = 0; i < 8; ++i) {
        if (abs(arr[i]) <= 1)
            continue;
        for (int j = i + 1; j < 8; ++j) {
            if (abs(arr[j]) <= 1) {
                int tmp = arr[j];
                arr[j] = arr[i];
                arr[i] = tmp;
                break;
            }
        }
    }
эмм.. это что?) тут я так понял, свой массив. а как вывести, что сначала такой массив задан, а потом результат сортировки?)
0
stikkas
19 / 19 / 8
Регистрация: 26.01.2014
Сообщений: 56
19.02.2014, 19:36 6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <cmath>
const int size = 10;
 
struct massiv {
// тут опеределение структуры
private:
   items[size];
};
// реализация структуры (показаны только два метода, остальные по подобию)
 
void massiv::show() {
   for (int i = 0; i < size; ++i)
     cout << items[i] << " ";
   cout << endl;
}
 
void massiv::sort() {
    for (int i = 0; i < size; ++i) {
        if (abs(items[i]) <= 1)
            continue;
        int j = i + 1;
        for (; j < size; ++j) {
            if (abs(items[j]) <= 1) {
                int tmp = items[j];
                items[j] = items[i];
                items[i] = tmp;
                break;
            }
        }
         if (j == size)
             break;
    }
}
0
19.02.2014, 19:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.02.2014, 19:36

Преобразовать массив таким образом, чтобы сначала располагались все по- ложительные элементы, а потом все остальные
#include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; #include &lt;cmath&gt; ...

Преобразовать массив таким образом, чтобы сначала располагались все положительные элементы, а потом - все остальные
Помогите, пожалуйста. как составить код в с++. Дан целочисленный массив...

Преобразовать массив таким образом, чтобы сначала располагались все положительные элементы, а потом – все отрицательные
В одномерном массиве, состоящем из n целочисленных элементов, вычислить:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru