Ikki o‘lchovli massivlarni qayta ishlashning ba’zi misollari

(Tasodifiy qiymatlar bilan massivlarni ishga tushirish) Quyidagi sikl 0 dan 99 gacha tasodifiy qiymatlar bilan massivni ishga tushiradi Ikki o‘lchovli massivni elementlarini ekranga chop etish uchun massivdagi har bir elementni quyidagi kabi sikl yordamida ko‘rsatish kerak Yig‘indini saqlash uchun jami deb nomlangan o‘zgaruvchidan foydalaning. Dastlab jami o‘zgaruvchisi qiymati 0 ga teng. Massivdagi har bir elementni quyidagi sikl yordamida jamiga qo‘shingSizning dasturingiz testni baholaydi va natijani ko‘rsatadi. Dastur har bir talabaning javoblarini to‘g‘ri javob bilan taqqoslaydi, to‘g‘ri javoblar sonini hisoblaydi va uni ekranga chop etadi. int main() char javoblar[TALABALR_SONI][SAVOLLAR_SONI] = {E, D, D, A, C, B, E, E, A, D} {B, B, A, C, C, D, E, E, A, D} char t_javoblar[] = {D, B, D, C, C, D, A, E, A, D}; int togrijavobSoni = 0; cout << "Talaba " << i << "ning to`g`ri javobi: " << Quyidagi bayonotlardan qaysi biri o‘lchovli massiv deklaratsiyasiga tegishli Quyidagi kodning natijasi nima Quyidagi funksiya deklaratsiyasidan qaysi biri noto‘g‘ri |
Ikki o‘lchovli massivlarni qayta ishlashning ba’zi misollari
|
bet | 33/33 | Sana | 21.02.2024 | Hajmi | 290,29 Kb. | | #160200 |
Bog'liq Algoritmlash va dasturlash asoslari-fayllar.orgBu sahifa navigatsiya:
- (Tasodifiy qiymatlar bilan massivlarni ishga tushirish) Quyidagi sikl 0 dan 99 gacha tasodifiy qiymatlar bilan massivni ishga tushiradi
- Ikki o‘lchovli massivni elementlarini ekranga chop etish uchun massivdagi har bir elementni quyidagi kabi sikl yordamida ko‘rsatish kerak
- Yig‘indini saqlash uchun jami deb nomlangan o‘zgaruvchidan foydalaning. Dastlab jami o‘zgaruvchisi qiymati 0 ga teng. Massivdagi har bir elementni quyidagi sikl yordamida jamiga qo‘shing
- Sizning dasturingiz testni baholaydi va natijani ko‘rsatadi. Dastur har bir talabaning javoblarini to‘g‘ri javob bilan taqqoslaydi, to‘g‘ri javoblar sonini hisoblaydi va uni ekranga chop etadi.
- int main()
- char javoblar[TALABALR_SONI][SAVOLLAR_SONI] =
- {E, D, D, A, C, B, E, E, A, D}
- {B, B, A, C, C, D, E, E, A, D}
- char t_javoblar[] = {D, B, D, C, C, D, A, E, A, D};
- int togrijavobSoni = 0;
- cout << "Talaba " << i << "ning to`g`ri javobi: " <<
- Quyidagi bayonotlardan qaysi biri o‘lchovli massiv deklaratsiyasiga tegishli
- Quyidagi kodning natijasi nima
- Quyidagi funksiya deklaratsiyasidan qaysi biri noto‘g‘ri
Ikki o‘lchovli massivlarni qayta ishlashning ba’zi misollari:
(Kirish qiymatlari bilan massivlarni ishga tushirish) Quyidagi sikl massivni foydalanuvchi ma’lumot kiritish qiymatlari bilan ishga tushiradi:
cout << "Qator hajmini kiriting" << QATOR_HAJMI<< " va "
<< USTUN_HAJMI << " ustun hajmini kiriting " << endl;
for (int i = 0; i < QATOR_HAJMI; i++)
for (int j = 0; j < USTUN_HAJMI; j++)
cin >> matrix[i][j]
(Tasodifiy qiymatlar bilan massivlarni ishga tushirish) Quyidagi sikl 0 dan 99 gacha tasodifiy qiymatlar bilan massivni ishga tushiradi:
for (int qator = 0; qator < QATOR_HAJMI; qator++)
{
for (int ustun = 0; ustun < USTUN_HAJMI; ustun++)
{
matrix[qator][ustun] = rand() % 100;
}
}
Ikki o‘lchovli massivni elementlarini ekranga chop etish uchun massivdagi har bir elementni quyidagi kabi sikl yordamida ko‘rsatish kerak:
for (int qator = 0; qator < QATOR_HAJMI; qator++)
{
for (int ustun = 0; ustun < USTUN_HAJMI; ustun++)
{
cout << matrix[qator][ustun] << " ";
}
cout << endl;
}
Yig‘indini saqlash uchun jami deb nomlangan o‘zgaruvchidan foydalaning. Dastlab jami o‘zgaruvchisi qiymati 0 ga teng. Massivdagi har bir elementni quyidagi sikl yordamida jamiga qo‘shing:
int jami = 0;
for (int qator = 0; qator < QATOR_HAJMI; qator++)
{
for (int ustun = 0; ustun < USTUN_HAJMI; ustun++)
{
jami += matrix[qator][ustun];
}
}
(Elementlarni ustunlar bo‘yicha yig‘ish) Har bir ustun uchun uning yig‘indisini saqlash uchun jamiUstun deb nomlangan o‘zgaruvchidan foydalaning. Ustundagi har bir elementni quyidagi sikl yordamida jamiUstunga qo‘shing:
for (int ustun = 0; ustun < USTUN_HAJMI; ustun++)
{
int jamiUstun = 0;
for (int qator = 0; qator < QATOR_HAJMI; qator++)
jamiUstun += matrix[qator][ustun];
cout << "Ustundagi elementlar yig`indisi: " << jamiUstun << endl;
}
(Qaysi qatorda eng katta yig‘indi borligini aniqlash) Qatorning eng katta yig‘indisi va indeksini topish uchun maksQator va indeksMaksQator o‘zgaruvchilaridan foydalaning. Har bir qator uchun uning yig‘indisini hisoblang va agar yangi yig‘indi kattaroq bo‘lsa, maksQator va indeksMaksQator qiymatini yangilang.
int maksQator = 0;
int indeksMaksQator = 0;
// birinchi qatordagi yig`indini hisoblang
for (int ustun = 0; ustun < USTUN_HAJMI; ustun++)
maksQator += matrix[0][ustun];
for (int qator = 1; qator < QATOR_HAJMI; qator++)
{
int joriyQatorYigindisi = 0;
for (int ustun = 0; ustun < USTUN_HAJMI; ustun++)
joriyQatorYigindisi += matrix[qator][ustun];
if (joriyQatorYigindisi > maksQator)
{
maksQator = joriyQatorYigindisi;
indeksMaksQator = qator;
}
}
cout << "Qator " << indeksMaksQator
<< " eng katta qator yig`indisi " << maksQator << endl;
(Tasodifiy aralashtirish) Bir oʻlchovli massivdagi elementlarni aralashtirish “Masivlarni qayta ishlash” boʻlimida keltirilgan. Ikki o‘lchovli massivdagi barcha elementlarni qanday aralashtirish mumkinligini ko‘rib chiqamiz. Buni amalga oshirish uchun har bir element matritsa[i][j] uchun tasodifiy ravishda i1 va j1 indekslarini yarating va matritsa[i][j] matritsai[i1][j1] bilan quyidagi tarzda almashtiring:
srand(time(0));
for (int i = 0; i < QATOR_HAJMI; i++)
{
for (int j = 0; j < USTUN_HAJMI; j++)
{
int i1 = rand() % QATOR_HAJMI;
int j1 = rand() % USTUN_HAJMI;
// elementlarni almashtring
double temp = matritsa[i][j];
matritsa[i][j] = matritsa[i1][j1];
matritsa[i1][j1] = temp;
}
}
Ko‘p tanlovli test yaratish
Muammo ko‘p tanlovli testlarni baholaydigan dastur yozishdir.
Faraz qilaylik, 8 ta talaba va 10 ta savol bor va javoblar ikki o‘lchovli massivda saqlanadi. Har bir qatorda talabalarning savollarga javoblari qayd etiladi. Masalan, quyidagi massiv testni saqlaydi.
|
Talabaning javoblari
|
Talaba[0]
|
A
|
B
|
A
|
C
|
C
|
D
|
E
|
E
|
A
|
D
|
|
Talaba[1]
|
D
|
B
|
A
|
B
|
A
|
E
|
E
|
A
|
E
|
D
|
|
Talaba[2]
|
D
|
B
|
D
|
C
|
A
|
B
|
A
|
C
|
E
|
D
|
|
Talaba[3]
|
A
|
D
|
A
|
E
|
D
|
A
|
D
|
E
|
E
|
D
|
|
Talaba[4]
|
B
|
A
|
C
|
A
|
A
|
D
|
B
|
D
|
E
|
D
|
|
Talaba[5]
|
D
|
B
|
D
|
C
|
A
|
B
|
A
|
C
|
E
|
D
|
|
Talaba[6]
|
A
|
D
|
A
|
E
|
D
|
A
|
D
|
E
|
E
|
D
|
|
Talaba[7]
|
B
|
A
|
C
|
A
|
A
|
D
|
B
|
D
|
E
|
D
|
|
javoblar bir o‘lchovli massivda quyidagi tarzda saqlanadi:
|
To‘g‘ri javoblar
|
|
|
0
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
Javoblar
|
D
|
B
|
D
|
C
|
C
|
D
|
A
|
E
|
A
|
D
|
Sizning dasturingiz testni baholaydi va natijani ko‘rsatadi. Dastur har bir talabaning javoblarini to‘g‘ri javob bilan taqqoslaydi, to‘g‘ri javoblar sonini hisoblaydi va uni ekranga chop etadi.
#include
using namespace std;
int main()
{
const int TALABALR_SONI = 8;
const int SAVOLLAR_SONI = 10;
// Students' answers to the questions
char javoblar[TALABALR_SONI][SAVOLLAR_SONI] =
{
{'A', 'B', 'A', 'C', 'C', 'D', 'E', 'E', 'A', 'D'},
{'D', 'B', 'A', 'B', 'C', 'A', 'E', 'E', 'A', 'D'},
{'E', 'D', 'D', 'A', 'C', 'B', 'E', 'E', 'A', 'D'},
{'C', 'B', 'A', 'E', 'D', 'C', 'E', 'E', 'A', 'D'},
{'A', 'B', 'D', 'C', 'C', 'D', 'E', 'E', 'A', 'D'},
{'B', 'B', 'E', 'C', 'C', 'D', 'E', 'E', 'A', 'D'},
{'B', 'B', 'A', 'C', 'C', 'D', 'E', 'E', 'A', 'D'},
{'E', 'B', 'E', 'C', 'C', 'D', 'E', 'E', 'A', 'D'}
};
// to`g`ri javoblar
char t_javoblar[] = {'D', 'B', 'D', 'C', 'C', 'D', 'A', 'E', 'A', 'D'};
// baholarni hisoblang
for (int i = 0; i < TALABALR_SONI; i++)
{
// talabani baholang
int togrijavobSoni = 0;
for (int j = 0; j < SAVOLLAR_SONI; j++)
{
if (javoblar[i][j] == t_javoblar[j])
togrijavobSoni++;
}
cout << "Talaba " << i << "ning to`g`ri javobi: " <<
togrijavobSoni << endl;
}
return 0;
}
Natija:
Talaba 0 ning to‘g‘ri javobi 7
Talaba 1 ning to‘g‘ri javobi 6
Talaba 2 ning to‘g‘ri javobi 5
Talaba 3 ning to‘g‘ri javobi 4
Talaba 4 ning to‘g‘ri javobi 8
Talaba 5 ning to‘g‘ri javobi 7
Talaba 6 ning to‘g‘ri javobi 7
Talaba 7 ning to‘g‘ri javobi 7
10-20 qatorlardagi bayonot talabaning javoblarini e’lon qiladi va ishga tushiradi. 23-qatordagi bayonot char qiymatlari qatorini e’lon qiladi va ishga tushiradi. Javoblar massividagi har bir qator talabaning javobini saqlaydi, uni massiv t_javoblar bilan solishtirish orqali baholaydi. Talaba javoblari baholangandan so‘ng darhol talaba uchun natija ko‘rsatiladi.
Amaliy mashg‘ulotlar
4 × 5 int matritsasini e’lon qiling va yarating.
Quyidagi kodning natijasi nima?
int m[5][6];
int x[] = {1, 2};
m[0][1] = x[1];
cout << "m[0][1] - " << m[0][1];
Quyidagi bayonotlardan qaysi biri o‘lchovli massiv deklaratsiyasiga tegishli?
int r[2];
int x[];
int y[3][];
Quyidagi kodning natijasi nima?
#include
using namespace std;
int main()
{
int matritsa[4][4] =
{{1, 2, 3, 4},
{4, 5, 6, 7},
{8, 9, 10, 11},
{12, 13, 14, 15}};
int jami = 0;
for (int i = 0; i < 4; i++)
jami += matritsa[i][i];
cout << jami << endl;
return 0;
}
Quyidagi kodning natijasi nima?
#include
using namespace std;
int main()
{
int matritsa[4][4] =
{{1, 2, 3, 4},
{4, 5, 6, 7},
{8, 9, 10, 11},
{12, 13, 14, 15}};
int jami = 0;
for (int i = 0; i < 4; i++)
cout << matritsa[i][1] << " ";
return 0;
}
Quyidagi funksiya deklaratsiyasidan qaysi biri noto‘g‘ri?
int f(int[][] a, int qatorHajmi, int ustunHajmi);
int f(int a[][], int qatorHajmi, int ustunHajmi);
int f(int a[][3], int qatorHajmi);
FOYDALANILGAN ADABIYOTLAR
Y. Daniel Liang. Introduction to Programming with C++
http://fayllar.org
|
| |