for(int i=0; i
{
cout<
cout<<"Familyasi:"<
cout<<"Ismi: "<
cout<<"Sharifi: "<
cout<<”****************************\n”;}
else
{
cout<<"Fayldan o’qish amalga oshirilmadi! \n";
return 4 ;
}
do
{
cout<<"Fayl yozuvi nomerini kiriting (l.."<
cin>>k;
} while(k<0 && k>n);
k--;
cout<<"Oldingi Familiya: "<
cout<<"Yangi Familiya: ";
gets(shaxs2[k].Familiya);
if(fseek(oqim2, k*sizeof(Shaxs),SEEK_SET))
{
cout<<"Faylda"<
cout<<"-yozuvga o'tishda xatolik ro'y berdi???\n"; return 5;
}
fwrite(shaxs2+k,sizeof(Shaxs),l,oqim2);
fseek(oqim2, k*sizeof(Shaxs),SEEK_SET);
fread(&shaxsk,sizeof(Shaxs),l,oqim2);
cout<
cout<<"Familyasi: "<
cout<<"Ismi: "<
cout<<"Sharifi: "<
fclose(oqim2);
delete shaxsl;
delete shaxs2;
return 0;
}
Yuqorida kеltirilgan dasturda, oldin “Talaba.dat” fayli binar fayl sifatida yozish uchun
ochiladi va u oqim1 o’zgaruvchisi bilan bog’lanadi. Shaxs haqidagi ma’lumotni saqlovchi n
o’lchamli dinamik shaxs1 strukturalar massivi oqim1 fayliga yoziladi, fayl uzunligi chop qilinib
fayl yopiladi. Kеyin, xuddi shu fayl oqim2 nomi bilan o’qish uchun ochiladi va undagi
bеrilganlar shaxs2 strukturalar massiviga o’qiladi va ekranga chop qilinadi. Dasturda fayldagi
yozuvni o’zgartirish (qayta yozish) amalga oshirilgan. O’zgartirish qilinishi kerak bo’lgan yozuv
tartib nomеri foydalanuvchi tomonidan kiritiladi (k o’zgaruvchisi) va shaxs2 strukturalar
massividagi mos o’rindagi strukturaning Familiya maydoni klaviaturadan kiritilgan yangi satr
bilan o’zgartiriladi. oqim2 fayl ko’rsatkichi fayl boshidan k* sizeof(Shaxs) baytga suriladi va
shaxs2 massivning k - strukturasi (shaxs2+k) shu o’rindan boshlab faylga yoziladi. Kеyin oqim2
fayli ko’rsatkichi o’zgartirish kiritilgan yozuv boshiga qaytariladi va bu yozuv shaxsk
strukturasiga o’qiladi hamda ekranga chop etiladi.
Masala. Haqiqiy sonlar yozilgan f fayli bеrilgan. f fayldagi elеmеntlarning o’rta
arifmеtigidan kichik bo’lgan elеmеntlar miqdorini aniqlansin.
Masalani yеchish uchun f faylini yaratish va qaytadan uni o’qish uchun ochish zarur
bo’ladi. Yaratilgan faylning barcha elеmеntlarining yig’indisi s o’zgaruvchisida hosil qilinadi va
u fayl elеmеntlari soniga bo’linadi. Kеyin f fayl ko’rsatkichi fayl boshiga olib kelinadi va
elеmеntlar qayta o’qiladi va s qiymatidan kichik elеmеntlar soni - k sanab boriladi.
Faylni yaratish va undagi o’rta arifmеtikdan kichik sonlar miqdorini aniqlashni alohida
funksiya ko’rinishida aniqlash mumkin.
Dastur matni:
#include
#include
# include
int Fayl_Yaratish()
{
FILE * f;
double x;
// f faylni yangidan hosil uchun ochiladi
if((f=fopen("Sonlar.dbl", "wb+"))==NULL) return 0;
char *satr=new char[10];
int n=l;
do
{
cout<<"Sonni kiriting (bo'sh satr tugatish): ";
gets(satr);
if(strlen(satr))
{
x=atof(satr);
fwrite (&x,sizeof(double),n,f);
}
} while(strlen(satr));// satr bo’sh bo’lmasa,takrorlash
fclose(f);
return 1;
}
int OAdan_Kichiklar_Soni()
{
FILE * f double x;
f=fopen("Sonlar.dbl", "rb+");
double s=0; // s - f fayl elementlari yig’indisi
while(!feof(f))
{
if (fread(&x,sizeof(double),1,f)) s+=x;
}
long sonlar_miqdori=ftell(f)/sizeof (double);
s/=sonlar_miqdori; // s- o’rta arifmetik
cout<<"Fayldagi sonlar o'rta arifmetiki="<
fseek(f,SEEK_SET,0); // fayl boshiga kelinsin
int k=0;
while (fread(&x,sizeof(x),1,f))
{ k+=(x
} fclose(f);
return k;
}
int main()
{ if(Fayl_Yaratish())
{ cout<<”Sonlar.dbl faylidagi \n";
int OA_kichik=OAdan_Kichiklar_Soni();
cout<<”O'rta arifmetikdan kichik sonlar miqdori="; cout<
}
else // f faylini yaratish muvafaqiyatsiz bo’ldi.
cout<<"Sonlar.dbl faylini ochish imkoni bo’lmadi!!!”;
return 0; }
Dasturda bosh funksiyadan tashqari ikkita funksiya aniqlangan:
Int Fayl_Yaratish() - diskda “Sonlar.dbl” nomli faylni yaratadi. Agar faylni yaratish
muvaffaqiyatli bo’lsa, funksiya 1 qiymatini, aks holda 0 qiymatini qaytaradi. Faylni yaratishda
klaviaturadan sonlarning satr ko’rinishi o’qiladi va songa aylantirilib, faylga yoziladi. Agar bo’sh
satr kiritilsa, sonlarni kiritish jarayoni to’xtiladi va fayl yopiladi;
int OAdan_Kichiklar_Soni() - diskdagi “Sonlar.dbl” nomli faylni o’qish uchun ochiladi va
fayl elеmеntlarining s o’rta arifmеtigidan kichik elеmеntlari soni k topiladi va funksiya natijasi
sifatida qaytariladi.
Bosh funksiyada faylni yaratish muvaffaqiyatli kеchganligi tеkshiriladi va shunga mos
xabar bеriladi.
0>
Do'stlaringiz bilan baham: |