Ma’ruza 15. Fayildan o’qish yozish funksiyalari. Reja



Download 311,71 Kb.
Pdf ko'rish
bet2/7
Sana20.06.2022
Hajmi311,71 Kb.
#678904
1   2   3   4   5   6   7
Bog'liq
fayildan o\'qish va yozish fungsialari

Masala. 
G‘alvirli tartiblash usuli.
Berilgan x vektorini pufakcha usulida kamaymaydigan qilib tartiblash 
quyidagicha amalga oshiriladi: massivning qo‘shni elementlari x

va x
k+1 
(k=1,..,n-
1) solishtiriladi. Agar x
k
>x
k+1 
bo‘lsa, u holda bu elementlar o‘zaro o‘rin almashadi. 
Shu yo‘l bilan birinchi o‘tishda eng katta element vektorning oxiriga joylashadi. 
Keyingi qadamda vektor boshidan n-1 o‘rindagi elementgacha yuqorida qayd 
qilingan yo‘l bilan qolgan elementlarning eng kattasi n-1 o‘ringa joylashtiriladi va 
h.k.
G‘alvirli tartiblash usuli pufakchali tartiblash usuliga o‘xshash, lekin x

va x
k+1 
(k=1,2,3,..,n-1) elementlar o‘rin almashgandan keyin «g‘alvirdan» o‘tkazish amali 
qo‘llaniladi: chap tomondagi kichik element imkon qadar chap tomonga tartiblash 
saqlangan holda ko‘chiriladi. Bu usul oddiy pufakchali tartiblash usuliga nisbatan 
tez ishlaydi.
Dastur matni:
#include


#include
int * Pufakchali_Tartiblash(int*,int);
int main()
{
char fnomi[80];
printf("Fayl nomini kiriting:");
scanf("%s", &fnomi);
int Ulcham,i=0,* Massiv;
FILE * f1, *f2;
if((f1=fopen(fnomi,"rt"))==NULL)
{
printf("Xato:%s fayli ochilmadi!",fnomi);
return 1;
}
fscanf(f1,"%d",&Ulcham);
Massiv=(int *)malloc(Ulcham*sizeof(int));
while(!feof(f1))
fscanf(f1,"%d",&Massiv[i++]);
fclose(f1);
Massiv=Pufakchali_Tartiblash(Massiv,Ulcham);
f2=fopen("natija.txt","wt");
fprintf(f2,"%d%c",Ulcham,' ');
for(i=0; ifprintf(f2,"%d%c",Massiv[i],' ');
fclose(f2);
return 0;
}
int * Pufakchali_Tartiblash(int M[],int n)
{


int almashdi=1, vaqtincha;
for(int i=0; i{
almashdi=0;
for(int j=0; jif (M[j]>M[j+1])
{
almashdi=1;
vaqtincha=M[j];
M[j]=M[j+1];
M[j+1]=vaqtincha;
int k=j;
if(k)
while(k && M[k]>M[k-1])
{
vaqtincha=M[k-1];
M[k-1]=M[k];
M[k]=vaqtincha;
k--;
}
}
}
return M;
}
Dasturda berilganlarni oqimdan o‘qish yoki oqimga chiqarishda fayldan 
formatli o‘qish - fscanf() va yozish - fprintf() funksiyalaridan foydalanilgan. Bu 
funksiyalarning mos ravishda scanf() va printf() funksiyalaridan farqi - ular 
berilganlarni birinchi argument sifatida beriladigan matn fayldan o‘qiydi va yozadi.


Nomi foydalanuvchi tomonidan kiritiladigan f1 fayldan butun sonlar 
massivining uzunligi va qiymatlari o‘qiladi va tartiblangan massiv f2 faylga 
yoziladi.
Vektorni tartiblash Pufakchali_Tartiblash() funksiyasi tomonidan amalga 
oshiriladi. Unga vektor va uning uzunligi kiruvchi parametr bo‘ladi va tartiblangan 
vektor funksiya natijasi sifatida qaytariladi.
Navbatdagi ikkita funksiya fayl oqimidan formatlashmagan o‘qish-yozishni 
amalga oshirishga mo‘ljallangan.
fread() funksiyasi quyidagi prototipga ega:
size_t fread(void * ptr, size_t size, size_t n,
FILE *stream);
Bu funksiya oqimdan ptr ko‘rsatib turgan buferga, har biri size bayt bo‘lgan n 
ta berilganlar blokini o‘qiydi. O‘qish muvaffaqiyatli bo‘lsa, funksiya o‘qilgan 
bloklar sonini qaytaradi. Agar o‘qish jarayonida fayl oxiri uchrab qolsa yoki xatolik 
ro‘y bersa, funksiya to‘liq o‘qilgan bloklar sonini yoki 0 qaytaradi.
fwrite() funksiyasi prototipi
size_t fwrite(const void*ptr,size_t size,
size_t n,FILE *stream);
ko‘rinishi aniqlangan. Bu funksiya ptr ko‘rsatib turgan buferdan, har biri size bayt 
bo‘lgan n ta berilganlar blokini oqimga chiqaradi. Yozish muvaffaqiyatli bo‘lsa, 
funksiya yozilgan bloklar sonini qaytaradi. Agar yozish jarayonida xatolik ro‘y 
bersa, funksiya to‘liq yozilgan bloklar sonini yoki 0 qaytaradi.

Download 311,71 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2025
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