C++ proqramlaşdırma dİlİ 19. 12. 2011



Yüklə 0,74 Mb.
səhifə5/11
tarix17.11.2018
ölçüsü0,74 Mb.
#80411
növüNümunə proqram
1   2   3   4   5   6   7   8   9   10   11

+Çalışmalar:

  1. Funksiyalardan istfadə etməklə iki ədədin maksimumunu hesablayan proqram tətrib edin.

2. Elə funksiya qurun ki, istifadəçidən 10 tam ədəd daxil etməsini istəsin və onların cəmini qaytarsın. Bu funksiyadan istifadə etməklə proqram qurun və onu icra edin.

3. kvadrat adlı elə funksiya tərtib edin ki, ekranda * simvollarından ibarət, tərəflərinin

uzunluğu 10 olan, kvadrat çəksin (iзini doldurmaqla). kvadrat funksiyasından istfadə etməklə proqram qurub icra edin.

4. Çalışma 3-dəki kvadrat funksiyasını elə dəyişin ki, tərəflərinin sayı və təşkil olunduğu

simvol bu funksiyaya parametr kimi цtьrьlsьn. Bu funksiyadan istifadə etməklə elə proqram

qurun ki, istifadəзidən hər hansı simvol və ədəd daxil etməsini istəsin, daha sonra isə

ekranda həmin parametrlərə uyğun kvadrat зəksin.

5. Зalışma 4-dəki funksiyanı elə dəyişin ki, istifadəзi kvadratın iзinin rəngləndiyi simvolu da

daxil edə bilsin. Bu funksiyadan istifadə etməklə proqram tərtib edib, icra edin.

6. Зalışma 5-in tələblərini yerinə yetirən romb funksiyası qurun, hansı ki, ekranda romb

зəksin. Bu funksiyadan istifadə edib proqram tərtib edin və icra edin.

7. Зalışma 5-in tələblərini yerinə yetirən ucbucaq funksiyası qurun, hansı ki, ekranda

ucbucaq зəksin. Bu funksiyadan istifadə edib proqram tərtib edin və icra edin.

8. Kvadrat, romb və ucbucaq funksiyalarından istifadə etməklə elə proqram tərtib edin ki,

əvvəl istifadəзidən tərəfin uzunluğun, tərəfin və fiqurun daxilin rəngləmək ьзьn simvolları

daxil etməyi istəsin. Daha sonra istifadəзidən 1,2 və 3 rəqəmlərindən birini daxil etməyini

istəsin. Əgər istifadəзi 1 daxil edərsə onda ekranda kvadrat, 2 daxil edərsə romb, 3 daxil

edərsə ucbucaq зəksin.

9.(*) Зalışma 8-i elə dəyişin ki, proqram istidəзidən fiqurun tərəfinin uzunluğunu və rəng

simvoları daxil etdikdən sonra istədiyi fiqurun зəkilməsi ьзьn 1,2,3 simvollarından birini daxil

etməsini istəsin. Bu prosesi istifadəзi 0 rəqəmi daxil edənə kimi təkrar eləsin. Bu zaman

proqramın istifadəзidən tərəfin uzunluğu və rəng simvollarını qəbul edən hissəsini də ayrı bir

funksiya kimi tərtib edin.



$6 Cərgələr və ya Massivlər.

İndiyə kimi biz baxdığımız nümunə proqramlarda elə də çox sayda dəyişəndən istifadə

etmirdik. 1,2 və ya 3 dəyişən maksimum halda. Aydındır ki, bütün bunlar nümunə

proqramlardır və materialı izah etmək üçün verilir.Real tətbiqi proqramlar isə 10 000 -lərlə və ya 100 000 -lərlə müxtəlif məlumatlar üzərində əməliyyatlar aparmalı olur.

Sadə misala baxaq:

