Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 5.00
alucard115
10 / 1 / 1
Регистрация: 07.05.2013
Сообщений: 67
#1

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

19.02.2014, 16:32. Просмотров 2172. Ответов 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 минут
помогите пожалуйста...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.02.2014, 16:32     Преобразовать массив таким образом, чтобы сначала располагались все элементы, модуль которых не превышает 1
Посмотрите здесь:

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

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

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

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

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
stikkas
19 / 19 / 6
Регистрация: 26.01.2014
Сообщений: 56
19.02.2014, 16:41     Преобразовать массив таким образом, чтобы сначала располагались все элементы, модуль которых не превышает 1 #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;
}
это имеется ввиду?
alucard115
10 / 1 / 1
Регистрация: 07.05.2013
Сообщений: 67
19.02.2014, 16:53  [ТС]     Преобразовать массив таким образом, чтобы сначала располагались все элементы, модуль которых не превышает 1 #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;
}
это имеется ввиду?
да, что то типо этого). последний пункт сделать надо, каждый пункт как функция, и вся задача, целиком в структуру сделана.
stikkas
19 / 19 / 6
Регистрация: 26.01.2014
Сообщений: 56
19.02.2014, 16:54     Преобразовать массив таким образом, чтобы сначала располагались все элементы, модуль которых не превышает 1 #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;
            }
        }
    }
alucard115
10 / 1 / 1
Регистрация: 07.05.2013
Сообщений: 67
19.02.2014, 17:02  [ТС]     Преобразовать массив таким образом, чтобы сначала располагались все элементы, модуль которых не превышает 1 #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;
            }
        }
    }
эмм.. это что?) тут я так понял, свой массив. а как вывести, что сначала такой массив задан, а потом результат сортировки?)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.02.2014, 19:36     Преобразовать массив таким образом, чтобы сначала располагались все элементы, модуль которых не превышает 1
Еще ссылки по теме:

Преобразовать массив таким образом чтобы сначала располагались все элементы равные нулю а потом остальные - C++
#include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; using namespace std; int main() { int...

Преобразовать массив таким образом, чтобы сначала располагались все по- ложительные элементы, а потом все остальные.как доработать? - C++
#include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; #include &lt;cmath&gt; using namespace std; void float1(double...

Преобразовать массив таким образом, чтобы сначала располагались четные, а потом нечетные элементы - C++
Ребята , помогите : нужно составить алгоритм и программу преобразования массива A, таким образом , чтобы сначала распологались четные , а...

Сортировать массив таким образом, чтобы сначала располагались все положительные элементы - C++
Сортировать массив таким образом, чтобы сначала располагались все положительные элементы, а потом - все отрицательные (элементы, равные 0...

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

Преобразовать массив таким образом, чтобы сначала располагаись все положительные элементы, а потом-все отлицательные - C++
Преобразовать массив таким образом, чтобы сначала располагаись все положительные элементы, а потом-все отлицательные (элементы, равные 0,...


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

Или воспользуйтесь поиском по форуму:
stikkas
19 / 19 / 6
Регистрация: 26.01.2014
Сообщений: 56
19.02.2014, 19:36     Преобразовать массив таким образом, чтобы сначала располагались все элементы, модуль которых не превышает 1 #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;
    }
}
Yandex
Объявления
19.02.2014, 19:36     Преобразовать массив таким образом, чтобы сначала располагались все элементы, модуль которых не превышает 1
Ответ Создать тему
Опции темы

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