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



 

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

 

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

int matr [6][8];

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

 

5 строка
1 строка
0 строка
0        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};

 

 

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

 

В программе осуществляется ввод/вывод массива 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.

 

Домашнее Задание

 

Изучите теоретические сведения текст программы по заданию на лабораторную работу. Программа записывается в «черновом» варианте в лекционной тетради. Комментарии должны составлять не менее 10% от текста. Студенты, не выполнившие домашнего задания, не допускаются к выполнению лабораторной работы.

 

Задание к лабораторной работе №5

 

Задание 1

Ввести с клавиатуры вещественную матрицу размерностью 5Í5. Определить:

1) сумму положительных элементов в четных строках;

2).номера столбцов, не содержащих отрицательных элементов.

Задание 2

Ввести с клавиатуры вещественную матрицу размерностью 5Í5. Определить:

1) сумму положительных элементов в нечетных строках;

2) количество строк, не содержащих ни одного нулевого элемента;

Задание 3

Ввести с клавиатуры вещественную матрицу размерностью 5Í5. Определить:

1) сумму положительных элементов в четных столбцах;

2) количество столбцов, не содержащих ни одного нулевого элемента;

Задание 4

Ввести с клавиатуры вещественную матрицу размерностью 5Í5. Определить:

1) сумму положительных элементов в нечетных столбцах;

2) количество столбцов, содержащих хотя бы один нулевой элемент;

Задание 5

Ввести с клавиатуры вещественную матрицу размерностью 5Í5. Определить:

1) сумму отрицательных элементов в четных строках;

2) произведение элементов в тех строках, которые не содержат отрицательных элементов.

Задание 6

Ввести с клавиатуры вещественную матрицу размерностью 5Í5. Определить:

1) сумму отрицательных элементов в нечетных строках;

2) сумму элементов в тех столбцах, которые не содержат отрицательных элементов.

Задание 7

Ввести с клавиатуры вещественную матрицу размерностью 5Í5. Определить:

1) сумму отрицательных элементов в четных столбцах;

2) сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент.

Задание 8

Ввести с клавиатуры вещественную матрицу размерностью 5Í5. Определить:

1) сумму отрицательных элементов в нечетных столбцах;

2) сумму элементов в тех столбцах, которые содержат хотя бы один отрицательный элемент.

Задание 9

Ввести с клавиатуры вещественную матрицу размерностью 5Í5. Определить:

1) максимальный элемент на главной диагонали;

2) сумму модулей элементов, расположенных выше главной диагонали.

Задание 10

Ввести с клавиатуры вещественную матрицу размерностью 5Í5. Определить:

1) минимальный элемент на главной диагонали;

2) количество строк, среднее арифметическое элементов которых меньше заданной величины, введенной с клавиатуры.

Задание 11

Ввести с клавиатуры вещественную матрицу размерностью 5Í5. Определить:

1) максимальный элемент среди элементов, расположенных выше главной диагонали;

2) номера строк, содержащих хотя бы один нулевой элемент.

Задание 12

Ввести с клавиатуры вещественную матрицу размерностью 5Í5. Определить:

1) максимальный элемент среди элементов, расположенных ниже главной диагонали;

2) номера столбцов, сумма элементов в которых равна нулю.

Задание 13

Ввести с клавиатуры вещественную матрицу размерностью 5Í5. Определить:

1) минимальный элемент в матрице и указать строку и столбец, где он находится;

2) количество строк, содержащих хотя бы один нулевой элемент.

Задание 14

Ввести с клавиатуры вещественную матрицу размерностью 5Í5. Определить:

1) максимальный элемент в матрице и указать строку и столбец, где он находится;

2) количество отрицательных элементов в тех строках, которые содержат хотя бы один нулевой элемент.

Задание 15

Ввести с клавиатуры вещественную матрицу размерностью 5Í5. Определить:

1) сроку и столбец, где находится элемент, значение которого равно значению, введенному с клавиатуры;

2) сумму элементов в тех строках, которые не содержат отрицательных элементов.

 

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

 

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

 

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

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

 

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

 

1. Изобразите структуру двумерного массива.

2. Как инициализировать двумерный массив ? Как упростить инициализацию, если часть элементов массива нулевые ?

3. Запишите цикл ввода с клавиатуры массива B[3][4].

4. Что означают операторы cout.width(10); cout.precision(3); cout<<fixed; ?

 


 

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

 


Дата добавления: 2018-11-24; просмотров: 271; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!