Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные_работы_1-7.doc
Скачиваний:
25
Добавлен:
16.11.2019
Размер:
2.11 Mб
Скачать

Содержание отчета

Отчет выполняется по выбору преподавателя либо в редакторе Word, либо в черновом варианте в лекционной тетради. Отчет должен содержать:

  1. Листинг программы на языке Си, решающей задачи в соответствии с вариантом (номером компьютера) задания;

  2. Результаты тестирования программы.

Контрольные вопросы к лабораторной работе №4

  1. Может ли массив содержать переменные разного типа, например, целого (int) и целого типа без знака (unsigned int) ?

  2. Запишите цикл ввода с клавиатуры массива A[7].

  3. Почему программа сортировки массива называтся пузырьковой ?

  4. Модифицируйте алгоритм пузырьковой сортировки так чтобы, упорядочение было по убыванию, а перемещение элемента производилось в начало массива.

ЛАБОРАТОРНАЯ РАБОТА №5

многомерные массивы

КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

1Многомерные массивы

Многомерные массивы задаются указанием каждого измерения в квадратных скобках, например, оператор

int matr [6][8];

задает описание двумерного массива из 6 строк и 8 столбцов. Массив состоит из 48 элементов. В памяти такой массив располагается в последовательных ячейках построчно.

0

0 Строка

1 Строка

5 Строка

7 0 7 0 7 – смещение от начала строки

0 7 8 15 40 47 – смещение от начала массива

Трехмерный массив будет описан как:

double mass[4][3][2];

Многомерные массивы размещаются так, что при переходе к следующему элементу быстрее всего изменяется последний индекс.

Для доступа к элементу многомерного массива указываются все его индексы, например,

matr[2][3]=4;

элементу матрицы matr2,3 присвоено значение 4;

x= matr[2][3];

переменной x присвоено значение элемента матрицы matr2,3.

При инициализации многомерного массива он представляется как массив из массивов, при этом каждый массив заключается в свои фигурные скобки (в этом случае величину первой размерности при описании можно не указывать),

int mass2 [][2]={ {1, 1}, {0, 2}, {1, 0} };

В этом примере инициализирован массив матрицы:

Можно задать общий список элементов в том порядке, в котором элементы располагаются в памяти (тогда все размерности указываются):

int mass2 [3][2]={1, 1, 0, 2, 1, 0};

Обнулить весь массив можно так:

int mass2 [3][2]={0};

2Ввод и вывод многомерных массивов

В программе осуществляется ввод/вывод массива massiv типа int, состоящего из трех строк и двух столбцов. При вводе массива во внешнем цикле изменяются строки, а во внутреннем – столбцы. В результате массив вводится по строкам. Вывод массива организован так же. Для удобного чтения, перед выводом каждой строки осуществляется перевод строки оператором cout<<”\n” и вставляются пробелы между элементами с помощью оператора cout<<' '.

int i,j,massiv[3][2]; //описание массива

cout<<RUS("Введите massiv[3][2]\n");

for(i=0;i<3;i++) //ввод массива

for(j=0;j<2;j++) cin>>massiv[i][j];

cout<<"massiv[3][2]\n";

for(i=0;i<3;i++) //вывод массива

{cout<<"\n"; for(j=0;j<2;j++) cout<<' '<<massiv[i][j];}

Такой вывод, однако, недостаточно хорошо выравнивает элементы на экране. Функция cout имеет дополнительные средства, которые позволяют сделать вывод более точным. Для этого задаются поля структуры cout и задается формат выводимых данных.

int i,j;

float massiv[3][2]; //описание массива

cout<<RUS("Введите massiv[3][2]\n");

for(i=0;i<3;i++) //ввод массива

for(j=0;j<2;j++) cin>>massiv[i][j];

cout<<"massiv[3][2]\n\n";

cout<<fixed;

for(i=0;i<3;i++) //вывод массива

{

for(j=0;j<2;j++)

{cout.width(10); cout.precision(3); cout<<massiv[i][j];}

cout<<"\n";

}

Строка cout.width(10); задает число символов полей вывода. После нее каждый элемент массива, не зависимо от значения, будет занимать ровно 10 символов (т.е. число символов вывода задается в круглых скобках).

Для данных различных типов может быть задан формат вывода, например, для вещественных чисел задается число символов после запятой:

cout.precision(3);

и тип формата:

cout<<fixed;//вывод последующих элементов в десятичном формате;

cout<< scientific;//вывод последующих элементов в экспоненциальном формате.

Полный перечень настроек приводится в приложении I I.