Mavzu: Matrisalarni tashkil etish. Reja: Ko’p o’lchamli massivlarni tavsiflash, ularga ishlov berish

|
Mavzu: Matrisalarni tashkil etish. Reja: Ko’p o’lchamli massivlarni tavsiflash, ularga ishlov berish
|
Sana | 21.11.2023 | Hajmi | 103,22 Kb. | | #102499 |
Bog'liq 5-mustaqil ish
Mavzu: Matrisalarni tashkil etish.
Reja:
Ko’p o’lchamli massivlarni tavsiflash, ularga ishlov berish;
Massiv elementlarini kiritish va chiqarish;
Ko’p o’lchamli massivlarni saralash. Misollar.
C/C++ algoritmik tilida faqat bir o’lchamli massivlar bilan emas, balki ko’p o’lchamli massivlar bilan ham ishlash mumkin. Agar massiv o’z navbatida yana massivdan iborat bo’lsa, demak ikki o’lchamli massiv, ya’ni matrisa deyiladi. Massivlarning o’lchovi kompyuterda ishlashga to’sqinlik qilmaydi, chunki ular xotirada chiziqli ketma-ket elementlar sifatida saqlanadi. Ko’p o’lchamli massivlarni xuddi 1 o’lchamli massivga o’xshab e’lon qilinadi, faqat indeks toifasi sifatida massivning satrlari (qatorlari) va ustunlari toifasi ko’rsatiladi va ular alohida [ ][ ] qavslarda ko’rsatiladi. Masalan: A nomli butun sonlardan iborat 2 o’lchamli massiv berilgan bo’lsa va satrlar soni n ta, ustunlar soni m ta bo’lsa: int a[n][m]
Ikki ulchovli massiv elementlarini kiritish-chiqarish, ular ustida amallar bajarish ichma-ich joylashgan parametrli sikllar ichida bo’ladi, ya’ni 1-sikl satrlar uchun, 2-sikl ustunlar uchun. Masalan:
for ( i=0; i<=3; i++)
for ( j=0; j<=3; j++)
cin >>a[i][j];
Agar ularni klaviaturadan kiritish kerak bo’lsa, ya’ni cin operatori yordamida tashkil etilsa, quyidagicha kiritiladi:
Bundan tashqari massiv elementlarini e’lon qilish bilan birga ularni inisalizasiya ham qilish mumkin:
int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
Natijalar chiroyli ko’rinishda bo’lishi uchun chiqarish operatorini quyidagicha qilib tashkil etish kerak:
for (int i=0; i<3; i++)
{ for (int j=0; j<3; j++)
cout <<”a[“<
cout <
getch ( );
}
1-misol. A va V matrisalari berilgan. Quyidagi formula orqali yangi S matrisasini hosil qiling: Sij = Aij + Bij; bu yerda i=1,3; j=1,2;
# include
# include
void main ( )
{ float a[3][2]={{24.3,-4.15},{0,18.4},{-8.8,-15.75}},
b[3][2]={{0.1,-4.8},{6.8,7.1},{-2.8,0.40}};
float c[3][2];
int i, j;
for (i = 0; i < 3; i++)
{ for (j = 0; j < 3; j++)
{ c[i][j] = a[i][j] + b[i][j];
cout <<”c[“<
cout <
getch ( );
}
Massiv elementlariga son qiymat berishda kompyuter xotirasidagi tasodifiy butun sonlardan foydalanish ham mumkin. Buning uchun standart kutubxonaning rand ( ) funksiyasini ishga tushirish kerak. rand ( ) funksiyasi yordamida 0 ÷ 32767 oraliqdagi ihtiyoriy sonlarni olish mumkin. Bu qiymatlar umuman tasodifiydir. (psevdo – tasodifiy degani).
Agar dastur qayta-qayta ishlatilsa, ayni tasodifiy qiymatlar takrorlanaveradi. Ularni yangi tasodifiy qiymatlar qilish uchun srand ( ) funksiyasini dasturda bir marta e’lon qilish kerak. Dastur ishlashi jarayonida ehtiyojga qarab rand ( ) funksiyasi chaqirilaveradi. Tasodifiy qiymatlar bilan ishlash uchun faylini e’lon qilish zarur. srand ( ) funksiyasidagi qiymatni avtomatik ravishda o’zgaradigan holatga keltirish uchun srand ( time (NULL)) yozish ma’qul, shunda kompyuter ichidagi soatning qiymati time ( ) funksiyasi yordamida o’rnatiladi va srand ga parametr sifatida beriladi. NULL yoki 0 deb yozilsa, qiymat sekundlar ko’rinishida beriladi. Vaqt bilan ishlash uchun ni e’lon qilish kerak. Misol:
# include
# include
# include
# include
int main ( )
{ srand ( time (0));
int a[5], b[5], i;
for (i = 0; i < 5; i++) a[i] = rand ( );
for (i = 0; i < 5; i++)
{ b[i] = a[i] + 64;
cout << “b=”<
Izoh: tasodifiy sonlar ichida manfiy sonlarning ham qatnashishini ihtiyor etsak,
a[i] = 1050 - rand ( ); yoki a[i] = rand ( )-1000; deb yozish ham mumkin.
2-misol. Matritsani manfiy elementi joylashgan qator va ustun elementlari olib tashlansin. Manfiy element bitta bo`lishi kafolatlanadi
#include
using namespace std;
int main()
{
int n,m,in_n,in_m;
cout<<"n(satr):"; cin>>n;
cout<<"m(ustun):"; cin>>m;
int a[n][m];
for(int i=0; ifor(int j=0; jcin>>a[i][j];
cout<<"Hosil bo'lgan matritsa..\n";
for(int i=0; i{
for(int j=0; jcout<cout<}
for(int i=0; i{
for(int j=0; jif(a[i][j]<0)
{
in_n=i;
in_m=j;
}
}
cout<<"Natija...\n";
for(int i=0; i{
for(int j=0; j{
if(in_n!=i and in_m!=j)
cout<}
cout<}
}
|
| |