Программирование на языке Си/§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]);                
    }
}

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

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

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

Программа 4.2Править

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

 
#include <stdio.h>  
#define N 10           
int main()                     
{   int i;
    int mas[N];
    printf("введите N чисел");
    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.

Домашнее заданиеПравить

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