C++ tilida funksiyalar, strukturalar va birlashmalar
Struktura haqidagi ma'lumotni kiriting
Download 0.88 Mb.
|
C TILIDA FUNKSIYALAR, STRUKTURALAR VA BIRLASHMALAR
- Bu sahifa navigatsiya:
- Ruyhatlar bilan ishlashda rekursiyadan foydalanish.
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. 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 Download 0.88 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling