
Описание массивов
Описание массива имеет следующий вид
<тип элементов> <имя массива>[<кол-во элементов>];
Например,
float x[5],y[10];
int a[7];
Доступ к элементам массива осуществляется через имя массива и индекс элемента <имя массива>[<индекс элемента>], индексом элемента может быть константа или выражение целого типа в диапазоне от 0 до <кол-во элементов> - 1. Например, x[0], a[5], y[2*i-1].
Ввод одномерных массивов.
Одномерные массивы нельзя вводить и выводить с помощью одного оператора ввода – вывода, для этого необходимо организовать цикл.
Рассмотрим два сценария ввода одномерных массивов;
1) 1 сценарий – ввод одномерного массива в одной строке
#include <stdio.h>
#include <conio.h>
void main()
{float x[5];
int i;
clrscr();
printf(“введите через пробел 5 элементов массива x\n”);
for (i=0; i<5; i++)
scanf(“%f”,&x[i]);
getch();
}
2) 2 сценарий – ввод элементов по одному в строке с приглашением к вводу элемента;
#include <stdio.h>
#include <conio.h>
void main()
{ float x[5];
clrscr();
printf(“введите массив x]n”);
for (i=0; i<5; i++)
{ printf(“x[%d]=”,i);
scanf(“%f”,&x[i]);
}
getch();
}
Вывод одномерных массивов.
Рассмотрим два сценария вывода одномерных массивов;
1) 1 сценарий – вывод одномерного массива в одной строке
#include <stdio.h>
#include <conio.h>
void main()
{float x[5];
int i;
clrscr();
printf(“Массив x\n”);
for (i=0; i<5; i++)
printf(“%f ”,&x[i]);
printf(“\n”);
getch();
}
2) 2 сценарий – вывод элементов по одному в строке с приглашением к вводу элемента;
#include <stdio.h>
#include <conio.h>
void main()
{ float x[5];
int i;
clrscr();
for (i=0; i<5; i++)
printf(“x[%d]=%f\n”,i,x[i]);
getch();
}
Пример
Ввести с клавитуры 7 элементов массива a, элементы массива b вычислить по формуле b[i]=2*a[i]. Ввод и вывод организовать по 1-му сценарию.
#include <stdio.h>
#include <conio.h>
void main()
{float a[7],b[7];
int i;
clrscr();
printf(“введите через пробел 7 элементов массива a\n”);
for (i=0; i<7; i++)
scanf(“%f”,&a[i]);
for (i=0; i<7; i++)
b[i]=2*a[i];
printf(“массив b\n”);
for (i=0; i<7; i++)
printf(“%f “,b[i]);
printf(“\n”);
getch();
}
Способы задания констант.
При работе с массивами удобно количество элементов в массиве задавать с помощью констант. В языке c++ константы можно задавать двумя способами:
- с помощью директивы препроцессора define
# define <имя константы> <значение константы>
Например,
# define N 10
этой директивой определяется, что запись N (константа N) в программе всегда будет заменяться записью 10 (значение константы N), причем эту замену будет осуществлять препроцессор;
с помощью определения
const <тип> <имя константы>= <значение>;
Например,
const int M=5;
Здесь M является объектом программы, под него отводится оперативная память, которая всегда будет содержать значение 5. Попытка изменить это значение вызовет сообщение об ошибке.
Пример
Описать массивы d из 10 элементов и c из 5 элементов с помощью констант; Ввести с клавиатуры эти массивы и найти сумму всех элементов массива d и произведение всех элементов массива c
#include <stdio.h>
#include <conio.h>
#define N 10
const int M=5;
void main()
{int d[N],i;
float c[M], s=0, p=1;
clrscr();
for (i=0; i<N; i++)
{printf(“d[%d]=”,i);
scanf(“%d”,&d[i]);
}
for (i=0; i<M; i++)
{printf(“c[%d]=”,i);
scanf(“%f”,&c[i]);
}
for (i=0; i<N; i++)
s=s+d[i];
for (i=0; i<M; i++)
p=p*c[i];
printf(“s=%f p=%f\n”,s,p);
getch();
}
Инициализация одномерных массивов.
Одномерные массивы можно проинициализировать (задать начальные значения элементам) при их определении. При этом в фигурных скобках через запятую перечисляются необходимые значения, например,
float x[5]={-0.7,123,6.89,-34,6.7};
в этом определении x[0] получит значение -0.7; x[1] – значение 123, x[2] – значение 6.89; x[3] – значение -34; x[4] – значение 6.7
Пример1.
Ввести массив. Найти отдельно среднее арифметическое положительных элементов и среднее арифметическое отрицательных элементов.
#include <stdio.h>
#include <conio.h>
void main()
{ float a[10], sp, so, srp,sro;
int i, kp,ko;
clrscr();
printf(“введите 10 элементов массива a\n”);
for (i=0; i<10; i++)
scanf(“%f”,&a[i]);
sp=0;
kp=0;
so=0;
ko=0;
for (i=0; i<10; i++)
if (a[i]>0)
{sp=sp+a[i];
kp=kp+1;
}
else if (a[i]<0)
{so=so+a[i];
ko=ko+1;
}
if (kp>0)
srp=sp/k;
esle srp=0;
if (ko>0)
sro=so/ko;
else sro=0;
printf(“srp=%f sro=%f\n”, srp, sro);
getch();
}
Двумерные массивы (матрицы).
Двумерный массив (матрица) представляет прямоугольную таблицу элементов одного типа. Например, матрица A из 3 строк и 5 столбцов
-0.6 9.7 3 6 0
A = 8.7 -12 0 3.14 10
23 45 -18 19 0.13
Матрица характеризуется:
- именем (в данном случае - A);
- количеством строк (в данном случае - 3);
- количеством столбцов (в данном случае - 5);
- тип элементов (в данном случае - float).