Labaratoriya ishi


Download 205.2 Kb.
Sana14.10.2020
Hajmi205.2 Kb.
#133768
Bog'liq
Aliyarov Xurshid


O’zbekiston Respyblikasi Axborot Texnologiylari va Kommunikatsiyalarini Rivojlantirish Vazirligi

Muhammad Al-Xorazmiy nomidagi Toshkent Axborot Texnologiyalari Universiteti



Ma’lumotlar Tuzilmasi va Algoritmlar


LABARATORIYA ISHI

Mavzu: Statik ma’lumotlar tuzilmasini tadqiq qilish.

Guruh: 811-19

Bajardi: Aliyarov Xurshid

Mavzu: Statik ma’lumotlar tuzilmasini tadqiq qilish.

Statik deganimizda hotirada egallagan joyi o'zgarmas, dastur boshida beriladigan strukturalarni nazarda tutamiz. Dinamik ma'lumot tiplari dastur davomida o'z hajmini, egallagan hotirasini o'zgartirishi mumkin.

Agar struktura bir hil kattalikdagi tiplardan tuzilgan bo'lsa, uning nomi massiv (array) deyiladi. Massivlar dasturlashda eng ko'p qo'laniladigan ma'lumot tiplaridir. Bundan tashqari strukturalar bir necha farqli tipdagi o'zgaruvchilardan tashkil topgan bo'lishi mumkin. Buni biz klas (Pascalda record) deymiz. Masalan bunday strukturamiz ichida odam ismi va yoshi bo'lishi mumkin.

Bu bo'limda biz massivlar bilan yaqindan tanishib o'tamiz. Bu bo'limdagi massivlarimiz C uslubidagi, pointerlarga (ko'rsatkichlarga) asoslan strukturalardir. Massivlarning boshqa ko'rinishlarini keyingi qismlarda o'tamiz.

Massivlar hotirada ketma-ket joylashgan, bir tipdagi o'zgaruvchilar guruhidir. Alohida bir o'zgaruvchini ko'rsatish uchun massiv nomi va kerakli o'zgaruvchi indeksini yozamiz. C/C++ dagi massivlardagi elementlar indeksi har doim noldan boshlanadi. Bizda char tipidagi m nomli massiv bor bo'lsin. Va uning 4 dona elementi mavjud bo'lsin. Shemada bunday ko'rsataylik:

m[0] -> 4

m[1] -> -44

m[2] -> 109

m[3] -> 23

Ko'rib turganimizdek, elementga murojaat qilish uchun massiv nomi va [] qavslar ichida element indeksi yoziladi. Bu yerda birinchi element qiymati 4, ikkinchi element - 1 nomerli indeksda -44 qiymatlari bor ekan. Ohirgi element indeksi n-1 bo'ladi (n - massiv elementlari soni).

[] qavslar ichidagi indeks butun son yoki butun songa olib keluvchi ifoda bo'lmog'i lozim. Masalan:

...


int k = 4, l = 2;

m[ k-l ] = 77; // m[2] = 77

m[3] *= 2; // m[3] = 46

double d = m[0] * 6; // d = 24

cout << m[1]; // Ekranda: -44

...


Massivlarni ishlatish uchun ularni e'lon qilish va kerak bo'lsa massiv elementlarini initsalizatsiya qilish kerak. Massiv e'lon qilinganda kompilyator elementlar soniga teng hajmda hotira ajratadi. Masalan yuqorida qo'llanilgan char tipidagi m massivini e'lon qilaylik.

char m[4];

Bu yerdagi 4 soni massivdagi elementlar miqdorini bildiradi. Bir necha massivni e'londa bersak ham bo'ladi:

int m1[4], m2[99], k, l = 0;

Massiv elementlari dastur davomida initsalizatsiya qilishimiz mumkin, yoki boshlang'ich qiymatlarni e'lon vaqtida, {} qavslar ichida ham bersak bo'ladi. {} qavslardagagi qiymatlar massiv initsalizaytsiya ro'yhati deyiladi.

int n[5] = {3, 5, -33, 5, 90};

Yuqorida birinchi elementning qiymati 3, ikkinchiniki 5 ... ohirgi beshinchi element qiymati esa 90 bo'ldi. Boshqa misol:

double array[10] = {0.0, 0.4, 3.55};

Bu yerdagi massiv tipi double bo'ldi. Ushbu massiv 10 ta elementdan iboratdir. {} qavslar ichida esa faqat boshlangich uchta element qiymatlari berildi. Bunday holda, qolgan elementlar avtomatik tarzda nolga tenglashtiriladi. Bu yerda aytib o'tishimiz kerakki, {} qavslar ichida berilgan boshlangish qiymatlar soni massivdagi elementlar sonidan katta bo'lsa, sintaksis hatosi vujudga keladi. Masalan:

char k[3] = {3, 4, 6, -66, 34, 90}; // Hato!

