1 – dars. C++ Dasturlash tilining kelib chiqishi xaqida ma’lumot


Struktura haqidagi ma'lumotni kiriting



Yüklə 0,69 Mb.
səhifə88/121
tarix02.01.2022
ölçüsü0,69 Mb.
#37187
1   ...   84   85   86   87   88   89   90   91   ...   121
aaaaKitob majmuasiiii

Struktura haqidagi ma'lumotni kiriting:

Sign=sigma

Weight=16

Sign=omega

Weight=44

Sign=alfa

Weight=0

Ruyhatni chiqarish

Sign=sigma weight=16

Sign=omega weight=44
Dasturda ma'lumotlarni kiritish tsikl orqali bajariladi. Tsikl tugatilishi sharti navbatdagi strukturaning int weight elementiga kiritilgan nol qiymatdir.

Strukturalar ro’yhati dinamik tashkil etiladi. Beg va end ko’rsatkichlar nol qiymati orqali initsializatsiya qilingan. Dasturda (struct cell*) tip o’zgartirishidan foydalanilgan chunki malloc funktsiyasi har doim void tipidagi ko’rsatkich qaytaradi.


66 - DARS. RUYHATLAR BILAN ISHLASHDA REKURSIYADAN FOYDALANISH.
Ruyhatning har bir buginida ma'lumot va keyingi element adresi joylashgan.Agar bu ko’rsatkich nol qiymatga ega bo’lsa ro’yhat ohirigacha o’qib bo’lingan. Ruyhatni kurib chiqishni boshlash uchun birinchi elementining adresini bilish etarlidir. Ruyhatni yaratish rekursiv funktsiyasi va ruyhatning elementlarini ekranga chiqarish rekursiv funktsiyasini kurib chiqamiz. Ruyhatni rekursiv tuldirish funktsiyasi quyidagi prototipga ega:

Struct cell* input(void);

Bu funktsiya klaviatura orqali kiritilgan ma'lumotlar bilan to’ldirilgan ro’yhatga ko’rsatkich qaytaradi. Funktsiyaga har gal murojaat qilinganda yangi ruyhat yaratiladi. Agar ruyhatning navbatdagi strukturasining weight o’zgaruvchisiga nol qiymat berilsa funktsiya o’z ishini to’htatadi. Aks holda klaviatura orqali tuldirilgan struktura ruyhatga ulanadi va uning struct cell*pc elementining qiymati funktsiya tanasidan rekursiv chaqirilgan input() funktsiyasi qaytargan qiymatga teng bo’ladi.

Funktsiya tanasi:

Struct cell

{

char sign[10];



int weight;

struct cell*pc;

};

#include



#include

struct cell * input(void)

{

struct cell*p;



p=(struct cell*) malloc(sizeof(struct sell));

printf(“sign=”);

scanf(“%s”,&p->weight);

if (p->weight==0)

{

free(p);


return NULL;

}

p->pc=input();



return p;

/* */
void output(struct cell * p)

{

if (p==NULL)



{

printf(“\nRuyhat tugadi”);

return;

}

printf(“\nsign=%s\tweight=%d”,p->sign,p->weight);



output(p->pc);

}

void main()



{

struct cell * beg=NULL;

printf(“\Ruyhat elementlarini kiriting:\n”);

beg=input();

printf(“\n Ruyhatni chikarish:”);

output(beg);

}
Dastur bajarilishiga misol:
Ruyhat elementlarini kiriting:

Sign=Zoro

Weight=1938

Sign=Zodiac

Weight=1812

Sign=0


Weight=0
Ro’yhatni chiqarish:

Sign=Zoro weight=1938

Sign=Zodiac weight=1812

Ruyhat tugadi





Yüklə 0,69 Mb.

Dostları ilə paylaş:
1   ...   84   85   86   87   88   89   90   91   ...   121




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin