
- •Глава 3 Одномерные массивы
- •Нахождение суммы элементов массива
- •Суммирование элементов массива с учетом условия
- •Нахождение среднего арифметического
- •Нахождение среднего арифметического при условии
- •Поиск максимального элемента в массиве
- •Поиск индексов в массиве
- •Проверка упорядоченности массива
- •Обмен значений массива
- •Суммирование соседних элементов массива
- •Подсчет соседних элементов по условию
- •Перенос модулей значений в другой массив
- •Подсчет количества максимальных элементов
- •Изменение значений элементов массива с заданными свойствами
- •Нахождение индексов элементов с заданными свойствами
- •Удаление из массива определенного элемента
- •Циклическое перемещение элементов массива
- •Заполнение массива случайными числами
- •Нахождение суммы группы элементов массива
Одномерные
массивы
Глава 3 Одномерные массивы
Во многих практических ситуациях приходится работать с большим объемом данных. Для этого удобно использовать массивы, которые являются достаточно простой в плане программирования структурой данных. Использование массива приводит к выделению в памяти набора ячеек под определенным именем. Формально определение массиватаково: совокупность однотипных данных, хранящихся в последовательных ячейках памяти и имеющих общее имя. Ячейки называютсяэлементами массива. Все элементы массива пронумерованы по порядку, а номер называетсяиндексомэлемента массива.
Важно отметить, что все элементы массива имеют один и тот же тип данных. Для обращения к конкретному элементу массива необходимо указать имя массива и в квадратных скобках индекс элемента.
Массивы могут быть одномернымиимногомерными. В этой главе мы рассмотрим технологию работы с одномерными массивами. В языке используется следующее описание одномерного массива:
Тип_элементов Имя_массива[размерность_массива];
Здесь Тип элементов— это тип данных, который имеет каждый элемент массива. Пример описания массива:
float a[5]; .
Элементы массива нумеруются с нуля. В дальнейшем часто мы нулевой элемент массива использовать не будем.
Данная глава построена на разнообразных практических примерах, рассмотрение которых позволит вам сформировать навыки практической работы с одномерными массивами.
Нахождение суммы элементов массива
Исходная ситуация традиционна для работы с массивами: дан массив A[J], где индексJпринимает значения от 1 доN. Будем считать, что элементы массива являются целыми числами (имеют типint). Сумма элементов массива вычисляется по следующей формуле:
. (3.1)
Алгоритм вычисления Sпо формуле (3.1) простой и программа, его реализующая, не требует пояснения с использованием блок-схемы. В листинге 3.1 приведена разработка, реализующая решение исходной задачи. Отметим, что для внесения начальной информации мы воспользовались датчиком случайных чисел — стандартной функциейrand. В программе мы обеспечиваем случайное заполнение элементов массива целыми числами от 0 до 99 (включая левую и правую границу интервала). В результате работы мы увидим на экране подсчитанную сумму.
Функция rand()выдает случайное целое число в интервале от0доRAND_MAX.
Листинг 3.1. Вычисление суммы значений элементов массива
#include <iostream>
using namespace std;
#include <conio.h>
#include <math.h>
#define N 10
#define NM 11
void main()
{
int A[NM];
int J,S;
for (J=1; J<= N; J++)
A[J]=rand()%100;
S=0;
for (J=1; J<= N; J++)
S= S + A[J];
cout <<"S="<<S;
_getch();
}
Суммирование элементов массива с учетом условия
Рассмотрим задачу суммирования не всех элементов массива, а только тех, которые удовлетворяют определенному условию. В качестве условия будем считать, что суммироваться должны только те элементы, значения которых кратны 3. В листинге 3.2 приведена необходимая программная разработка. Действия, которые в ней производятся, выглядят так:
заполнение элементов массива случайными значениями;
организация цикла по количеству элементов массива;
проверка условия кратности значения элемента массива 3, и если это условие выполняется, то производится добавление значения рассматриваемого элемента к общей сумме.
Аналогичным образом можно использовать и другие условия при суммировании элементов массива.
Листинг 3.2. Суммирование элементов массива при условии кратности 3
#include <iostream>
using namespace std;
#include <conio.h>
#include <math.h>
#define N 10
#define NM 11
void main()
{
int A[NM];
int J,Summa;
for (J=1; J<= N; J++)
{ A[J]=rand()%100;
cout <<"\n"<<A[J]; }
Summa=0;
for (J=1; J<= N; J++)
{
if (( A[J] % 3) == 0 )
Summa= Summa + A[J];
}
cout <<"\nSumma="<<Summa;
_getch();
}