Uch elementdan iborat massivga 6 dona boshlangich qiymat berilyapti, bu hatodir. Boshqa misolni ko'rib chiqaylik:

int w[] = {3, 7, 90, 78};

w nomli massiv e'lon qilindi, lekin [] qavslar ichida massivdagi elementlar soni berilmadi. Bunday holda necha elementga joy ajratishni kompilyator {} qavslar ichidagi boshlangich qiymatlar miqdoriga qarab biladi. Demak, yuqoridagi misolda w massivimiz 4 dona elementdan iborat bo'ladi.

E'lon davridagi massiv initsalizatsiya ro'yhati dastur ijrosi vaqtidagi initsalizatsiyadan ko'ra tezroq ishlaydigan mashina kodini vujudga keltiradi.



    1. Х(N) массив элементлари орасидан М=махX – minX қийматдан катта бўлган элементлар йиғиндисини ҳисобланг.

#include

#include

#include

using namespace std;

int main()

{

srand(time(0));



int n;

n=rand()%20;

int arr[n];

for(int i=0;i

{

arr[i]=rand()%10-5;



cout<

}

int min,max;



min=arr[0];

max=arr[0];

for (int i=0;i

{

if (min>arr[i])



min=arr[i];

if (max

max=arr[i];

}

cout<<"\t min="<






2.1. Сонли рақам, кирилл ёки лотин ҳарф C белги берилган. Агар C белги сонли рақам бўлса «digit», агар лотин ҳарф – «lotin», агар кирилл харф – «kiril» сўзларни экранга чиқариш дастурини тузинг.

#include
using namespace std;

int main()

{

char C;


cin>>C;

if (C>='A'&&C<='Z'||C>='a'&&C<='z') cout<<"lotin";

if (C>='À'&&C<='ß'||C>='à'&&C<='ÿ') cout<<"kiril";

if (C>='0'&&C<='9') cout<<"digit";

main();

}






Иккита массив берилган X(N) ва Y(K). X ва Y массивларининг мусбат элементлардан Z массив шаклантиринг. Z массивнинг максимал қиймтини ва ўрнини аниқланг.


#include

#include

#include

using namespace std;

int main()

{

srand(time(0));



int k,n;

k=rand()%20+1;

n=rand()%20+1;

int x[n],y[k];

int c=0;

cout<<"X[N] massiv: ";

for (int i=0;i

{

x[i]=rand()%20-8;



cout<

if(x[i]>0) c++;

}

cout<

for (int i=0;i

{

y[i]=rand()%20-10;



cout<

if(y[i]>0) c++;

}


int z[c];



int cc=0;

for (int i=0;i

{

if (x[i]>0) {z[cc]=x[i];cc++;}



}

for (int i=0;i

{

if (y[i]>0) {z[cc]=y[i];cc++;}



}

cout<

int max=z[0];

for (int i=0;i

{

cout<

if (max

}

cout<

for (int i=0;i {

if (z[i]==max) cout<

}

return 0;



}






Массивдаги туб сонларни ва индексларини экранга чиқаринг


#include

#include

#include
using namespace std;

bool tub(int n)

{

bool prime;



if (n<=1) {prime=false; goto off;}

if (n==2||n==3) {

prime=true;

goto off;

}

for (int i=2;i

{

if (n%i==0)

{

prime=false;goto off;



}

else prime=true;

}

off:return prime;



}

int main()

{

cout<

srand(time(0));

int k;


k=rand()%20+5;

int arr[k];

cout<<"Massiv elementlari: ";

for (int i=0;i

{

arr[i]=rand()%20-7;



cout<

}

cout<

for (int i=0;i

{

if (tub(arr[i])) cout<

}

return 0;



}





Сатр берилган. Сатрдаги кичик лотин ва кирилл ҳарфларининг умумий сонини аниқловчи дастур тузинг.


#include

#include


using namespace std;

int lk(char k)

{

int d=0;


if (k>='à'&&k<='ÿ') d=1;

if (k>='a'&&k<='z') d=1;

return d;

}

int main()SSssa



{

string matn;

getline(cin,matn);

cout<

char k;

int count=0;

for (int i=0;i

{

k=matn[i];count+=lk(k);


}
cout<<"Matnda kichik lotin kiril harflar soni "<

return 0;



}


Xulosa


Ushbu labaratoriya ishida massivlar va ular ustida amallar bajarish satrlar va ular bilan ishlash ko’nikmasini takrorlab oldim. Massivlarning statik ko’rinishi bu avvaldan belgilab qo’yilgan massivlar ustida ishlashdir. Bundan tashqari tub sonni aniqlash funksiyasidan foydalanib massivdan bunday elementlarni qidirish jarayonlari kabi masalalarni hal qilib bilimlarimni mustahkamlab oldim. Bu labaratoriyadan massivlar mavzusini yana bir marta mustahkamlab oldim.
Download 205.2 Kb.

Do'stlaringiz bilan baham:




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