11-Ma'ruza Ko'p o'lchovli massivlar. 2D massivlar. Reja



Download 119,13 Kb.
bet2/2
Sana08.02.2022
Hajmi119,13 Kb.
#437304
1   2
Bog'liq
11-Ma'ruza (2)

0

983

787

714

1375

967

1087

Boston

983

0

214

1102

1763

1723

1842

New York

787

214

0

888

1549

1548

1627

Atlanta

714

1102

888

0

661

781

810

Miami

1375

1763

1549

661

0

1426

1187

Dallas

967

1723

1548

781

1426

0

239

Houston

1087

1842

1627

810

1187

239

0

double[][] distances = {


{0, 983, 787, 714, 1375, 967, 1087},
{983, 0, 214, 1102, 1763, 1723, 1842},
{787, 214, 0, 888, 1549, 1548, 1627},
{714, 1102, 888, 0, 661, 781, 810},
{1375, 1763, 1549, 661, 0, 1426, 1187},
{967, 1723, 1548, 781, 1426, 0, 239},

11.2 Ikki o'lchovli massivlar bilan ishlash asoslari
Ikki o'lchovli massivdagi elementga kirish satr va ustun indekslari orqali amalga oshiriladi. Ikki o'lchovli massivlar uchun o'zgaruvchini qanday e'lon qilishim mumkin? 2D massivini qanday yarataman? Ikki o'lchovli massivning elementlariga qanday kirish mumkin? Ushbu bo'lim ushbu masalalarni hal qiladi.
11.2.1 Ikki o'lchovli massiv o'zgaruvchilarni e'lon qilish va yaratish
2D massivlar
Ikki o'lchovli massivni e'lon qilish sintaksisi: elementType [] [] arrayRefVar;
Yoki elementType arrayRefVar [] []; // Ruxsat berilgan, lekin tavsiya etilmaydi
Misol tariqasida, ikki o'lchovli int qiymatlari massivining o'zgaruvchilari matritsasini qanday e'lon qilish mumkin: int [] [] matritsa; yoki int matritsasi [] [];
Siz 5 ga 5 ikki o'lchovli int qiymatlari massivini yaratishingiz va uni ushbu sintaksis yordamida matritsaga belgilashingiz mumkin: matritsa = new int [5] [5];
Ikki o'lchovli massiv ikkita pastki yozuvdan foydalanadi, biri satr uchun, ikkinchisi qator uchun. ustun. Bir o'lchovli massivda bo'lgani kabi, 11.1a-rasmda ko'rsatilganidek, har bir pastki indeks uchun int va 0 dan boshlanadi.

11.1-rasm Ikki o'lchovli massivning har bir subscriptining indeksi 0 dan boshlanadigan intdir.
11.1b-rasmda ko'rsatilganidek, 2-qator va 1-ustundagi ma'lum elementga 7 qiymatini belgilash uchun quyidagi sintaksisdan foydalanish mumkin: matritsa [2] [1] = 7;
Ikki o'lchovli to'plamni e'lon qilish, yaratish va ishga tushirish uchun massivni ishga tushirish vositasidan ham foydalanishingiz mumkin. Masalan, (a) dagi quyidagi kod 11.1c-rasmda ko'rsatilganidek, belgilangan boshlang'ich qiymatlarga ega massivni yaratadi. Bu (b) dagi kodga teng.


11.2.2 Ikki o'lchovli massivlarning uzunliklarini olish
Ikki o'lchovli massiv aslida har bir element bir o'lchovli bo'lgan massivdir. bir guruh. Massiv uzunligi x massivdagi x.length yordamida olinadigan elementlar sonidir. x [0], x [1] ,. ... ... va x [x.length-1] massivlardir. Ularning uzunligini x [0] .length, x [1] .length , yordamida olish mumkin. ... ... va x [x.length-1] .uzunlik.
Masalan, x = new int [3] [4], x [0], x [1] va x [2] bir oʻlchovli massivlar boʻlib, ularning har biri rasmda koʻrsatilganidek, toʻrtta elementni oʻz ichiga oladi. 8.2. x.uzunligi 3 va x [0] .uzunligi, x [1] .uzunligi va x [2] .uzunligi 4.

11.2-rasm Ikki o'lchovli massiv bir o'lchovli massiv bo'lib, unda har bir element
boshqa bir o'lchovli massiv.
11.2.3 Yirtilgan massivlar
Ikki o'lchovli massivdagi har bir satrning o'zi massivdir. Shunday qilib, iplar turli uzunliklarda bo'lishi mumkin. Bunday massiv yirtilgan massiv deb nomlanadi. Bu erda yirtiq massiv yaratish misoli keltirilgan:

Ko'rib turganingizdek, triangleArray [0] .length 5, TriangleArray [1] .length 4, triangleArray [2] .length 3, triangleArray [3] .length 2 va TriangleArray [4] .length 1 Agar siz yirtilgan massivdagi qiymatni oldindan bilmasangiz, lekin uning olchamlarini bilsangizdeylik, oldingidekquyidagi sintaksis yordamida yirtilgan massiv yaratishingiz mumkin:
int[][] triangleArray = new int[5][];
triangleArray[0] = new int[5];
triangleArray[1] = new int[4];
triangleArray[2] = new int[3];
triangleArray[3] = new int[2];
triangleArray[4] = new int[1];
Endi siz massivga qiymatlarni belgilashingiz mumkin. Masalan,
triangleArray[0][3] = 50;
triangleArray[4][0] = 45;

11.3 Ikki o'lchovli massivlar bilan ishlash
Nested for looplar ko'pincha ikki o'lchovli massivlarni qayta ishlash uchun ishlatiladi. Aytaylik, massiv matritsasi shunday yaratilgan:
int [] [] матрица = новый int [10] [10];
Quyida ikki o'lchovli massivlarni qayta ishlashga misollar keltirilgan.
1. Kirish qiymatlari bilan massivlarni ishga tushirish. Keyingi tsikl ishga tushadi foydalanuvchi kiritish qiymatlari qatori:
java.util.Scanner input = new Scanner(System.in);
System.out.println("Enter " + matrix.length + " rows and " +
matrix[0].length + " columns: ");
for (int row = 0; row < matrix.length; row++) {
for (int column = 0; column < matrix[row].length; column++) {
matrix[row][column] = input.nextInt();
}
}

  1. Tasodifiy qiymatli massivlarni initsiallashtirish. Quyidagi tsikl 0 dan 99 gacha tasodifiy qiymatlar yordamida massivni ishga tushiradi:

for (int row = 0; row < matrix.length; row++) {
for (int column = 0; column < matrix[row].length; column++) {
matrix[row][column] = (int)(Math.random() * 100);
}
}


  1. Chop etilgan massivlar. Ikki oʻlchovli massivni chop etish uchun har bir elementni quyidagiga oʻxshash sikl yordamida massivga chop etishingiz kerak:

for (int row = 0; row < matrix.length; row++) {
for (int column = 0; column < matrix[row].length; column++) {
System.out.print(matrix[row][column] + " ");
}
System.out.println();
}
4. Barcha elementlarning yig'indisi. Jami deb nomlangan o'zgaruvchidan foydalaning
miqdorini saqlash. Dastlab jami 0 ga teng. Massivning har bir elementini quyidagi tsikl yordamida jamiga qo'shing:
int total = 0;
for (int row = 0; row < matrix.length; row++) {
for (int column = 0; column < matrix[row].length; column++) {
total += matrix[row][column];
}
}

  1. Elementlarni ustun bo'yicha yig'ish. Har bir ustun uchun foydalaning

summasini saqlash uchun total deb nomlangan o'zgaruvchi. Ustundagi har bir elementni quyidagi tsikldan foydalanib yig'indiga qo'shing:
for (int column = 0; column < matrix[0].length; column++) {
int total = 0;
for (int row = 0; row < matrix.length; row++)
total += matrix[row][column];
System.out.println("Sum for column " + column + " is "
+ total);
}
6. Qaysi qatorda eng katta miqdor bor? maxRow va o'zgaruvchilardan foydalaning
indexOfMaxRow qatorning eng yuqori miqdori va indeksini kuzatish uchun. Har bir satr uchun uning summasini hisoblang va agar yangi summa kattaroq bo'lsa, maxRow va indexOfMaxRow ni yangilang.
int maxRow = 0;
int indexOfMaxRow = 0;
// Get sum of the first row in maxRow
for (int column = 0; column < matrix[0].length; column++) {
maxRow += matrix[0][column];
}
for (int row = 1; row < matrix.length; row++) {
int totalOfThisRow = 0;
for (int column = 0; column < matrix[row].length; column++)
totalOfThisRow += matrix[row][column];
if (totalOfThisRow > maxRow) {
maxRow = totalOfThisRow;
indexOfMaxRow = row;
}
}
System.out.println("Row " + indexOfMaxRow
+ " has the maximum sum of " + maxRow);
7. Tasodifiy aralashtirish. Bir o'lchovli elementlarni aralashtirish kiritilgan
massiv. Qo'shimcha ma'lumot uchun 9.2.6 bo'limiga qarang. 2D massivdagi barcha elementlarni qanday aralashtirish mumkin? Buning uchun [i] [j] elementlarning har bir matritsasi uchun tasodifiy ravishda i1 va j1 indekslarini hosil qiling va [i] [j] matritsasini [i1] [j1] matritsasi bilan quyidagi tarzda almashtiring:
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
int i1 = (int)(Math.random() * matrix.length);
int j1 = (int)(Math.random() * matrix[i].length);
// Swap matrix[i][j] with matrix[i1][j1]
int temp = matrix[i][j];
matrix[i][j] = matrix[i1][j1];
matrix[i1][j1] = temp;
}
}

Nazorat savollari:
1. Int qiymatlarining ikki o‘lchovli massivi uchun massiv mos yozuvlar o‘zgaruvchisini e’lon qiling, 4 ga 5 int matritsa yarating va uni o‘zgaruvchiga tayinlang.
2. Ikki o‘lchovli massivdagi satrlar turli uzunliklarga ega bo‘lishi mumkinmi?
Quyidagi kod nima beradi?
int [] [] массив = новый int [5] [6];
int [] x = {1, 2};
массив [0] = х;
System.out.println ("массив [0] [1] равно" + массив [0] [1]);

  1. Quyidagi fikrlardan qaysi biri to‘g‘ri?

int [] [] r = новый int [2];
int [] x = новый int [];
int [] [] y = новый int [3] [];
int [] [] z = {{1, 2}};
int [] [] m = {{1, 2}, {2, 3}};
int [] [] п = {{1, 2}, {2, 3},};

  1. Quyidagi kodning chiqishini ko'rsating:

int[][] array = {{1, 2}, {3, 4}, {5, 6}};
for (int i = array.length - 1; i >= 0; i——) {
for (int j = array[i].length - 1; j >= 0; j——)
System.out.print(array[i][j] + " ");
System.out.println();
}

  1. Quyidagi kodning chiqishini ko'rsating:

int[][] array = {{1, 2}, {3, 4}, {5, 6}};
int sum = 0;
for (int i = 0; i < array.length; i++)
sum += array[i][0];
System.out.println(sum);
Download 119,13 Kb.

Do'stlaringiz bilan baham:
1   2




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