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 элементов. Найти сумму элементов ниже главной диагонали.

 

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

83465. Види визнання 36.34 KB
  Визнання держави має місце у випадках появи нової незалежної держави революційних та інших соціальних перетворень територіальних змін об’єднання та розділу держав і т. Основним критерієм визнання держави є її незалежність та самостійність у реалізації ефективної та легітимної державної влади що означає законність її встановлення та підтримку з боку населення встановленого режиму. Визнання уряду означає визнання його здатності здійснювати ефективну державну владу в країні та представляти її на міжнародній арені.
83466. Визнання держав 34.95 KB
  В міжнародному праві існують дві теорії визнання держав конститутивна і декларативна. Конститутивна теорія: політичний акт визнання є попередньою умовою існування юридичних прав нової держави. Саме акт визнання іншими державами створює нову державу породжує і забезпечує її міжнародну правосуб’єктність. Визнання нової держави яка додержує умов державності має бути правовим обов’язком.
83467. Форми визнання 36.2 KB
  Найбільш поширеним є визнання dejure яке є офіційним повним та остаточним. Воно передбачає встановлення між суб’єктами міжнародного права міжнародних відносин у повному обсязі та супроводжується як правило заявою про офіційне визнання та встановленням дипломатичних відносин. Визнання деюре носить безумовний характер та як правило не може буди відкликане.
83468. Визнання урядів 35.44 KB
  Значення і правові наслідки визнання нового уряду відрізняються від визнання нової держави. Визнання уряду надає йому можливість репрезентувати державу в міжнародних відносинах. Питання визнання уряду виникає лише в тому випадку коли уряд здобуває владу іншим аніж визначено в національному законодавстві шляхом. В міжнародному праві існують такі доктрини щодо визнання урядів: 1.
83469. Доктрини визнання урядів 35.14 KB
  Історії міжнародного права відомі спеціальні доктрини про визнання урядів, названі іменами міністрів закордонних справ Еквадору Карлоса Тобара (доктрина Тобара) і Мексики Хенаро Естради (доктрина Естради), що сформувалися на початку XX століття в практиці держав американського континенту.
83471. Інститут правонаступництва держав в міжнародному праві. Джерела міжнародного правонаступництва 35.98 KB
  Джерела міжнародного правонаступництва Для стабільності міжнародних відносин важливе значення має послідовне виконання суб’єктами міжнародного права укладених ними міжнародних договорів їх міжнародних зобов’язань щодо території власності членства у міжнародних організаціях тощо. Інститут правонаступництва у міжнародному праві є міжгалузевим інститутом: його норми містяться в праві міжнародних договорів праві міжнародних організацій міжнародному економічному праві та ін. Тривалий час основу інституту правонаступництва складали звичаєві...
83472. Поняття правонаступництва в міжнародному праві. Види і форми правонаступництва. Підстави правонаступництва 37.07 KB
  Види і форми правонаступництва. Підстави правонаступництва. Таким чином правонаступництво являє собою правовідносини у яких беруть участь дві сторони: державапопередниця яка була змінена іншою державою в процесі правонаступництва; державаспадкоємниця яка замінила іншу державу в процесі правонаступництва.
83473. Міжнародне правонаступництво держав щодо міжнародних договорів 38.6 KB
  Відносно усних договорів і договорів між державами й іншими суб’єктами міжнародного права діють звичаєві норми міжнародного права. встановлює наступні правила правонаступництва щодо міжнародних договорів: а у разі створення в результаті деколонізації нової незалежної держави діє принцип tbul rs чистої дошки: нова держава не зв’язана договорами укладеними колишніми державамиметрополіями і не зобов’язана зберігати чинність будьякого договору або ставати його учасницею в силу виключно того факту...