Вы находитесь на странице: 1из 4

ОДНОМЕРНЫЕ МАССИВЫ

Общие замечания
1) Массив – это структура данных, представляющая собой именованную
конечную последовательность однотипных элементов.
2) Массивы можно определять либо с помощью операторов описания, либо
динамически с помощью операций выделения памяти.
3) Оператор описания массива задается следующим образом:
<тип элементов> <имя массива>[размер];
4) Тип элементов – произвольный тип данных языка C++, имя массива –
стандартный идентификатор, размер – константа, или константное
выражение.
5) Элементы массива нумеруются с нуля, потому номер последнего
элемента массива всегда на единицу меньше его размерности.
6) Доступ к отдельному элементу осуществляется по имени массива и
индексу соответствующего элемента, который указывается в квадратных
скобках.
7) Автоматический контроль выхода индекса за границы массива не
выполняется. Эта задача возлагается на разработчика.
8) Ввод, вывод и обработка массива осуществляется поэлементно с
помощью инструкций цикла с параметром или цикла с предусловием.
9) Если до начала работы программы количество элементов в массиве не
определено, следует использовать динамические массивы. Память под
них выделяется с помощью операции new или функции malloc во время
выполнения программы. В этом случае массив описывается следующим
образом:
указатель = new <тип элементов>[размер];
В качестве размера массива может выступать любое целое
положительное значение.
Или
<тип элементов> указатель = (тип указателя) malloc (размер массива в
байтах);
Размер массива в байтах чаще всего определяется так:
<количество элементов массива> * sizeof(тип элементов)
10) Память, зарезервированная под динамический массив с помощью new [],
должна освобождаться оператором delete [], а память, выделенная
функцией mallос – посредством функции free:
delete [ ] <указатель на массив>;
free (указатель на массив);

Задача 11. Дан одномерный массив, состоящий из п целых элементов.


1) Вычислить сумму положительных элементов массива.
2) Вычислить произведение элементов массива, расположенных между
максимальным по модулю и минимальным по модулю элементами.
3) Определить значение последнего отрицательного элемента.
4) Преобразовать массив таким образом, чтобы сначала располагались все
положительные элементы, а потом – все отрицательные (элементы, равные 0,
считать положительными).
Предусмотреть ввод элементов с клавиатуры, задание значений элементов
случайным образом и вывод элементов исходного и измененного массива.

#include "stdafx.h"
#include "clocale"
#include "math.h"
#include "iostream"
#include "iomanip"
#include "time.h"

using namespace std;

int _tmain(int argc, _TCHAR* argv[])


{
setlocale(LC_ALL, ".1251");
int sum = 0;
int n, p = 1, j, i;
cout << "Введите кол-во элементов массива: ";
cin >> n;
int *mas= new int [n];
// инициализация элементов массива
do {
cout << endl;
cout << "Меню" << endl;
cout << "1. Ввести элементы массива с клавиатуры" << endl;
cout << "2. Задать элементы случайными числами" << endl;
cout << endl << "Введите номер пункта->";
cin >> p;
switch (p) {
case 1: //ввод элементов массива
for (j = 0; j < n; j++)
{
cout << "mas[" << j << "] -> ";
cin >> mas[j];
}
break;
case 2: //инициализация массива случайным образом
//инициализация случайных чисел
time_t t;
srand((unsigned) time(&t));
for (j = 0; j < n; j++)
{
mas[j] = rand() % 101 - 50;
// значения элементов от -50 до 50
}
break;
}
}
while (p != 1 && p != 2);
cout <<"Был введен массив:" << endl;
for (j = 0; j < n; j++)
{
cout << setw(6) << mas[j];
}
cout << endl;

// начало задания 1
for (j = 0; j < n; j++)
{
if (mas[j]>0)
sum = sum + mas[j];
}
cout << "Сумма положительных элементов:" << sum << endl;
//конец задания 1

// начало задания 2
int min = abs(mas[0]);
int max = abs(mas[0]);
int nmin = 0;
int nmax = 0;
for (j = 1; j < n; j++){
if (abs(mas[j]) < min)
{
min = abs(mas[j]); //поиск минимума по модулю
nmin = j; //номер минимального элемента
}
if (abs(mas[j]) > max)
{
max = abs(mas[j]); //поиск максимума по модулю
nmax = j; //номер максимального элемента
}
}
// нумерация элементов от меньшего числа к большему
if (nmin > nmax){
int t = nmin;
nmin = nmax;
nmax = t;
}
int s = 1;
for (j = nmin + 1; j < nmax; j++) //произведение
s = s*mas[j];
cout << "Произведение: " << s << endl;
//конец задания 2
// начало задания3
int f = -1;
for (i = n - 1; i >= 0; i--)
if (mas[i] < 0){
f = i;
break;
}
if ( f != -1)
cout << "Номер последнего отрицательного элемента: " << f << endl;
else cout << "в массиве нет отрицательных элементов" << endl;
//конец задания3
// начало задания4
for (i = n - 1; i > 0; i--)
for (j = 0; j < i; j++)
if (mas[j] < 0 && mas[j + 1] >= 0)
{
float t = mas[j];
mas[j] = mas[j + 1];
mas[j + 1] = t;
}
cout <<"Преобразованный массив:" << endl;
for (j = 0; j < n; j++)
{
cout << setw(6) << mas[j];
}
cout << endl;
// конец задания 4
delete []mas;
_gettch();
return 0;
}

Вам также может понравиться