КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
Многомерные массивы
Многомерные массивы задаются указанием каждого измерения в квадратных скобках, например, оператор
int matr [6][8];
задает описание двумерного массива из 6 строк и 8 столбцов. Массив состоит из 48 элементов. В памяти такой массив располагается в последовательных ячейках построчно.
|
|
|
…
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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!