Kompyuter injinering ” fakulteti 103-guruh talabasi eshnazarov Rustam ning dasturlash fanidan mustaqil ishi №8
Download 0.97 Mb.
|
2 5327958925562086610
- Bu sahifa navigatsiya:
- include
- "natija.txt" ); doublesum = 0
Faylga ma’lumot yozish
Oddiy ma’lumot turiga ega qiymatlarni, massivlarni, satrlarni va ob’yektlarni faylga yozish uchun, ofstream sinfidan foydalanishimiz mumkin. 2. Fayl mavjudligini tekshirish Agar faylni o`qishda fayl mavjud bo`lmasa, dasturimiz ishga tushadi va noto`g`ri natija beradi. Xo`sh, bizning dasturimiz fayl bor yoki yo`qligini tekshira oladimi? Ha. Biz open funksiyasidan so`ng darxol fail( ) funksiyasini chaqirishimiz mumkin. Agar fail( ) funksiyasi true qiymat qaytarsa, u fayl mavjud emasligidan darak beradi. 1 // Faylni ochish 2 input.open("natijalar.txt"); 3 4 if(input.fail()) 5 { 6 cout << "File does not exist"<< endl; 7 cout << "Exit program"<< endl; 8 9 return 0; 10 } Fayl so`ngini tekshirish 8.2-kodli ro`yxat ma’lumot faylidan ikki satrni o`qiydi. Agar biz faylda nechta satr borligini bilmasak va ularning barchasini o`qitishni istasak, fayl so`ngini qanday qilib aniqlaymiz? O`tgan semestrda ko`rib chiqqanimiz, ushbu dasturni esga olamiz: 1 #include 2 #include 3 using namespace std; 4 5 int main() 6 { 7 // Faylni ochish 8 ifstream input("natija.txt"); 9 10 double sum = 0; 11 double number; 12 while(!input.eof()) // Agar fayl so`ngi bo`lmasa davom ettirish 13 { 14 input >> number; // Ma’lumotni o`qish 15 cout << number << " "; // Ma’lumotni ko`rsatish 16 sum += number; 17 } 18 19 input.close(); 20 21 cout << "\nSum = "<< sum << endl; 22 23 return 0; 24 } Mazkur dasturda fayl si`ngini aniqlash uchun eof() funksiyasidan foydalanishimiz mumkin. Shunga qaramasdan, agar fayl so`ngida bitta qo`shimcha bo`sh joy mavjud bo`lsa ham dastur ishlamaydi. Buni tushunib olish uchun, keling, 8.3-rasmda keltirilgan fayldagi sonlarni qaraymiz. Bu faylda so`ngi sondan keyin bitta qo`shimcha bo`sh joy borligiga e’tibor qarating. 8.3-rasm. Fayl bo`sh joylar bilan ajratilgan sonlardan tashkil topgan. Agar quyidagi kodni qo`llab barcha ma’lumotlarni o`qitsak va ularning barchasini qo`shsak, oxirgi son ikki marta qo`shiladi. ifstream input("natija.txt"); doublesum = 0; doublenumber; while(!input.eof()) // Agar fayl so`ngi bo`lmasa davom ettirish { input >> number; // Ma’lumotni o`qish cout << number << " "; // Ma’lumotni ko`rsatish sum += number; } Bunga sabab, oxirgi son – 85.6 o`qilganda, fayl tizimi bu so`ngi son ekanligini bilmaydi, chunki, undan so`ng bitta bo`sh joy turibdi. Shundan kelib chiqan holda, eof() funksiyasi false ni qaytaradi. Dastur sonni qayta o`qiganda esa, eof() funksiyasi true qiymat qaytaradi, ammo number o`zgaruvchisi o`zgartirilmaydi, chunki hech narsa o`qilmaydi. number o`zgaruvchisi sum ga qayta qo`shilganda ham 85.6 ga teng bo`lib turaveradi. Bu muammoni yechishning ikki xil yo`li bor. Birinchisi, eof() funksiyasining to`g`ri javob qaytarishini tekshirishdir. Agar u true qiymat qaytarsa, quyidagi kodda berilganidek, sikl to`xtatiladi: ifstream input("natija.txt"); Download 0.97 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling