Лабораторная работа № 3
Тема: Программирование с использованием массивов
Цель: Научиться работать с векторными данными языка «С»: массивами. Изучить правила объявления массивов и обращения к их элементам. Освоить основные алгоритмы обработки массивов.
Краткая теория
Массив – сложный тип данных языка программирования представляющий собой упорядоченное множество элементов одного типа и имеющий одно общее имя.
Объявление массивов на языке «С»:
тип имя[размер1][размер2]…[размерN];
На практике наиболее часто используются одномерные (вектора) и двумерные (матрицы) массивы.
Объявление одномерных массивов (векторов):
Без инициализации:
тип имя[размер];
С инициализацией:
тип имя[размер]={значение1,значение2, … ,значениеN};
С инициализацией, но без указания размера:
тип имя[]={значение1,значение2, … ,значениеN};
Примеры:
int a[10]; //Без инициализации
int b[5] = {0,1,2,3,4}; //С инициализацией
int c[10] = {0}; //С заполнением значением ноль
int d[] = {0,1,2,3,4}; //Без указания размера, но с
//инициализацией
Обращение к элементу массива осуществляется по его индексу. Индексация в языке «С» начинается с ноля! Для индексации можно использовать только целочисленные переменные, т.е. переменные типов int и char, или производных от них.
Примеры обращения:
a[0]=10; a[1]=a[0]+10; b[1]<<=3; …
Ввод и вывод массивов осуществляется поэлементно в цикле, используя стандартные функции ввода и вывода:
for(int i=0;i<размер;i++) scanf(“%тип”,&имя[i]);
for(int i=0;i<размер;i++) printf(“%тип\t”,имя[i]);
Объявление двумерных массивов (матриц):
Без инициализации:
тип имя[строки][столбцы];
С инициализацией:
тип имя[строки][столбцы] = {{зн00…зн0M},…,{знN0…знNM}};
С инициализацией, но без указания размера:
тип имя[][столбцы] = {{зн00…зн0M},…,{знN0…знNM}};
Примеры:
double a[10][10]; //Без инициализации
double b[2][2] = {{0.0,1.0},{2.0,3.0}}; //С инициализацией
double c[][2]={{0.0,1.0},{2.0,3.0}}; //С инициализацией, но //без указания //количества строк
Обращение к элементам матрицы:
a[0][0] = 1; a[0][1]=2; a[0][2] = a[0][1]+a[0][0];
Ввод и вывод матриц осуществляется поэлементно в двух вложенных циклах, используя стандартные функции ввода и вывода:
for(int i=0;i<строки;i++) for(int j=0;j<столбцы;j++)
scanf(“%тип”,&имя[i][j]);
for(int i=0;i<строки;i++){
for(int j=0;j<столбцы;j++) printf(“%тип\t”,имя[i][j]);
printf(“\n”);
}
В стандарте С99 была введена возможность создания динамических массивов: когда в качестве размера указывается значение переменной:
int n; //Переменная для хранения размера
printf(“Введите размер: ”); //Приглашение к вводу значения
scanf(“%d”,&n); //Ввод значения
int a[n]; //Создание массива
Ход работы
В данной лабораторной работе обязательными являются первые три задания, четвертое задание выполняется по желанию. При выполнении заданий необходимо реализовать дружественный интерфейс: при вводе (выводе) данных выводится приглашение, которое содержит описание вводимой (выводимой) величины (назначение и тип).
В данной лабораторной работе предполагается, что все значения могут вводиться некорректно. Поэтому необходимо осуществлять проверку на корректность ввода с использованием операторов управления.
Все массивы создаются динамически (согласно стандарту C99).