Лабораторная работа №6 Двумерные массивы C++ Бердикулов Фаррух Группа: 8-21 атпп проверил: Алимов О. И. Алмалык 2021



Download 120,07 Kb.
bet2/3
Sana10.07.2022
Hajmi120,07 Kb.
#768208
TuriЛабораторная работа
1   2   3
Bog'liq
Berdikulov Farrukh 6

Двумерные массивы в С++


До этого момента мы рассматривали одномерные массивы, которыми не всегда можно ограничиться. Допустим, необходимо обработать некоторые данные из таблицы. В таблице есть две характеристики: количество строк и количество столбцов. Также и в двумерном массиве, кроме количества элементов массива, есть такие характеристики как, количество строк и количество столбцов двумерного массива. То есть, визуально, двумерный массив — это обычная таблица, со строками и столбцами. Фактически двумерный массив — это одномерный массив одномерных массивов. Структура двумерного массива, с именем a, размером m на n показана ниже (см. Рисунок 4).

Рисунок 4 — Массивы в С++
где, m — количество строк двумерного массива;
n — количество столбцов двумерного массива;
m * n — количество элементов массива.

1
2

// синтаксис объявления двумерного массива
/*тип данных*/ /*имя массива*/[/*количество строк*/][/*количество столбцов*/];

В объявлении  двумерного массива, также как и в объявлении одномерного массива, первым делом, нужно указать:

  • тип данных;

  • имя массива.

После чего, в первых квадратных скобочках указывается количество строк двумерного массива, во вторых квадратных скобочках — количество столбцов двумерного массива. Двумерный массив визуально отличается от одномерного второй парой квадратных скобочек. Рассмотрим пример объявления двумерного массива. Допустим нам необходимо объявить двумерный массив, с количеством элементов, равным 15. В таком случае двумерный массив может иметь три строки и пять столбцов или пять строк и три столбца.

1
2

// пример объявление двумерного массива:
int a[5][3];

  • a — имя целочисленного массива

  • число в первых квадратных скобках указывает количество строк двумерного массива, в данном случае их 5;

  • число во вторых квадратных скобках указывает количество столбцов двумерного массива, в данном случае их 3.

1
2

// инициализация двумерного массива:
int a[5][3] = { {4, 7, 8}, {9, 66, -1}, {5, -5, 0}, {3, -3, 30}, {1, 1, 1} };

В данном массиве 5 строк, 3 столбца. после знака присвоить ставятся общие фигурные скобочки, внутри которых ставится столько пар фигурных скобочек, сколько должно быть строк в двумерном массиве, причём эти скобочки разделяются запятыми. В каждой паре фигурных скобочек записывать через запятую элементы двумерного массива. Во всех фигурных скобочках количество элементов должно совпадать. Так как в массиве пять строк, то и внутренних пар скобочек тоже пять. Во внутренних скобочках записаны по три элемента, так как количество столбцов — три. Графически наш массив будет выглядеть, как двумерная таблица (см. Рисунок 5).

Рисунок 5 — Массивы в С++
В каждой ячейке двумерного массива показано значение, в нижнем правом углу показан адрес данной ячейки. Адресом ячейки двумерного массива является имя  массива, номер строки и номер столбца.
Разработаем несложную программу, на обработку двумерного массива, которая называется «Лабиринт». Лабиринт должен быть построен на основе двумерного массива. Размер лабиринта выберем на свое усмотрение.

  • MVS

  • Code::Blocks

  • Dev-C++

  • QtCreator

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60

// array2.cpp: определяет точку входа для консольного приложения.
#include "stdafx.h"
#include
using namespace std;
int main(int argc, char* argv[])
{
// 1-условно "стенки лабиринта"
// 2-"правильный путь, выход из лабиринта"
// 0-"ложный путь"
int mas[33][20] = { {1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,}, // инициализация двумерного массива
{1,2,1,0,0,1,0,1,2,2,2,1,1,1,1,0,0,0,0,1,},
{1,2,1,1,0,1,0,1,2,1,2,2,2,2,1,0,1,1,0,1,},
{1,2,2,2,2,2,2,1,2,1,1,1,1,2,1,0,0,1,0,1,},
{1,1,1,1,1,1,2,1,2,1,0,0,1,2,1,1,0,1,0,1,},
{1,0,0,1,0,0,2,2,2,1,1,0,0,2,0,0,0,1,0,1,},
{1,0,1,1,0,1,1,1,1,1,0,0,1,2,1,1,1,1,0,1,},
{1,0,0,0,0,0,0,0,0,1,1,1,1,2,1,0,0,0,0,1,},
{1,1,1,1,1,1,0,1,1,1,2,2,2,2,1,0,1,1,1,1,},
{1,1,0,0,0,1,0,0,1,1,2,1,1,1,1,0,0,0,0,1,},
{1,0,0,1,0,0,0,0,0,1,2,2,2,2,1,1,1,1,0,1,},
{1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,0,0,0,0,1,},
{1,2,2,2,2,2,2,2,2,2,2,2,2,2,1,0,1,1,1,1,},
{1,2,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,},
{1,2,1,0,0,0,1,2,2,2,1,0,0,0,0,0,1,1,0,1,},
{1,2,1,1,1,1,1,2,1,2,1,1,1,0,1,0,0,0,0,1,},
{1,2,1,2,2,2,1,2,1,2,2,2,1,1,1,1,1,1,1,1,},
{1,2,1,2,1,2,1,2,1,0,1,2,2,2,2,2,2,2,2,1,},
{1,2,1,2,1,2,1,2,1,0,1,1,1,1,1,1,1,1,2,1,},
{1,2,1,2,1,2,1,2,1,0,0,0,0,0,0,0,0,0,2,1,},
{1,2,1,2,1,2,2,2,1,0,1,1,1,1,1,1,0,1,2,1,},
{1,2,1,2,1,1,1,1,1,0,0,0,1,0,1,0,0,1,2,1,},
{1,2,1,2,2,1,0,0,1,1,1,0,0,0,1,0,1,1,2,1,},
{1,2,1,1,2,1,1,0,0,0,0,0,1,0,1,0,0,1,2,1,},
{1,2,1,1,2,1,0,0,1,1,1,1,1,1,1,1,1,1,2,1,},
{1,2,1,1,2,1,1,0,1,2,2,2,2,2,2,2,2,2,2,1,},
{1,2,1,1,2,1,0,0,1,2,1,1,1,1,1,1,1,1,1,1,},
{1,2,1,1,2,1,0,1,1,2,1,1,1,1,1,1,1,1,2,2,},
{1,2,1,1,2,1,0,0,1,2,1,1,2,2,2,2,2,2,2,1,},
{1,2,1,1,2,1,0,1,1,2,1,1,2,1,1,1,1,1,1,1,},
{1,2,1,1,2,1,0,0,1,2,1,1,2,1,0,0,0,1,0,1,},
{1,2,2,2,2,1,0,1,1,2,2,2,2,0,0,1,0,0,0,1,},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,} };
// два цикла - внутренний и внешний, осуществляющие обращение к каждому элементу массива
for (int i = 0; i < 33; i++) //переключение по строкам
{
for (int j = 0; j < 20; j++)// переключение по столбцам
if (mas[i][j] == 1)
{
// вывести два раза символ (номер которого 176 в таблице аски) в консоль
cout << static_cast(176);
cout << static_cast(176);
} else
cout << "  "; // вывести два пробела
cout << endl;
}
system("pause");
return 0;
}

Правильный и ложный пути можно было бы обозначать одной и той же цифрой, например, нулём, но для наглядности правильный путь обозначен цифрой 2. Инициализация массива выполнялась вручную, только для того, что бы упростить программу. Так как в программе выполняется обработка двумерного массива, нужны два цикла, для переключения между элементами двумерного массива. Первый цикл for выполняет переключение между строками двумерного массива. Так как строк в двумерном массиве 33, то и переменная-счетчик i инкрементируется  от 0 до 33, 
Download 120,07 Kb.

Do'stlaringiz bilan baham:
1   2   3




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish