ТЕМА: Обработка массивов в программах на С++
ЦЕЛЬ РАБОТЫ: получить практические навыки по описанию и обработке одномерных
и двумерных массивов на языке C++
1. Одномерные
массивы:
Составить программу, выполняющую следующие функции
1.1. Дан массив целых чисел.
Заполнить массив случайными значениями, выдать массив на экран
1.2. Найти среднее значение
положительных элементов и количество отрицательных элементов
1.3. Все элементы меньше 5, уменьшить на минимальный
элемент массива
2. Двумерные массивы:
Составить программу, выполняющую следующие функции:
2.1. Дан двумерный массив вещественных чисел. Заполнить
массив случайными числами, выдать на экран в виде матрицы
2.2. В массиве найти минимальный элемент и прибавить
его к элементам первого столбца
2.3. В массиве найти количество
отрицательных элементов в нечетных столбцах и среднее значение элементов в
четных столбцах
Одномерные массивы
//подключаем
заголовочные файлы
#include <iostream.h>
#include <stdlib.h>
int main()
{
//подключаем русский язык
system("chcp 1251>nul");
//описываем динамический массив
int *mas;
//описываем начало и конец отрезка
формирования массива, сумму массива
float a,b, sum;
//описываем переменные
int
n,i,min,kol1,kol2;
//вводим концы отрезка
cout<<"Введите
концы отрезка: ";
cin>>a>>b;
//вводим размер массива
cout<<"Введите
размер массива: ";
cin>>n;
//выделяем
память для массива размера n
mas=new int[n];
cout<<"Исходный массив:\n";
//обнуляем базы для генерирования разных
случайных чисел
srand(time(0));
//заполняем массив и выводим его на экран
for (i=0; i<=n-1; i++)
{
mas[i]=(b-a)*rand()/32767+a;
cout<<"mas["<<i+1<<"] = "<<mas[i]<<"\n";
}
//находим среднее положительных элементов
массива
//и количество отрицательных элементов
массива
for (sum=0, kol1=0,
kol2=0, i=0; i<=n-1; i++)
if (mas[i]>=0) //если элемент
положительный
{
sum+=mas[i]; //считаем сумму положительных элементов
kol1++; //наращиваем
количество положительных элементов
}
else //иначе, если
элемент отрицательный, наращиваем количество отрицательных элементов
kol2++;
//выводим найденные значения на экран
cout<<"Среднее
положительных элементов = "<<sum/kol1<<"\n";
cout<<"Количество
отрицательных элементов = "<<kol2<<"\n";
//находим минимальное значение массива
for (min=mas[0], i=0; i<=n-1; i++)
if (mas[i]<min)
min=mas[i];
//выводим найденное значение на экран
cout<<"Минимальный
элемент = "<<min<<"\n";
//элементы, меньшие 5, уменьшаем на min
for (i=0; i<=n-1; i++)
if (mas[i]<5)
mas[i]=mas[i]-min;
//выводим полученный после уменьшения
массив
cout<<"Массив
после уменьшения на min:\n";
for (i=0; i<=n-1; i++)
cout<<"mas["<<i+1<<"] = "<<mas[i]<<"\n";
//удаляем массив из памяти
delete[] mas;
//делаем паузу для просмотра
system("pause");
//завершаем работу программы
return 0;
}
Двумерные массивы
//подключаем заголовочные файлы
#include <iostream.h>
#include
<stdlib.h>
int main()
{
//подключаем русский язык
system("chcp 1251>nul");
//описываем динамический массив
float **mas;
//описываем переменные
float a,b,min,sum;
int n,m,i,j,kol1,kol2;
//вводим концы отрезков
cout<<"Введите концы отрезка:
";
cin>>a>>b;
//вводим размер массива
cout<<"Введите количество строк и столбцов
массива: ";
cin>>n>>m;
//выделяем память под динамический массив
mas=new float
*[n];
for (i=0;i<=n-1;i++)
mas[i]=new float [m];
//обнуляем базы для генерирования разных случайных чисел
srand(time(0));
//формируем массив и выводим на экран
cout<<"Исходный массив:\n";
cout.precision(2);
for (i=0; i<=n-1; i++)
{
for (j=0;
j<=m-1; j++)
{
mas[i][j]=(b-a)*rand()/32767+a;
cout.width(6);
cout<<mas[i][j]<<" ";
}
cout<<"\n";
}
//находим минимальный элемент в массиве
for (min=mas[0][0], i=0; i<=n-1; i++)
for (j=0;
j<=m-1; j++)
if (mas[i][j]<min)
min=mas[i][j];
cout<<"Минимальный элемент равен: "<<min<<"\n";
//прибавляем min
к первому столбцу массива
for (i=0; i<=n-1;
i++)
mas[i][0]+=min;
//выводим полученный массив на экран
cout<<"Массив после прибавления min к первому столбцу:\n";
cout.precision(2);
for (i=0; i<=n-1; i++)
{
for (j=0;
j<=m-1; j++)
{
cout.width(6);
cout<<mas[i][j]<<" ";
}
cout<<"\n";
}
//находим среднее в четных столбцах и
//количество отрицательных элементов в
нечетных столбцах
for (sum=0,
kol1=0, kol2=0, i=0; i<=n-1;
i++)
for (j=0; j<=m-1; j++)
if (j%2!=0) //если остаток от деления на 2 не равен нулю,
т.е. столбец четный
{
sum+=mas[i][j];
kol1++;
}
else //иначе,
если остаток от деления на 2 равен нулю, т.е. столбец нечетный
if (mas[i][j]<0) //если элемент
отрицательный
kol2++;
//выводим найденные значения на экран
cout<<"Количество отрицательных элементов в
нечетных столбцах = "<<kol2<<"\n";
cout<<"Среднее значение элементов в четных
столбцах = "<<sum/kol1;
//удаляем массив из памяти
for (i=0;i<=n-1;i++)
delete[]
mas[i];
delete[] mas;
//делаем паузу для просмотра
system("pause");
//завершаем
работу программы
return 0;
}
Решить самостоятельно:
1. Одномерные массивы:
1.1. Сформировать динамический одномерный массив действительных чисел.
Массив заполнить случайными числами на отрезке [a, b]. Концы отрезков и размер массива ввести с клавиатуры.
1.2. Определить, сколько элементов массива находятся в диапазоне [c,d].
1.3. Сформировать новый массив из положительных элементов исходного
массива.
1.4. В новом массиве из всех четных элементов вычесть 3.
2. Двумерные массивы:
2.1. Сформировать динамический двумерный массив целых чисел. Массив
заполнить случайными числами на отрезке [a, b]. Концы отрезков и размер массива ввести с клавиатуры.
2.2. Заменить 1 строку массива значением max,
последний столбец – значением min.
2.3. Нечетные элементы 1 и 3 строк записать в одномерный массив R.