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


Struktura haqidagi ma'lumotni kiriting



Download 4,47 Mb.
bet66/89
Sana15.04.2022
Hajmi4,47 Mb.
#553102
1   ...   62   63   64   65   66   67   68   69   ...   89
Bog'liq
C kitob TAYYOR

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



Download 4,47 Mb.

Do'stlaringiz bilan baham:
1   ...   62   63   64   65   66   67   68   69   ...   89




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

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish