18535

Двумерные массивы (матрицы)

Лабораторная работа

Информатика, кибернетика и программирование

Лабораторная работа № 5. Двумерные массивы матрицы Массивы в С могут быть не только одномерными т.е. когда данные визуально выстроены в одну линию. Массивы также могут быть и двумерными трехмерными и так далее. С компиляторы поддерживают как минимум 12ти мерные масси...

Русский

2013-07-08

29.09 KB

8 чел.

Лабораторная работа № 5.

Двумерные массивы (матрицы)

Массивы в С могут быть не только одномерными, т.е. когда данные визуально выстроены в одну линию. Массивы также могут быть и двумерными, трехмерными и так далее. С++ компиляторы поддерживают как минимум 12-ти мерные массивы!!! Естественно, что такими большими массивами на практике никто не пользуется, т.к. человеку сложно их визуально представить у себя в голове, не то что написать программу, которая оперирует таким сложными массивами. На практике редко применяют массивы, более трехмерного. Одномерный – это строка, двумерный – матрица (таблица), трехмерный – куб, а вот дальше уже сложно, поэтому дальше, обычно, никто и не идет...

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

Фактически двумерный массив — это одномерный массив одномерных массивов. Структура двумерного массива, с именем a, размером m на n показана ниже:

где, m – количество строк двумерного массива;

n – количество столбцов двумерного массива;

m * n – количество элементов массива.

Вот пример объявления и инициализации двумерного массива, состоящего из трех строк и пяти столбцов.

int aMatrix[3][5] = {{3, 5, 5, 7, 8},

{4, 1, 1, 2, 9},

{3, 8, 8, 9, 7}};

Двумерный массив имеет два индекса. Можно и так записать, как показано ниже. Разницы для компилятора не будет никакой. Разве лишь разница будет в визуальном восприятии для человека:

int aMatrix[3][5] = {{3, 5, 5, 7, 8}, {4, 1, 1, 2, 9}, {3, 8, 8, 9, 7}};

Либо вообще так, без указания фигурных скобок, которые логически разделяют строки друг от друга.

int aMatrix[3][5] = {3, 5, 5, 7, 8, 4, 1, 1, 2, 9, 3, 8, 8, 9, 7};

Последняя запись демонстрирует то, как на самом деле элементы массива размещаются в памяти компьютера.

Для доступа к элементам двумерного массива нужно, так же, как и для одномерного указать индекс. В данном случае нужно будет указывать два индекса. Например, чтобы перезаписать последний элемент второй строки, мы должны использовать такую запись

aMatrix[1][4] = 0;

В этом случае мы перезапишем значение 9 на 0.

Для прохода по двумерному массиву удобнее всего использовать два цикла for, вложенных друг в друга.

Пример программы:

Дана матрица размером n строк и m столбцов (0<n<=20, 0< m<=30). Найти сумму положительных элементов каждой строки.

#include <stdio.h>

#include <conio.h>

/* Сумма по строкам*/

#define NMAX 20

#define MMAX 30

main()

{float x;

int i,j;

float s;

int n,m;

puts("Введи n m"); scanf("%d%d",&n,&m);

puts ("Введи матрицу");

for (i=0;i<n; i++)

{s=0;

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

{scanf("%f", &x);

if (x>0) s=s+x;

}

printf ("\n Строка %d, s= %.2f",i,s);

}

getch();

return 0;

}

Пример результатов тестирования программы:

1

2

3

4

5

1

-9

0

1

-7

4

2

1

2

5

0

4

3

-1

2

-9

7

-1

4

-2

-3

-8

-9

-4

Результат:

Строка 1 сумма = 5

Строка 2 сумма = 12

Строка 3 сумма = 9

Строка 4 сумма = 0

Порядок выполнения работы.

1. Получить задание у преподавателя.

2. Составить программу на Си и подобрать тесты для проверки программы на ЭВМ.

3. Отладить программу на ЭВМ.

4. Оформить и сдать отчет по лабораторной работе.

Задания для самостоятельного выполнения

  1.  Дана матрица размером n x m. Вычислить сумму положительных элементов каждой строки и найти номер строки, в которой эта сумма максимальна.
  2.  Определить, является ли заданная целочисленная квадратная матрица магическим квадратом, то есть такой, что суммы всех элементов во всех строках и столбцах одинаковы.
  3.  Дана матрица размером n x m. Найти минимальный элемент в каждом столбце матрицы (из ненулевых) и разделить на него все элементы этого столбца.
  4.  Дана матрица размером n x m. Найти наибольший положительный и наименьший отрицательный элементы матрицы.
  5.  Элементы матрицы А(n x n) назовем седловой точкой, если он одновременно является наименьшим в своей строке и наибольшим в своем столбце или наоборот. Найти индексы всех седловых точек матрицы.
  6.  Дана матрица размером n x m. В каждой строке переставить местами наибольший и наименьший элементы матрицы.
  7.  Дана квадратная матрица размером n x n. Вычислить сумму элементов, расположенных над главной диагональю.
  8.  Дана квадратная матрица размером n x n. Найти наибольший элемент главной диагонали, и вывести всю строку, в которой он находится.
  9.  Дана квадратная матрица размером n x n. Найти строку с наибольшим количеством отрицательных элементов.
  10.  Дана квадратная матрица размером n x n. Найти сумму отрицательных элементов в каждой строке.
  11.  Дан двумерный массив n х m элементов, найти количество четных и нечетных чисел в массиве.
  12.  Дан двумерный массив n х m элементов. Определить, сколько раз встречается число 7 среди элементов массива.
  13.  Дан массив из n x m элементов. Определить, сколько элементов массива больше заданного числа.
  14.  Дан массив из n x m элементов. Найти индексы первого наименьшего элемента массива.
  15.  Дан квадратный массив из n x n элементов. Найти сумму элементов побочной диагонали.
  16.  Дан квадратный массив из n x n элементов. Найти сумму элементов ниже главной диагонали.

 

А также другие работы, которые могут Вас заинтересовать

7771. Аналіз статті. Дубовик С.Г. Мовний етикет у професійній культурі педагога 36 KB
  Аналіз статті. Дубовик С.Г. Мовний етикет у професійній культурі педагога Перебудова вищої школи передбачає виведення вищої освіти на світовий рівень, а тому розглядає багато проблем, серед яких важливе місце належить проблемі формування висококвалі...
7772. Аналіз статті: Трохимець О.І. Розвиток вищої освіти України в умовах глобалізації 16.58 KB
  Аналіз статті: Трохимець О.І.Розвиток вищої освіти України в умовах глобалізації Сучасний етап розвитку світової і вітчизняної економіки передбачає створення суспільства, що базується на знаннях, де соціальне й економічне благополуччя країни в...
7773. Загальні основи педагогіки вищої школи. організація педагогічного процесу та зміст освіти у вищій школі 533 KB
  Загальні основи педагогіки вищої школи. організація педагогічного процесу та зміст освіти у вищій школі Тема 1. Загальні основи педагогіки вищої школи. система вищої освіти в Україні і закордонні План вивчення теми: Предмет...
7774. Воспитание в Древнем мире. Спарта и Афины 30 KB
  Воспитание в Древнем мире. Спарта и Афины. Обучение и воспитание в Афинах. Утвердить законом тот факт, что ребенка обязаны обучать родители, в Афинах не догадались. Собственного говоря - этого и не требовалось. Общественное мнение, неписанные законы...
7775. Воспитание в Киевской Руси 31 KB
  Воспитание в Киевской Руси Хотелось бы пока остановиться на двух великих произведениях Древней Руси: летопись Повесть временных лет и Поучение Владимира Мономаха. Повесть временных лет определяет место славян и, в частности, русского народа, среди н...
7776. Воспитание в первобытном обществе. Педагогика древних славян 33.5 KB
  Воспитание в первобытном обществе. Педагогика древних славян Воспитание как особый вид  человеческой деятельности появилось в первобытном обществе около  40 - 35  тысяч лет назад. К этому периоду на Земле появляется разумный человек современног...
7777. Воспитание в период раннего феодализма 27.5 KB
  Воспитание в период раннего феодализма. В феодальном обществе господствующими сословиями были светские феодалы и духовенство, владевшие всей землей и эксплуатировавшие подвластных им крестьян. Идеологическим оплотом господствующих групп феодального ...
7778. Гуманистическая теория Песталоцци 36 KB
  Гуманистическая теория Песталоцци Это был народник в лучшем значении слова. Последовательнее всего Песталоцци изложил свои педагогические взгляды в книге: Как Гертруда учит своих детей. Метод обучения по Песталоцци был близок методу Жакото и был н...
7779. Локк Дж. Педагогические взгляды 32 KB
  Дж. Локк Педагогические взгляды Свои педагогические взгляды Локк изложил в книге Мысли о воспитании (1693). Из всех людей, с которыми мы встречаемся, девять десятых являются тем, что они есть - добрыми или злыми, полезными или нет - благо...