Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы / Lab3 / ЯП_лаб_3.doc
Скачиваний:
2
Добавлен:
18.02.2023
Размер:
222.72 Кб
Скачать

Лабораторная работа № 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).

Соседние файлы в папке Lab3