Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Joqari darejeli programmalastiriwda C++ Last

.pdf
Скачиваний:
9
Добавлен:
03.12.2023
Размер:
2.03 Mб
Скачать

strukturası baylanısadı. Bul struktura hár bir ashılǵan fayl ushın usı jazıw ornın kórsetiwshi esaplaǵıshtı - fayl kórsetkishin sáykes qoyadı. Ádette, fayl ashılǵanda kórsetkish mánisi 0 boladı. Fayl ústinde orınlanǵan hár bir ámelden keyin kórsetkish mánisi oqılǵan yaki jazılǵan baytlar sanına artadı. Fayl kórsetkishin basqarıw funkciyaları - fseek(), ftell() hám rewind() funkciyaları fayl kórsetkishin ózgertiw, mánisin alıw imkanın beredi.

ftell() funkciyasınıń prototipi

long int ftell(FILE *stream);

kórinisinde anıqlanǵan bolıp, argumentte kórsetilgen fayl menen baylanısqan fayl kórsetkishi mánisin qaytaradı. Eger qátelik júz berse funkciya -1L mánisin qaytaradı.

int fseek(FILE *stream, long offset, int from);

prototipine iye bolǵan fseek() funkciyası stream faylı kórsetkishin from ornına salıstırmalı offset bayt aralıqqa jılıstırıwdı ámelge asıradı. Tekst rejimindegi aǵımlar ushın offset mánisi 0 yaki ftell() funkciyası qaytarǵan mánis bolıwı kerek. from parametri tómendegi mánislerdi qabıl etiwi múmkin:

SEEK_SET (=0) - fayl bası;

SEEK_CUR (=1) - fayl kórsetkishiniń sol waqıttaǵı mánisi;

SEEK_END (=2) - fayl aqırı.

Funkciya fayl kórsetkishi mánisin ózgertiw sátli bolsa, 0 mánisin, keri jaǵdayda nolden parıqlı mánis qaytaradı.

rewind() funkciyası

void rewind(FILE *stream);

prototipi menen anıqlanǵan bolıp, fayl kórsetkishin fayl baslanıwına alıp keledi. Tómende keltirilgen programmada binar fayl menen islew kórsetilgen.

#include <iostream.h>

#include <stdio.h>

#include <string.h>

struct Shaxs

{

char Familiya[20];

211

char Atı[15];

char Ákesiniń_atı[20];

};

int main()

{

int n, k;

cout << "Studentler sanın kiritiń: "; cin >> n;

FILE *aǵım1, *aǵım2;

Shaxs *shaxs1, *shaxs2, shaxsk; shaxs1 = new Shaxs[n];

shaxs2 = new Shaxs[n];

if((aǵım1 = fopen("Student.dat", "wb+")) == NULL)

{

cout << "Student.dat ashılmadı!!!";

return 1;

}

for(int i = 0; i < n; i++)

{

cout << i+1 << "-shaxs maǵlıwmatların kiritiń:\n"; cout << "Familiyası: ";

gets(shaxs1[i].Familiya); cout << "Atı: "; gets(shaxs1[i].Atı); cout<<"Ákesiniń_atı: "; gets(shaxs1[i].Ákesiniń_atı);

}

if(n == fwrite(shaxs1, sizeof(Shaxs), n, aǵım1))

cout << "Berilgenlerdi jazıw ámelge asırıldı!\n";

else

{

cout<<"Berilgenlerdi jazıw ámelge asırılmadı!\n"; return 3;

}

cout << "Fayl uzınlıǵı: " << ftell(aǵım1) << '\n'; fclose(aǵım1);

212

if((aǵım2 = fopen("Student.dat", "rb+")) == NULL)

{

cout << "Student.dat oqıwǵa ashılmadı!!!";

return 2;

}

if(n == fread(shaxs2, sizeof(Shaxs), n, aǵım2)) for(int i = 0; i < n; i++)

{

cout << i+1 << "-shaxs maglıwmatları:\n"; cout<<"Familiyası: "<<shaxs2[i].Familiya<<'\n'; cout<<"Atı: "<<shaxs2[i].Atı<<'\n'; cout<<"Ákesiniń_atı:"<<shaxs2[i].Ákesiniń_atı; cout<<"\n****************************\n";

}

else

{

cout << "Fayldan oqıw ámelge asırılmadı!\n"; return 4;

}

do

{

cout << "Jazıw nomerin kiritiń (1.." << n << "):"; cin >> k;

} while(k < 0 && k > n); k--;

cout << "Aldınǵı Familiya: ";

cout << shaxs2[k].Familiya << '\n'; cout << "Jańa Familiya: "; gets(shaxs2[k].Familiya);

if(fseek(aǵım2, k * sizeof(Shaxs), SEEK_SET))

{

cout << "Faylda" << k + 1;

cout << "-jazıwǵa ótiwde qátelik júz berdi???\n"; return 5;

}

213

fwrite(shaxs2 + k, sizeof(Shaxs), 1, aǵım2); fseek(aǵım2, k * sizeof(Shaxs), SEEK_SET); fread(&shaxsk, sizeof(Shaxs), 1, aǵım2); cout << k + 1 << "-shaxs maǵlıwmatları:\n";

cout << "Familiyası: " << shaxsk.Familiya << '\n'; cout << "Atı: " << shaxsk.Atı << '\n';

cout << "Ákesiniń_atı: " << shaxsk.Ákesiniń_atı <<'\n'; fclose(aǵım2);

delete shaxs1; delete shaxs2; return 0;

}

Joqarıda keltirilgen programmada, aldın «Student.dat» faylı binar fayl sıpatında jazıw ushın ashıladı hám ol aǵım1 ózgeriwshisi menen baylanısadı. Shaxs haqqındaǵı maǵlıwmattı saqlawshı n ólshemli dinamikalıqalıq shaxs1 strukturalar massivi aǵım1 faylına jazıladı, fayl uzınlıǵı baspaǵa shıǵarılıp fayl jabıladı. Keyin, tap usı fayl aǵım2 atı menen oqıw ushın ashıladı hám ondaǵı berilgenler shaxs2 strukturalar massivine oqıladı hám ekranǵa shıǵarıladı. Programmada fayldaǵı jazıwdı ózgertiw (qayta jazıw) ámelge asırılǵan. Ózgertiw isleniwi kerek bolǵan jazıw tártip nomeri paydalanıwshı tárepinen kiritiledi (k ózgeriwshisi) hám shaxs2 strukturalar massivindegi sáykes orındaǵı strukturanıń Familiya maydanı klaviaturadan kiritilgen taza qatar menen ózgertiriledi. aǵım2 fayl kórsetkishi fayl basınan k*sizeof(Shaxs) baytqa jılısadı hám shaxs2 massivtiń k - strukturası

(shaxs2+k) usı orınnan baslap faylǵa jazıladı. Keyin aǵım2 faylı kórsetkishi ózgertiw kiritilgen jazıw basına qaytarıladı hám bul jazıw shaxsk strukturasına oqıladı hámde ekranǵa baspaǵa shıǵarıladı.

Másele. Haqıyqıy sanlar jazılǵan f faylı berilgen. f fayldaǵı elementlerdiń orta arifmetiginen kishi bolǵan elementler muǵdarın аnıqlаń.

Máseleni sheshiw ushın f faylın jaratıw hám qaytadan onı oqıw ushın ashıw zárúr boladı. Jaratılǵan fayldıń bárshe elementleriniń qosındısı s ózgeriwshinde payda etiledi hám ol fayl elementleri sanına bólinedi. Keyin f fayl kórsetkishi fayl

214

basına alıp kеlinedi hám elementler qayta oqıladı hám s mánisinen kishi elementler sanı - k sanap barıladı.

Fayldı jaratıw hám ondaǵı orta arifmetiginen kishi sanlar muǵdarın anıqlawshı óz aldına funkciya kórinisinde anıqlaw múmkin.

Programma teksti:

#include <iostream.h> #include <stdio.h> #include <string.h> int Fayl_Jaratıw()

{

FILE *f; double x;

//f faylı jańadan jaratılıw ushın ashıladı if((f = fopen("Sanlar.dbl", "wb+")) == NULL)

return 0;

char *qatar = new char[10]; int n = 1;

do

{

cout << "Sandı kiritiń (bos qatar tamamlaw): "; gets(qatar);

if(strlen(qatar))

{

x = atof(qatar);

fwrite(&x, sizeof(double), n, f);

}

} while(strlen(qatar)); //qatar bos bolmasa, tákirarlaw fclose(f);

return 1;

}

int OAdan_Kishiler_Sanı() //OA – Orta Arifmetigi

{

FILE *f; double x;

215

f = fopen("Sanlar.dbl", "rb+");

double s = 0; //s - f fayl elementleri qosındısı while(!feof(f))

{

if(fread(&x, sizeof(double), 1, f)) s += x;

}

long sanlar_muǵdarı = ftell(f) / sizeof(double); s /= sanlar_muǵdarı; //s - orta аrifmetigi

cout << "Fayldaǵı sanlar orta arifmetigi=" << s <<endl; fseek(f, SEEK_SET, 0); //fayl basına kеlinsin

int k = 0;

while(fread(&x, sizeof(x), 1, f))

{

k+=(x<s);//orta arifmetikten kishi elementler sanı

}

fclose(f); return k; }

int main()

{

if(Fayl_Jaratıw())

{ cout << "Sanlar.dbl faylındaǵı\n";

int OA_kishi = OAdan_Kishiler_Sanı(); cout<<"Orta arifmetikten kishi sanlar muǵdarı="; cout << OA_kishi; }

else //f faylın jaratıw sátsiz boldı.

cout << "Fayldı ashıw imkani bolmadı!!!";

return 0; }

Programmada bas funkciyadan tısqarı eki funkciya anıqlanǵan:

int Fayl_Jaratıw() - diskte «Sanlar.dbl» atlı fayldı jaratadı. Eger fayldı jaratıw sátli bolsa, funkciya 1 mánisin, keri jaǵdayda 0 mánisin qaytaradı. Fayldı jaratıwda klaviaturadan sanlardıń qatar kórinisi oqıladı hám sanǵa aylandırılıp, faylǵa jazıladı. Eger bos qatar kiritilse, sanlardı kiritiw processi toqtatıladı hám fayl jabıladı;

216

int OAdan_Kishiler_Sanı() - disktegi «Sanlar.dbl» atlı faylı oqıw ushın ashıladı hám fayl elementleriniń s orta arifmetiginen kishi elementleri sanı k tabıladı hám funkciya nátiyjesi sıpatında qaytarıladı.

Bas funkciyada fayldı jaratıw sátli ótkenligi tekseriledi hám soǵan sáykes xabar beriledi.

217

Paydalanılǵan ádebiyatlar

1. Ш. А. Назиров., Р. В. Қобулов. «С++ тили асослари» ўқув қўлланма. /ТАТУ.

260 б. Тошкент, 2011

2.Мадрахимов Ш.Ф., Гайназаров С.М «С++программалаш асослари» услубий қўлланма. ЎзМУ. 196 б. Тошкент, 2009

3.Sh. A. Nazirov., R. V. Qobulov, M.R.Babajanov, Q.S.Rahmanov «C va C++ tili» o‘quv qo‘llanma. /TATU. 488 b. Toshkent, 2013

4.Культин Н. Б. C/C++ в задачах и примерах. — СПб.: БХВ-Петербург, 2005. -

288 с.

5. Романов Б.А. Практикум по программированию на С++: Учебное пособие.

СПб.: ВХВ-Петербург, Новосибирск: Из-во НГТУ, 2006.- 432с.

Internet resurları

1.http://dastur.uz/

2.http://itportal.uz/

3.http://iguania.ru/

4.http://purecodecpp.com/

5.http://acm.tuit.uz/

218

M A Z M U N Í

 

SÓZ BASÍ...................................................................................................................

4

I BAP. C++ TILI HÁM ONIŃ LEKSIKALIQ TIYKARI....................................

