Программирование на языке Си/§5

Массивом называется матрица и её частные случаи: вектор-столбец и вектор-строка.
Массив определяется по следующем синтаксису:
*тип имя [размерность]*
Размерность может быть только целочисленным - это количество элементов массива.
Одномерный массив - это матрица столбец или строка. Например: (1 2 3 4). Запись одномерного массива: *имя[№ элемента матрицы]*.
Двухмерный массив - это матрица размерности ». . Запись двухмерного массива: *имя[№ элемента m][№ элемента N]*.
Многомерные массивы - это **матрица**, **элементами** которой являются** матрицы**. Так в массиве mas[2][3][4] элементами являются 2 двухмерных массива размерности 3X4.

## Программа 4.1

Напишем простейшую программу с использованием массива

```
#include <stdio.h>
int main()
{ int i;
int mas[10]={0,1,2,3,4,5,6,7,8,9}; // производим запись в массив размерностью 10, чисел 0,1,2,3,4,5,6,7,8,9.
for(i=0;i<10;i++) // выполняем цикл for, до тех пор пока не распечатаем элементы массива
{
printf("элемент массива № %d : %d \n", i,mas[i]);
}
}
```

Распишем пошагово работу программы:

- шаг. записываем в матрицу значения матрицы строки: 0,1,2,3,4,5,6,7,8,9.
- шаг. i=0
- шаг. i<0 выполняем цикл
- шаг. i==1
- шаг. элемент массива № 0: 0
- шаг. i==2
- шаг. элемент массива № 1: 1
- шаг. i==3
- шаг. элемент массива № 2: 2

и т.д. пока i!=10.

## Программа 4.2

Усложним предыдущую задачу таким образом, чтобы элементы массива вводились нами вручную. И сделаем одно нововведение, а именно директиву препроцессора define. define позволяет связать идентификатор с лексемой (возможно, что пустой) или последовательностью лексем (строка символов является лексемой, заключённой в двойные кавычки), которую называют строкой замещения или замещающей частью директивы define.

```
#include <stdio.h>
#define N 10
int main()
{ int i;
int mas[N];
printf("введите 5 чисел");
for (i=0;i<5;i++)
{
scanf("%d",&mas[i]); /
}
for(i=0;i<5;i++)
{
printf("Элемент массива № %d : %d \n", i,mas[i]);
}
getch();
}
```

Давайте подробно разберём каким образов в данной программе происходит ввод значений в массив, в данной программе мы заполняем одномерный массив матрицей-строкой. каждое значение i, в массиве mas[i], соответствует номеру ячейки в матрице. Так, если в массиве хранятся данные 2, 5, 7, 6, 5, 8, 5, 5... ,то: mas[0]=2, mas[1]=5,..., mas[5]=8... и т.д.

## Программа 4.3

Усложним программу, вместо одномерного массива будим использовать двухмерный массив и распечатку будим проводит в виде матрицы.

```
#include <stdio.h>
#include <stdlib.h>
#define N 10
int main()
{ int i, j;
int mas[N][N];
printf("Введите матрицу размерностью 2 на 2\n");
for (i=0;i<2;i++)
for (j=0;j<2;j++)
{
scanf("%d",&mas[i][j]);
}
for(i=0;i<2;i++)
{
for (j=0;j<2;j++)
{
printf("%d ",mas[i][j]);
}
printf("\n");
}
getch();
}
```

Обратите внимание как мы забиваем матрицу значениями:

```
for(i=0;i<n;i++)
for(j=0;j<m;j++)
```

здесь мы вбиваем значения в матрицу размерности m на n построчно. Где j - это столбец, а i - это строка. Для вбивания значений в многомерный массив используются этот же синтаксис. Для трёхмерного массива:

```
for(i=0;i<n;i++)
for(j=0;j<m;j++)
for(k=0;k<o;k++)
```

В каждой ячейке i, мы храним двухмерную матрицу размерностью m на о. Четырёх мерного массива:

```
for(i=0;i<n;i++)
for(j=0;j<m;j++)
for(k=0;k<o;k++)
for(l=0;l<p;l++)
```

В каждой ячейке i, мы храним трехмерную матрицу размерностью m на о на l. Массив можно забивать и посредством while, так для двухмерного массива:

```
i=o;
while(i<n)
{i++; j=0;
while (j<0)
{j++
scanf("%d",&mas[i][j]);
}
}
```

## Программа 4.4

Напишем программу поиска наименьшего элемента массива:

```
#include <stdio.h>
#include <stdlib.h>
#define N 100
int main()
{
int mas[N],min,i, k;
printf("введите количество элементов массива\n");
scanf("%i",&k); //вводим количество элементов массива
printf("введите элементы массива\n");
/*Вбиваем в массив последовательность чисел*/
for(i=0;i<k;i++) // i=0,до тех пор пока i меньше количества элементов массива выполняем: i++
scanf("%i",&mas[i]); // вбиваем в массив числа последовательности по одному до тех пор пока выполняется условие i<k
min=0;
/*Поиск минимального значения в массиве*/
for(i=0;i<k;i++) // i=0,до тех пор пока i меньше количества элементов массива выполняем: i++
if(mas[i]<mas[min]) // если текущий элемент массива меньше минимального, то:
min=i; // присваиваем номер текущего элемента min
/* вывод результата*/
printf("min=%i",mas[min]);
getch();
return 0;
}
```

## Практикум

Выполните все приведённые выше программы. Напишите программу 4.3 через while. Пошагово просмотрите программу 4.4.

## Домашнее задание

- Напишите программу подсчитывающую среднеарифметическое значение элементов массива.
- Напишите программу поиска максимального элемента массива.