Tutaq ki, univeristetdə bu il bütün fakultələr üzrə təhsil alan tələbələrin, bütün fənlər üzrə qış imtahanlarının yekun nəticələrinin orta qiymətini hesablamaq lazımdır.Əgər universitetdə 6000 tələbə, 5 fəndən imtahan veribsə bu 30 000 imtahan nəticəsi deməkdir.Başqa sözlə bu proqramı qurmaq üçün biz 30 000 dənə dəyişən elan etməliyik, hansı ki, praktiki olaraq mümkün deyil (əlbəttdə mümkündür, amma heç kim bu işi görməz).

Bu zaman cərgələrdən istifadə olunur.

Cərgə elan edən zaman yaddaşda biz lazım olan sayda dəyişən (10, 5000, 100 000 )

yerləşdirmək üçün sahə ayırırıq və bu sahəyə bütövlükdə bir ad veririk.Dəyişənlər bu

sahəyə ardıcıl düzülür, cərgə şəkilində.Daha sonra bu cərgədən istənilən elementə müraciət etmək üçün həmin sahəyə verdiyimiz addan və həmin dəyişənin indeksindən (cərgədəki sıra nömrəsindən) istifadə edirik.

Cərgədə dəyişənlərin nömrələnməsi 0 -dan başlayır, yəni cərgənin ilk elementinə müraciət eləmək üçün cərgənin adı və 0 indeksindən istifadə olunur. Cərgə elan eləmək üçün aşağıdakı çox sadə sintaksisdən istifadə edirik:

tip cərgənin_adı [elementlərin_sayı];

Misal üçün int tipli 100 elementdən ibarət netice adlı cərgə elan etmək üçün yazırıq:



int netice[100];

Yaddaşa nəzər salaq:

Eyni sətirdə biz həm də adi dəyişən və ünvan dəyişəni elan edə bilərik:

int x, netice[100], *dey;

6.1 Cərgənin elementlərinə müraciət

Qeyd elədik ki, cərgənin elementlərinə müraciət etmək üçün cərgənin adı və müraciət etmək istədiyimiz elementin indeksindən istifadə edirik.

Aşağıdakı kimi:

cergenin_adı[index];

Misala baxaq :

int x, y[10], *dey;

// y cergesinin 1-ci elementine (indeks -0) 127 qiymeti menimsedek

y[0] = 127;



// y cergesinin 2-ci elementine (indeks -1) 600 qiymeti menimsedek

y[1] = 600;



// x -e y cergesinin 2-ci elementini menimsedek

x = y[1];

Göründüyü kimi cərgələrlə işləmək kifayət qədər maraqlı və asandır.

Proqram nümunəsi:

Cərgədən istifadə etməklə , elə proqram tərtib edək ki, istifadəçidən 10 ədəd daxil etməsini xahiş etsin, daha sonra bu 10 ədədin cəmini hesablasın.



//prg_6_1.cpp

#include

int main(int argc, char *argv[])

{ int cem,x[10],z,i;

std::cout<<"10 dene eded daxil edin \n";

// cergenin elementlerinin daxil edilmesi

for(i=0; i<10; ++i)

std::cin>>x[i];



// cergenin elementlerinin ceminin hesablanmasi

// evvelce cem -deyishenin 0-ra menimsedirik

cem = 0;


for(i=0; i<10; ++i)

cem = cem + x[i];

std::cout<<"daxil etdiyiniz ededlerin cemi = "<
return 0;

}

Proqramı icra edək:



C:\cpp\prog2\Debug>

C:\cpp\prog2\Debug>prog2.exe

10 dene eded daxil edin

1 23 4 56 7 78 9 7 234 6

daxil etdiyiniz ededlerin cemi = 425

C:\cpp\prog2\Debug>

C:\cpp\prog2\Debug>

6.2 Cərgələrin elan olunma qaydaları

Cərgələr aşağıdakı kimi elan oluna bilər:

Birinci qayda:

int x[10];

İkinci qayda:



int x[ ]={1,2,3,4,5,6,7,8,9,10};

Bu zaman cərgənin elementlərinin sayı [] mötərəzələri arasında verilmir, onun təşkil

olunduğu elementlər {} mötərəzələri arasında göstərilir, vergüllə ayrılaraq.

6.3 Cərgələri ilə ünvan dəyişənləri arasında əlaqə

C++ dili ünvan dəyişənlərini çox sevir və hər şeyi onunla əlaqələndirməyə çalışır.Bu da

səbəsiz deyil, ilk əvvəllər bir az çətin gəlsə də, ünvan dəyişənləri çox praktikdirlər.Cərgələr ilə ünvan dəyişənləri bir biri ilə çox əlaqəlidir və onların bu əlaqəsindən proqramlaşdırmada geniş isitfadə olunur.

C++ dilində cərgənin adı onun ilk elementinə istinad edən ünvan tipli dəyişəndir.

Aşağıdakı kimi adi dəyişən, ünvan dəyişəni və cərgə elan edək, onların əlaqələrini izah

etməyə çalışaq.(x-adi dəyişən,*y-ünvan dəyişəni, z[10] –cərgə)



int x, *y, z[10];

z yalnız ilk elementə (z[0] -a) istinad edir və ayrı yerə ünvanlana bilməz.Bu deyilənə əsasən z cərgəsinin ilk elementinə z[0] -dən başqa aşağıdakı kimi də müraciət etmək olar:

*z;

Yəni adi x dəyişəninə z -in ilk elementini aşağıdakı iki yolla mənimsədə bilərik:



x = z[0]; və ya x = *z;

Ancaq ilk elementə əlbəttdə ki;

Digər tərəfdən z ünvan tipli dəyişən oluğundan və özündə cərgənin ilk elementinin ünvanını saxladığından, mən y = z; yazsam onda y -də z cərgəsinin ilk elementinə istinad edəcək.Əgər mən y -i cərgənin ikinci elementi üzərinə sürüşdьrmək istəyirəmsə onda yazıram:

y = y + 1; və ya y = z + 1;

Beləliklə y-i cərgənin ilk elementinə mənimsətməklə və onun üzərində artırma və azaltma əməlləri aparmaqla onu cərgənin elementləri boyu yuxarı - aşağı sürüşdürmək olar.



6.4 Cərgələrin funksiyaya parametr kimi ötürülməsi

Cərgələr funksiyaya parametr kimi ötьrülə bilər. C++ dilində cərgələr funksiyaya ancaq bir yolla, ünvana görə ötьrülə bilər.Tutaq ki, aşağıdakı kimi x cərgəsi elan etmişik.



int x[10];

Əgər hər hansı funk funksiyasına x cərgəsini parametr kimi ötürmək istəyiriksə, onda funk –da ünvan tipli parametr elan etməliyik.



int funk(int *);

ünvan dəyişənlərində olduğu kimi (cərgənin adının ünvan tipli dəyişən olması elə buradan da görünür, eyni elan ilə funksiyaya biz həm ünvan tipli dəyişən ötürə bilərik, həm də cərgə).Daha sonra x -i funk -a parametr kimi ötürmək istəsək, sadəcə funk(x); yazırıq.



Proqram nümunələri:

Proqram 1. eks.c

Elə proqram tərtib edək ki, istifadəзinin daxil etdiyi rəqəmləri əks sıra ilə çap etsin:

//prg_6_2.cpp

#include

int main(int argc, char *argv[])