6

1.1. С++ tilinde programma dúzilisi hám onıń kompilyaciyası .............................................................................

6

1.2. C++ tili alfaviti................................................................................................................................................

10

1.3. Identifikatorlar hám gilt sózler ......................................................................................................................

10

II BAP. C++ TILINDE BERILGENLER HÁM OLARDIŃ TIPLERI ............

12

2.1. Turaqlılar .......................................................................................................................................................

12

2.2. Berilgenler tipleri hám ózgeriwshiler.............................................................................................................

15

2.3. C++ tiliniń tayanısh tipleri .............................................................................................................................

16

2.4. Túrlengen turaqlılar.......................................................................................................................................

19

2.5. Sanap ótiliwshi tip ..........................................................................................................................................

20

2.6. Tipti basqa tipke keltiriw ...............................................................................................................................

21

III BAP. AŃLATPALAR HÁM OPERATORLAR ............................................

23

3.1. Arifmetikalıq ámeller .....................................................................................................................................

23

3.2. Ańlatpa túsinigi ..............................................................................................................................................

24

3.3. Inkrement hám dekrement ámelleri ..............................................................................................................

24

3.4. Sizeof ámeli .....................................................................................................................................................

25

3.5. Razryadlı logikalıq ámeller ............................................................................................................................

25

3.6. Jıljıtıw ámeleri ................................................................................................................................................

28

3.7. Salıstırıw ámelleri...........................................................................................................................................

29

3.8. Útir ámeli ........................................................................................................................................................

29

3.9. Ámellerdiń ústinlikleri hám orınlanıw baǵıtları ............................................................................................

29

IV BAP. PROGRAMMA ORINLANIWIN BASQARIW ..................................

33

4.1. Operator túsinigi ............................................................................................................................................

33

4.2. Shárt operatorları...........................................................................................................................................

33

4.3. If operatorı......................................................................................................................................................

34

219

4.4. if - else operatorı. ............................................................................................................................................

35

4.5. ?: shárt ámeli. .................................................................................................................................................

40

4.6. Switch operatorı. ............................................................................................................................................

41

4.7. Tákirarlaw operatorları .................................................................................................................................

45

4.8. For tákirarlaw operatorı ................................................................................................................................

46

4.9. While tákirarlaw operatorı ............................................................................................................................

50

4.10. Do-while tákirarlaw operatorı......................................................................................................................

53

4.11. Break operatorı ............................................................................................................................................

55

4.12. Continue operatorı .......................................................................................................................................

58

4.13. Goto operatorı hám metkalar.......................................................................................................................

60

V BAP. FUNKCIYALAR .......................................................................................

63

5.1. Funkciya parametrleri hám argumentler ......................................................................................................

64

5.2. Kelisim boyınsha argumentler .......................................................................................................................

70

5.3. Lokal hám global ózgeriwshiler. ....................................................................................................................

72

5.4. :: ámeli. ...........................................................................................................................................................

75

5.5. Yad klassları ...................................................................................................................................................

76

5.6. Atlar keńisligi .................................................................................................................................................

81

5.7. Jaylastırılatuǵın (inline) funkciyalar..............................................................................................................

84

5.8. Rekursiv funkciyalar ......................................................................................................................................

85

5.9. Qayta júkleniwshi funkciyalar .......................................................................................................................

89

VI BAP. KÓRSETKISHLER HÁM ADRES ALIWSHI ÓZGERIWSHILER 92

6.1. Kórsetkishler ..................................................................................................................................................

92

6.2. Kórsetkishke baslanǵısh mánis beriw ............................................................................................................

96

6.3. Kórsetkish ústinde ámeller.............................................................................................................................

99

6.4. Adresti alıw ámeli .........................................................................................................................................

101

6.5. Kórsetkishler hám adres alıwshı ózgeriwshiler funkciya parametri retinde ..............................................

102

6.6. Ózgeriwsheń parametrli funkciyalar ...........................................................................................................

105

VII BAP. MASSIVLER ........................................................................................

109

7.1. Massiv túsinigi ..............................................................................................................................................

109

220