27.06.2016, 21:18
|
#1
|
Форумчанин
Регистрация: 21.06.2016
Сообщений: 109
|
Работа с одномерным массивом
Задача:
Цитата:
Тема: Одномерные массивы.
С одномерным массивом, состоящим из n вещественных элементов, произвести следующие операции:
1) найти количество элементов массива, меньших определенного числа, вводимого пользователем;
2) вычислить сумму целых частей элементов массива, расположенных после последнего отрицательного элемента;
3) преобразовать массив таким образом, чтобы сначала располагались все элементы, отличающиеся от максимального не более чем на 20%, а потом — все остальные.
Примечание: Размеры массивов задаются именованными константами. Все операции над массивами выполняются отдельными функциями в том порядке, в котором они описаны в задании. Элементы массивов задаются одним из двух способов: генерация случайным образом или ввод с клавиатуры. Способ заполнения массива выбирается пользователем (необходимо предусмотреть соответствующий запрос). При составлении программ, максимальное количество элементов в массиве задается с помощью макроопределения #define. Однако программа должна спрашивать у пользователя реальную размерность массива (в диапазоне от единицы до константы в макроопределении). Для программ этого раздела, использовать глобальные массивы запрещается. Выход индекса за пределы массива считается грубейшей ошибкой.
|
Код:
Цитата:
/*С одномерным массивом, состоящим из n вещественных элементов, произвести следующие операции:
1) вычислить произведение положительных элементов массива;
2) вычислить сумму элементов массива, расположенных до минимального элемента. При наличии нескольких минимальных элементов (равных друг другу) выбирается последний из них;
3) упорядочить по возрастанию отдельно элементы, стоящие на четных местах, и элементы, стоящие на нечетных местах.*/
#include <iostream>
#include <ctime>
using namespace std;
#define lenght 101
void kol_el(int kol, int array[lenght])
{
int kol_el = 0;
int a;
cout << "Введите число: " << endl;
cin >> a;
for (int i = 0; i < kol; i++)
{
if (array[i] < a)
kol_el = kol_el + array[i];
}
cout << "Количество элементов, меньших введенного вами числа: " << kol_el << endl;
}
void summa(int kol, int array[lenght])
{
int sum = 0;
for (int i = 0; i < kol; i++)
if (array[i] >= 0)
{
sum = sum + array[i];
}
else
{sum = 0};
}
void preobr(int kol, int array[lenght])
{
int max;
array[0] = max;
for (int i = 0; i < kol; i++)
if (array[i] > max) array[i] = max;
max = array[0];
for (int i = 0; i < kol; i++)
if (array[i] > 4/5*max)
}
int main(){
setlocale (LC_ALL, "Russian");
int kol, a, b;
int array[lenght];
system("pause");
for (int i = 0; i < lenght; i++)
array[i] = 0;
cout << "Введите количество элементов массива, но не более 100: " << endl;
cin >> kol;
if ((kol < 1) || (kol > 100)) cout << "Введено неверное количество элементов массива" << endl;
cout << "Как заполнять массив?" << endl << "1. Случайными числами" << endl << "2. Вы будете вводить свои значения" << endl << "Введите цифру: " << endl;
cin >> a;
switch (a) {
case '1': {
srand(time(NULL));
for (int j = 0; j < kol; j++)
array[j] = rand() % 200;} break;
case '2': {
for (int i = 0; i < kol; i++)
{
cout << "Введите " << i+1 << " элемент:" << endl;
cin >> array[i];
} break;
default:
{cout << "Ошибка! Нужно выбрать либо 1, либо 2" << endl;}
}
cout << "Ваш массив: " << endl;
for (int i = 0; i < kol; i++)
cout << array[i] << endl;
kol_el(kol, array);
summa(kol, array);
preobr(kol, array);
return 0;
}
|
Как в третьей функции сделать так, чтобы все элементы, удовлетворяющие условию, переместить в начало, после самого максимального элемента?
|
|
|