{ int i, x[100], say;

std::cout<<"100 -den kicik her hansi bir eded daxil edin \n";

std::cin>>say;

std::cout<
for (i=0; i

std::cin>>x[i];

std::cout<<"sizin daxil etdiyiniz ededler eks siyahida \n";

for (i=(say-1); i>=0; i--)

std::cout<

std::cout<<"\n";

return 0;

}

Proqramı kompilyasiya edib icra edək:



C:\cpp\prog2\Debug>prog2.exe

100 -den kicik her hansi bir eded daxil edin > 0

6

6 sayda eded daxil edin

1 2 3 4 5 6

sizin daxil etdiyiniz edeler eks siyahida

6 5 4 3 2 1

C:\cpp\prog2\Debug>

C:\cpp\prog2\Debug>

Proqram 2. max.c

Cərgələrdən istifadə edib ele proqram quraq ki, verilmiş sayda ədələrin içindən ən böyüyünü

tapsın.

// prg_6_3.cpp

#include

int main(int argc, char *argv[])

{ int i, x[100], say, max;

std::cout<<"100 -den kicik her hansi bir eded daxil edin \n";

std::cin>>say;

std::cout<
for (i=0; i

std::cin>>x[i];

max = 0;

for (i=0; i
if (x[i] > max) max = x[i];

std::cout<<"sizin daxil etdiyiniz ededlerin icinde en boyuyu "



<
return 0;

}

Nəticə:



C:\cpp\prog2\Debug>

C:\cpp\prog2\Debug>prog2.exe

100 -den kicik her hansi bir eded daxil edin

7

7 sayda eded daxil edin

1 23 45 678 2 321 89

sizin daxil etdiyiniz ededlerin icinde en boyuyu 678 - dir

C:\cpp\prog2\Debug>

C:\cpp\prog2\Debug>

Proqram 3. max_func.c

Proqram 2 -ni funksiyadan istifad ə etməklə tərtib edək.



// prg_6_4.cpp

#include

int max_eded(int *, int);

int main(int argc, char *argv[])

{ int i, x[100], say, max;

std::cout<<"100 -den kicik her hansi bir eded daxil edin \n";

std::cin>>say;

std::cout<

for (i=0; istd::cin >>x[i];

max = max_eded(x,say);

std::cout<<"sizin daxil etdiyiniz ededlerin icinde en boyuyu "



<
return 0;

}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

int max_eded(int *x, int say)

{ int net,i;

net = 0;

for (i=0; i
if (x[i] >net) net = x[i];

return net;

}

Nəticə:



C:\cpp\prog2\Debug>

C:\cpp\prog2\Debug>prog2.exe

100 -den kicik her hansi bir eded daxil edin

5

5 sayda eded daxil edin

23 456 7 89 0

sizin daxil etdiyiniz ededlerin icinde en boyuyu 456 - dir

C:\cpp\prog2\Debug>

C:\cpp\prog2\Debug>

Зalışmlar

1. max proqramını ele dəyişin ki, istifadəзinin daxil etdiyi ədələrin iзində ən kiзiyini tapsın.

2.(*) Elə proqram qurun ki, istifadəзinin daxil etdiyi ədədləri artan sıra ilə dьzsьn.

3. Elə proqram qurun ki, istifadəзinin daxil etdiyi ədədləri azalan sıra ilə dьzsьn.

4. Elə funksiya tərtib edin ki, verilmiş cərgənin elementləri arasında ən bцyьyьnь tapsın. Bu

funksiyadan istifadə edərək proqram tərtib edin ki, istifadəзidən əvvəl say, daha sonra bu

say qədər hər-hansı ədəd daxil etməsini istəsin və bu ədədlərin ən bцyьyьnь зap etsin.

5. 4 - cı proqramı elə dəyişin ki, istifadəзi say olaraq 0 daxil edənə kimi proqram təkrar

olunsun.

6. Elə funksiya qurun ki, verilmiş siyahının elementlərini artan sıra ilə dьzsьn. Bu funksiyadan

istifadə etməklə elə proqram qurun ki, istifadəзidən əvvəlcə say, daha sonra bu say qədər

d d daxil etm sini ist sin. Daha sonra proqram istifad зinin daxil ə ə ə ə ə etdiyi ədədləri artan sıra

ilə dьzsьn.

7. 6 - ci proqramı elə dəyişin ki, istifadəзi say olaraq 0 daxil edənə kimi proqram təkrar

olunsun.

8.(*) Verilmiş cərgənin elementlərini artan və azalan sırada dьzən art və azl funksiyalarını

tərtib edin. Daha sonra bu funksiyalardan istifadə edərək elə proqram qurun ki, istifadəзidən

əvvəl say, daha sonra bu say qədər ədəd daxil etməsini istəsin.

Daha sonra istifadəзiyə seзim olaraq 1 və ya 2 rəqəmi daxil etməsini təklif etsin. Əgər

istifadəзi 1 rəqəmini daxil edərsə onda ədədləri artan sırada, 2 daxil edərsə ədədləri azalan

sırada зap eləsin.

9. 8 -ci proqramı elə dəyişin ki, istifadəзi proqramdan зıxmadan ondan bir neзə dəfə istifadə

edə bilsin. 7-ci proqramdakı kimi.


$7 Sətirlər

Sətirlər cərgələrin xьsusi halıdır. Cərgə elementlərinin tipinin char olduğu hal. char tipi simvol

tipi adlanır. Başqa sцzlə sətirlər simvollar cərgəsidir. Sətirlərin tətbiq sahəsi зox genişdir,

həm nьvədə, həm də istifadəзi proqramlaşdırmasında sətirlərdən зox geniş istifadə olunur.

Elementlərinin hər biri 1 bayt yer tutduğuna gцrə mьxtəlif məqsədlər ьзьn yaddaşda

istənilən цlзьlь yer ayırmaq lazım olanda həmin цlзьlь sətir elan edib bu sətirdən bufer kimi

istifadə edə bilərik. İstənilən məlumat baytlar ardıcıllığı olduğundan, sətir kimi elan etdiyimiz

yerə istənilən məlumat yaza bilərik.

Proqramda sətir elan etmənin 2 yolu var: char tipindən olan ьnvan dəyişəni və ya cərgə elan

etməklə.


Aşağıdakı kimi:

char setir1[100], *setir2;

Burada bizim ьзьn yeni heзnə yoxdu, bildiyimiz cərgə və ьnvan dəyişəni elan etmişik.

Sadəcə tip char olduğundan sətirlər ьзьn bir neзə standart funksiya təyin edilmişdir. Bu

funksiyalardan istifadə edə bilmək ьзьn string.h faylını proqrama əlavə etməliyik.



7.1 Sətirlərə qiymətlərin mənimsədilməsi

Sətirlərə qiymətlər mьxtəlif yollarla mənimsədilir: Adi biz bildiyimiz cərgənin hər bir

elementinə qiymət mənimsətmə yolu ən az istifadə olunandır. Misal ьзьn, 20 simvoldan

ibarət sətir elan edək, daha sonra bu sətrə "Azerbaycan" sцzьnь yerləşdirək. Qeyd eliyirəm

bir daha ki, bu qayda ilə sətrə qiymət mənimsədilmir, birazdan bunun asan qaydasını

gцstərəcəyik. Sadəcə sətirlərlə cərgələrin əlaqəsini gцstərmək ьзьn bu misalı veririk.

char set[20];

set[0] = 'A';

set[1] = 'z';

set[2] = 'e';

set[3] = 'r';

set[4] = 'b';

set[5] = 'a';

set[6] = 'y';

set[7] = 'c';

set[8] = 'a';

set[9] = 'n';

set[10] = '\0';

Bu nьmunədə sətrin sonuncu elementinə mənimsətdiyimiz '\0' simvolu xьsusi simvoldur və

sətirlərin sonunu bildirmək ьзьn istifadə olunur. Aşağıda daxil edəcəyimiz sətir funksiyaları

sətrin sonunu bu simvola gцrə təyin edir. Beləki sətir funksiyaları sətirdə '\0' simvoluna rast

gəldikləri yerdən sətrin qalan hissəsini inkar edirlər.

Bu misalda sətirlərin adi char tipindən olan cərgə olmaları aydın gцrьlьr. Yuxarıdakı set

sətrinə "Azerbaycan" sцzьnь biz asanlıqla elanda



char set[]="Azerbaycan";

kimi də mənimsədə bilərdik. Amma bu da sətirlərə qiymət mənimsətmək ьзьn əsas qayda

deyil.

strcpy() funksiyası

Sətirlərə qiymət mənimsətmək ьзьn ən əsas istifadə olunan funksiya strcpy() funksiyasıdır.

Bu yerdə sizin diqqətinizə xьsusi bir məsələni mьtləq зatdırmalıyam. Şəbəkə hьcumlarının

geniş yayılmış mьxtəlif nцvləri var. Bunlara DoS(Denial of Service - Xidmətdən imtina),Buffer

Oveflow (buferi daşırmaq) v dig ə ərlərini misal gцstərmək olar.

C++ dilində yazılmış proqramların zəif tərəflərindən biri strcpy() funksiyasıdır. Beləki, pis

məqsədli hər kimsə, strcpy() funksiyasına parametr olaraq bцyьk olзьlь sətir verə bilər.

Nəticədə strcpy() həmin sətri gцstərilən ьnvandan proqramın daxilinə kцзьrəndə proqramın

bьtьn ehtiyat yaddaşın doldurar və nəticədə proqram dayanmağa məcbur olar.Зıxış yolu

strcpy() əvəzinə strncpy() finksiyasından istifadə etməkdir.

strncpy() funksiyası verilmiş ьnvandan ən зoxu verilmiş sayda simvol kцзьrməyə icazə verir.

Sadə məsələlərdə strcpy() -dən istifadə edə bilərsiniz, amma ciddi proyektlərdə mьtləq



strncpy() -dən istifadə etmək lazımdır.

strcpy() funksiyasının sintaksisi aşağıdakı kimidir:

char * strcpy(char *menseb, char *menbe);

Burada menbe kцзьrьləcək sətrin ьnvanı, menseb sətri kцзьrmək istədiyimiz ьnvandır.

Proqram nьmunəsi:

// prg_7_1.cpp

#include

#include

int main()

{ //15 simvoldan ibaret setir elan edirik

char set[15];

strcpy(set,"Ekvator");

std::cout<

return 0;

}

strlen() fuksiaysı.



int strlen(char *s);

Bu funksiya s sətrində olan simvolların (baytların) sayını qaytarır. '\0' simvolunu hesaba almır.



strncpy() fuksiaysı.

char * strncpy(char *s1, char *s2, int n);

s2 sətrinin ilk n elementini s1-ə kцзьrьr(s1-in əvvəlindən başlayaraq).

Qeyd: bu funksiya sətrin sonuna '\0' simvolunu yazmır.



strcmp() fuksiaysı.

int strcmp(char *s1, char *s2);

Bu funksiyadan sətirlərin mьqaisəsi ьзьn istifadə edirlər. Əgər s1 sətri s2 sətri ilə eynidirsə onda funksiya 0 qiymətini qaytarır. Əgər s1-in elementlərinin sayı s2-dən azdırsa onda <0 əks

halda >0 qiymətini qaytarır.

strcat() fuksiaysı.

char * strcat (char *s1, char *s2);

Bu funksiya s1-in sonuna s2-ni əlavə edir.



Proqram nьmunələri:

Proqram 1:

İstifadəзinin daxil etdiyi sətrin uzunluğunu ekranda зap edən proqram tərtib edək.



// prg_7_2.cpp

#include

#include

int main()

{

char set[1024];



int k;

std::cout<<"Zehmet olamsa her hansi setir daxil edin \n";

std::cin>>set;

k = strlen(set);

std::cout<<"Sizin daxil etdiyiniz setrin simvollarinin sayi "

<
return 0;

}

Proqramı icra edək:



C:\cpp\prog2\Debug>

C:\cpp\prog2\Debug>./prog2.exe

Zehmet olamsa her hansi setir daxil edin

Olimpiada

Sizin daxil etdiyiniz setrin simvollarinin sayi 9

C:\cpp\prog2\Debug>

C:\cpp\prog2\Debug>

Proqram 2.

Elə proqram qurun ki, istifadəзinin daxil etdiyi sətrin 10-cu simvolundan başlayaraq yerdə

qalan hissəsini зap etsin. Əgər sətrin uzunluğu 10-dan kiзikdirsə onda proqram ekranda

bьtцv sətri зap etsin.



// prg_7_3.cpp

#include

#include

int main(){

char set[1024];

int k;


std::cout<<"Zehmet olamsa her hansi setir daxil edin \n";

std::cin>>set;

k = strlen(set);

if (k<10)

std::cout<

else

{

char *p = set;



p+=10;

std::cout<

} return 0;

}

Proqramı icra edək:



C:\cpp\prog2\Debug>

C:\cpp\prog2\Debug>./prog2.exe

Zehmet olamsa her hansi setir daxil edin

SerguzeshtiVeziriXaniLenkeran

iVeziriXaniLenkeran

C:\cpp\prog2\Debug>

C:\cpp\prog2\Debug>

Зalışmalar:

1. Elə proqram qurun ki, istifadəзinin daxil etdiyi sətrin 5-ci simvolu ilə 15-ci simvolu arasında qalan hissəsini çap etsin. Əgər sətrin uzunluğu 20-dən kiзik olarsa onda ekranda bu barədə

məlumat çap etsin.

2. Elə proqram tərtib edin ki, istifadəзidən 6 sətir qəbul etsin və bu sətirləri ardıcıl

birləşdirərək tam sətir kimi зap etsin.

3.* Elə proqram tərtib edin ki, istifadəзidən 5 sətir qəbul etsin və bu sətirləri daxil olma

sırasının əksi ardıcıllığında birləşdirərək tam sətir kimi зap etsin.

4.* Elə proqram tərtib edin ki, istifadəзidən 5 sətir qəbul etsin və bu sətirləri uzunluqlarının

artma ardıcıllığı ilə alt-alta зap etsin.

$8 Structur tiplər.

İndiyə qədər biz dəyişən elan edərkən int, double, char, long kimi standart tiplərdən istifadə

edirdirk. Əlbətdə bu tiplər зox əlverişlidir, lakin зox vaxt məsələnin şərtinə uyğun olaraq

proqramзının цzь yaratdığı tiplərdən istifadə etmək lazım gəlir. Bu zaman strukt stiplərdən

və ya siniflərdən istifadə olunur. Strukt tipi bizə bir neзə mьxtəlif tipdən olan dəyişəni bir ad

altında birləşdirməyə imkan verir.

Yeni struct tipi təyin etmək ьзьn sintaksis aşağıdakı kimidir.

struct yeni_tip {

tip1 dey1;

tip2 dey2;

tip3 dey3;

.. tipk deyn; };

Bu zaman biz yeni_tip adlı tip yaratmış oluruq, hansı ki, цzьndə tip1, tip2 v.s. tiplərdən olan

dəyişənləri saxlayır. Bu elandan sonra artıq biz standart tiplərdə olduğu kimi dəyişən elan

edə bilərik.

Aşağıdakı kimi:

yeni_tip st1;

Bu elanda biz yeni yaratmış olduğumuz yeni_tip strukt tipindən st1 adlı dəyişən elan etdik.

Sadə nьmunəyə baxaq. Цzьndə int və char tipli dəyişənlər saxlayan str adlı yeni strukt tipi

yaradaq. Daha sonra bu tipdən dey adlı dəyişən elan edək.

struct str{

int x;


char c;

};

str dey;



Strukt tiplərinin tətbiqinə aid aşağıdakı kimi məsələyə baxaq. Tutaq ki hər-hansı zavodun

100 000 işзisi var. Bizdən tələb olunur ki, bu zavodun işзilərinin məlumatlar bazası

proqramını yazaq. Hər bir işзi haqqında onun adı, soyadı, yaşı, maaşı, vəzifəsi barədə

məlumatlar qeyd edilməlidir. Bunun ьзьn yeni struct tipi təyin edək.

Məsələmizə uyğun təyin etməli olduğumuz yeni tip belə olar. Gəlin bu yeni yaradacağımız

tipə ishci adını verək.



struct ishci {

int yash;

char ad[12];

char soyad[20];

Yüklə 0,74 Mb.

Dostları ilə paylaş:
1   2   3   4   5   6   7   8   9   10   11




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

    Ana səhifə