Laboratoriya mashg‘uloti


Download 255.17 Kb.
bet1/2
Sana23.12.2022
Hajmi255.17 Kb.
#1048893
  1   2
Bog'liq
amaliyot 12


Laboratoriya mashg‘uloti - 9.2.
Mavzu: Fayllar bilan ishlashga doir dastur tuzish
Reja:

  1. Formatlangan kiritish uchun manipulyatorlardan qanday foydalanishni bilib olish;

  2. getline, get va put funksiyalaridan foydalanishni o’rganish;

  3. Matnli fayllar yordamida dasturlar tuzish

Topshiriq 1. Chiqish faylini formatlash uchun siz oqim tugmachasidan foydalanib dastur yozishingiz kerak.


Dastur kodi:


Listing 8.2.1 WriteFormattedData.cpp



  1. #include

  2. #include

  3. #include

  4. using namespace std;


  5. int main()

  6. {

  7. ofstream output;


  8. // Create a file

  9. output.open("formattedscores.txt");


  10. // Write two lines

  11. output<

  12. << " " << setw(4) << 90 << endl;

  13. output<

  14. << " " << setw(4) << 85;


  15. output.close();


  16. cout << "Done" << endl;


  17. return 0;

  18. }



Natija:



Topshiriq 2. Siz getline, get va put funktsiyalaridan foydalanib fayldan ma'lumotlarni o'qiydigan dastur yozishingiz kerak.
Dastur kodi:


Listing 8.2.2 ReadCity.cpp



  1. #include

  2. #include

  3. #include

  4. using namespace std;


  5. int main()

  6. {

  7. // Open a file

  8. ifstream input("state.txt");


  9. if (input.fail())

  10. {

  11. cout << "File does not exist" << endl;

  12. cout << "Exit program" << endl;

  13. return 0;

  14. }


  15. // Read data

  16. string city;


  17. while (!input.eof()) // Continue if not end of file

  18. {

  19. getline(input, city, '#');

  20. cout << city << endl;

  21. }


  22. input.close();


  23. cout << "Done" << endl;


  24. return 0;

  25. }



Natija:

getline (kiritish, holat, '#') qo'ng'iroq (23-qator) belgilar va fayl oxiriga duch kelguncha massiv holatiga o'tadi.


Boshqa ikkita foydali xususiyat - bu olish va qo'yish. Belgini o'qish uchun kirish ob'ektidagi get funktsiyasini chaqirishingiz mumkin va belgi yozish uchun chiqish ob'ektidagi qo'yish funktsiyasini chaqirishingiz mumkin.


Topshiriq 3. Siz foydalanuvchiga faylni kiritishni taklif qiladigan dasturni yozishingiz va uni yangi faylga nusxalashingiz kerak.


Dastur kodi:


Listing 8.2.3 CopyFile.cpp



  1. #include

  2. #include

  3. #include

  4. using namespace std;


  5. int main()

  6. {

  7. // Enter a source file

  8. cout << "Enter a source file name: ";

  9. string inputFilename;

  10. cin >> inputFilename;


  11. // Enter a target file

  12. cout << "Enter a target file name: ";

  13. string outputFilename;

  14. cin >> outputFilename;


  15. // Create input and output streams

  16. ifstream input(inputFilename.c_str());

  17. ofstream output(outputFilename.c_str());


  18. if (input.fail())

  19. {

  20. cout << inputFilename << " does not exist" << endl;

  21. cout << "Exit program" << endl;

  22. return 0;

  23. }


  24. char ch = input.get();

  25. while (!input.eof()) // Continue if not end of file

  26. {

  27. output.put(ch);

  28. ch = input.get(); // Read next character

  29. }


  30. input.close();

  31. output.close();


  32. cout << "\nCopy Done" << endl;


  33. return 0;

  34. }



Natija:



Dastur foydalanuvchiga 11-qatorga manba faylining nomini va 16-qatorda maqsadli fayl nomini kiritishni taklif qiladi, kirishFilename uchun kirish ob'ekti 19-satrda yaratilgan va 20-qatorda outputFilename uchun chiqish ob'ekti. Fayl nomlari C-Strings bo'lishi kerak. inputFilename.c_str () inputFilename satridan C-satrlarni qaytaradi.
22-27 qatorlar kirish fayli mavjudligini tekshiradi. 30-34-qatorlar ketma-ketlik bilan funktsiyani ishlatib, belgilarni ketma-ket o'qiydi va Put funktsiyasidan foydalanib, chiqish fayliga belgi yozadi.
29-34-qatorlar quyidagi kod bilan almashtirilgan deylik.


while (!input.eof()) // Continue if not end of file
{
output.put(input.get());
}

Nima bo'ladi? Agar siz ushbu yangi kod bilan dasturni ishlatsangiz, yangi fayl aslidan bir bayt kattaroq ekanligini ko'rasiz. Yangi fayl oxirida qo'shimcha axlat belgisini o'z ichiga oladi. Buning sababi, kirish faylidan so'nggi belgi input.get () yordamida o'qilganda, input.eof () hali ham noto'g'ri. Shundan so'ng, dastur boshqa belgini o'qishga harakat qiladi; input.eof () endi haqiqat bo'lib bormoqda. Biroq, chiqindi fayliga tashqi axlat belgisi allaqachon yuborilgan.


Listing 8.7-dagi to'g'ri kod belgini (29-qator) o'qiydi va eof () ni tekshiradi (30-qator). Agar eof () to'g'ri bo'lsa, belgi chiqarilmaydi; aks holda u ko'chiriladi (32-qator). Bu jarayon eof () qiymati qaytgunicha davom etadi.
Topshiriq 4. Siz City.txt (11-qator) deb nomlangan yangi fayl yaratadigan va faylga ma'lumotlarni yozadigan dastur yozishingiz kerak. Keyin dastur faylni yopadi va yangi ma'lumotlarni qo'shish uchun uni yana ochadi (19-qator), lekin uni ustiga yozmaydi.



Download 255.17 Kb.

Do'stlaringiz bilan baham:
  1   2




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling