C++ dasturlash tilida ma‘lumotlarni formatli o‘qish va formatli yozish funksiyalari dasturini ishlab chiqish

C++ dasturlash tilida malumotlarni formatli o`qish va formatli yozish funksiyalari
dasturini ishlab chiqish.
REJA
Kirish
     1.1  Maqsad va vazifalar
     1.2  Kurs ishi tarkibi
II.  Nazariy qism :
      2.1  Formatli o'qish
2.2  Formatli yozish
      2.3   Fayllar bilan ishlash
III. Amaliy mashqlar
      3.1 Mashq 1: Foydalanuvchi ma'lumotlarini konsoldan o'qish va chiqarish
      3.2 Mashq 2: Ma'lumotlarni faylga yozish va o'qish
      3.3 Mashq 3: Formatlangan jadval chiqarish
      3.4 Mashq 4: Talabalar ro'yxatini boshqarish
IV. Xulosa
V. Foydalanilgan adabiyotlar va internet resurslari
1 Kirish
Ushbu   kurs   ishi   C++   dasturlash   tilida   ma'lumotlarni   formatli   o'qish   va   yozish
funksiyalarini   o'rganish   va   amalda   qo'llashga   bag'ishlangan.   Ma'lumotlarni   formatli
o'qish   va   yozish   dasturlashda   muhim   ahamiyatga   ega   bo'lib,   konsol,   fayllar   va   boshqa
qurilmalar   bilan   ishlashda   qo'llaniladi.   Kurs   ishi   nazariy   ma'lumotlar,   amaliy   mashqlar,
namunaviy dasturlar va qo'shimcha tasviriy materiallarni o'z ichiga oladi.    
Kurs   ishining   maqsadi   C++   dasturlash   tilida   ma'lumotlarni   formatli   o'qish   va
yozish   texnikalarini   chuqur   o'rganish   va   talabalar   ma'lumotlarini   boshqarish   dasturini
ishlab chiqish orqali amaliy ko'nikmalarni rivojlantirishdir. 
Ma'lumotlarni   formatli   o'qish   va   yozish   zamonaviy   dasturiy   ta'minotlarda   keng
qo'llaniladi.   Masalan,   ma'lumotlar   bazasi   tizimlari,   fayl   asosidagi   dasturlar   va
foydalanuvchi interfeyslari bunday funksiyalarga asoslanadi. 
2 Maqsad va vazifalar
 Maqsad :   C++   dasturlash   tilida   ma'lumotlarni   formatli   o'qish   va   yozish
funksiyalarini o'rganish va ularni amaliy loyihalarda qo'llash.
C++   dasturlash   tilining   maqsadi   bir   nechta   asosiy   jihatlardan   iborat   bo‘lib,   u   umumiy
maqsadli,   yuqori   samarali   va   moslashuvchan   dasturlash   tili   sifatida   ishlab   chiqilgan.
Quyida C++ ning asosiy maqsadlari keltiriladi:
1. Yuqori samaradorlik va ishlash tezligi :
C++ apparat resurslarini samarali boshqarish va yuqori tezlikda ishlaydigan dasturlar
yaratish   uchun   mo‘ljallangan.   U   past   darajali   operatsiyalarga   (masalan,   xotira
boshqaruvi) kirish imkonini beradi, bu esa tizimli dasturlash, o‘yin dvigatellari va real
vaqt tizimlari uchun ideal qiladi.
2. Moslashuvchanlik va umumiy maqsadli dasturlash :
C++ turli dasturiy loyihalar uchun ishlatilishi mumkin – tizimli dasturlardan tortib
veb-ilovalar,   o‘yinlar   va   ilmiy   hisoblashgacha.   U   ob'ektga   yo‘naltirilgan,
protsedurali va umumlashtirilgan dasturlash paradigmalarni qo‘llab-quvvatlaydi.
3. Ob'ektga yo‘naltirilgan dasturlash (OOP) imkoniyatlari :
C++   sinflar,   ob'ektlar,   meros   va   polimorfizm   kabi   OOP   tamoyillarini   qo‘llab-
quvvatlaydi,   bu   murakkab   dasturlarni   tuzish   va   qayta   ishlatiladigan   kod   yozishni
osonlashtiradi.
4. Past darajali boshqaruv :
C++ dasturchiga xotira bilan bevosita ishlash (masalan, ko‘rsatgichlar va dinamik 
xotira ajratish) va apparat resurslarini boshqarish imkonini beradi, bu resurslarni 
tejamkor ishlatishni talab qiluvchi tizimlarda muhimdir.
5. C bilan moslik :
3 C++   C   tilining   kengaytmasi   sifatida   ishlab   chiqilgan,   shuning   uchun   C   kodini   C++
dasturlarida   ishlatish   mumkin.   Bu   C++   ni   avvalgi   loyihalar   bilan   integratsiya   qilish
uchun qulay qiladi.
6. Standart kutubxona (STL) :
C++   standart   shablonlar   kutubxonasi   (STL)   orqali   keng   ko‘lamli   tayyor
funksiyalar,   konteynerlar   (vektor,   massiv,   ro‘yxat)   va   algoritmlarni   taqdim   etadi,
bu dasturchilarning ishini tezlashtiradi.
7. Portativlik :
C++   platformadan   mustaqil   dasturlash   tili   bo‘lib,   turli   operatsion   tizimlar
(Windows, Linux, macOS) va apparat platformalarida ishlay oladi, agar kod to‘g‘ri
yozilsa.
8. Murakkab tizimlarni qo‘llab-quvvatlash :
C++   katta   va   murakkab   dasturiy   tizimlarni   (masalan,   operatsion   tizimlar,
ma'lumotlar   bazasi   tizimlari,   grafik   dvigatellar)   ishlab   chiqish   uchun   mos   keladi,
chunki u modullik va tuzilgan dasturlashni ta'minlaydi.
Vazifalar :
1. Formatli o'qish va yozish funksiyalarining asosiy tushunchalarini o'rganish.
2. <iostream> va <fstream> kutubxonalaridagi asosiy funksiyalarni tahlil qilish.
3. Konsol va fayllar bilan ishlashda amaliy mashqlar ishlab chiqish.
4. Talabalar ma'lumotlarini boshqarish dasturini ishlab chiqish.
   C++ ning asosiy  vazifalari  uning maqsadlari  bilan chambarchas  bog‘liq bo‘lib, u turli
sohalarda yuqori samarali va moslashuvchan dasturlar yaratish uchun ishlatiladi. Quyida
C++ ning asosiy vazifalari qisqacha keltiriladi:
4 Tizimli dasturlash:
Operatsion tizimlar (masalan, Windows yoki Linux yadrolari), qurilma drayverlari va 
tarmoq protokollarini ishlab chiqish. C++ apparat bilan yaqin ishlash imkonini beradi.
1. O‘yin dasturlash :
O‘yin dvigatellari (Unreal Engine kabi) va real vaqt rejimida ishlaydigan grafik 
ilovalar yaratish. C++ yuqori tezlik va grafik resurslarni boshqarishda muhim.
2. Yuqori samarali ilovalar :
Moliyaviy   tizimlar ,   birja   savdo   platformalari   va   real   vaqt   hisoblashlari   talab
qilinadigan   ilovalar   uchun   dasturlar   yozish .
3. Ma'lumotlar bazasi va server dasturlari :
Ma'lumotlar   bazasi   boshqaruv   tizimlari   (masalan,   MySQL)   va   veb-serverlar
(Nginx kabi) ishlab chiqish.
4. Ilmiy hisoblash va simulyatsiya :
Fizika,   kimyo,   biologiya   kabi   sohalarda   murakkab   matematik   hisoblashlar   va
simulyatsiyalar uchun dasturlar yaratish.
5. Kross-platforma ilovalar :
Turli operatsion tizimlarda (Windows, Linux, macOS) ishlaydigan dasturiy 
ta'minot ishlab chiqish, masalan, ofis ilovalari yoki multimedia vositalari.
6. IoT va o‘rnatilgan tizimlar :
Aqlli qurilmalar, sensorlar va o‘rnatilgan tizimlar (embedded systems) uchun 
dasturlar yozish, chunki C++ resurslarni tejamkor boshqaradi.
7. Kutubxonalar va freymvorklar yaratish :
Boshqa dasturchilar foydalanishi uchun umumiy kutubxonalar (masalan, STL yoki
Boost) va freymvorklar ishlab chiqish.
5 Nazariy qism
  Formatli o'qish
   Formatli o'qish ma'lumotlarni foydalanuvchi kiritgan formatda qabul qilish jarayonidir.
C++ dasturlash tilida bu jarayon <iostream> kutubxonasi orqali amalga oshiriladi.  Asosiy
vositalar quyidagilar:
 cin : Standart kiritish oqimidan ma'lumot o'qish.
 getline : Satrlarni o'qish uchun ishlatiladi.
 scanf : C uslubidagi formatli o'qish.
Formatli   o‘qish   (formatted   input)   foydalanuvchi   kiritgan   ma'lumotlarni   ma'lum   bir
formatda,   tuzilgan   va   xavfsiz   tarzda   olish   jarayonini   anglatadi.   Bu   odatda   <iostream>
kutubxonasi   va   cin   ob'ekti   yordamida   amalga   oshiriladi,   lekin   boshqa   usullar,   masalan,
scanf   (C   uslubi)   yoki   maxsus   parsing   texnikalari   ham   ishlatilishi   mumkin.   Formatli
o‘qish ma'lumotlarni to‘g‘ri turda (masalan, butun son, haqiqiy son, satr) olish, xatolarni
tekshirish va foydalanuvchi kiritishini boshqarish uchun ishlatiladi.
      Quyida   C++   da   formatli   o‘qish   haqida   to‘liq   ma'lumot,   asosiy   vositalar,   usullar,
xatolarni boshqarish va amaliy misollar bilan tushuntiriladi.
 1.  Formatli o‘qishning maqsadi
  Formatli o‘qishning asosiy maqsadlari:
 Ma'lumotlarni to‘g‘ri olish : Foydalanuvchi kiritgan ma'lumotlarni kutilgan turda
(int, double, string) olish.
 Xatolarni   oldini   olish :   Noto‘g‘ri   kiritishlarni   (masalan,   harf   o‘rniga   raqam
kiritish) aniqlash va tuzatish.
 Foydalanuvchi   tajribasini   yaxshilash :   Aniq   xabarlar   orqali   foydalanuvchiga
to‘g‘ri kiritishni so‘rash.
 Moslashuvchanlik :   Turli   formatdagi   ma'lumotlarni   (masalan,   satrlar,   raqamlar,
maxsus formatlar) qabul qilish.
6 2.  Asosiy vositalar
C++ da formatli o‘qish uchun quyidagi kutubxonalar va vositalardan foydalaniladi:
 <iostream> : cin ob'ekti orqali standart kiritish.
 <string> : Satrlar (std::string) bilan ishlash, ayniqsa getline funksiyasi orqali.
 <limits> : Kiritish buferini tozalash uchun (std::numeric_limits).
 <cstdio> : C uslubidagi scanf funksiyasi orqali kiritish.
 <iomanip>   (kamroq   ishlatiladi) :   Ma'lum   formatdagi   kiritishlarni   boshqarish
uchun (masalan, setw bilan belgilangan uzunlikdagi kiritish).
3. Formatli o‘qish usullari
3.1. cin bilan formatli o‘qish
cin   ob'ekti   foydalanuvchi   kiritgan   ma'lumotlarni   o‘qish   uchun   eng   keng   tarqalgan
vositadir.   U   turli   ma'lumot   turlarini   (int,   double,   char,   va   hokazo)   avtomatik   ravishda
taniydi, lekin bo‘shliqlar va yangi qator belgilariga sezgir.
Xususiyatlari :
 Ma'lumotlar bo‘shliq (space), tab yoki yangi qator (\n) bilan ajratiladi.
 Agar   kiritish   turi   noto‘g‘ri   bo‘lsa   (masalan,   int   o‘rniga   harf   kiritilsa),   cin   xato
holatiga o‘tadi (fail()).
 cin bilan satr o‘qishda bo‘shliqlar oldin o‘qishni  to‘xtatadi (buni getline bilan hal
qilish mumkin).
3.2. Getline bilan satr o‘qish
cin   >>   satr   o‘qishda   faqat   bo‘shliqgacha   bo‘lgan   qismni   oladi.   Agar   to‘liq   satr
(bo‘shliqlar bilan birga) kerak bo‘lsa, std::getline ishlatiladi.
3.3. Scanf bilan o‘qish (C uslubi)
scanf C tilidan meros qolgan bo‘lib, format belgilovchilari orqali kiritishni boshqaradi:
 %d: Butun son.
7  %f, %lf: Haqiqiy son (float, double).
 %s: Satr (bo‘shliqgacha).
 %c: Belgilar.
4.  Xatolarni boshqarish
Formatli   o‘qishda   foydalanuvchi   noto‘g‘ri   ma'lumot   kiritsa   (masalan,   harf   o‘rniga
raqam), dastur xato holatiga tushadi. Buni boshqarish uchun quyidagi usullar ishlatiladi:
4.1. cin holatini tekshirish
cin.fail() yoki !cin yordamida kiritish xatosini aniqlash mumkin.
4.2. Satr kiritishda xatolarni tekshirish
getline bilan satr o‘qishda bo‘sh kiritishni tekshirish mumkin.
4.3. Buferni tozalash
cin >> dan keyin getline ishlatilsa, buferda qolgan \n belgilari muammoga sabab bo‘ladi.
Buni cin.ignore() bilan hal qilish mumkin.
5.  Umumiy formatlash texnikalari
 Ma'lumot turi bo‘yicha o‘qish : 
o int, double, char: cin >> bilan.
o To‘liq satrlar: getline(cin, satr).
 Kiritish uzunligini cheklash : 
o <iomanip> dagi setw(n) bilan belgilangan uzunlikdagi kiritish o‘qiladi (lekin
kam ishlatiladi).
o Misol: cin >> setw(10) >> buffer;.
 Maxsus formatlar : 
o Masalan, telefon raqami yoki sana kiritishda satr sifatida o‘qib, keyin parse
qilish.
 Kiritishni tasdiqlash : 
8 o Foydalanuvchidan   kiritishni   tasdiql   ASHni   so‘rash   (masalan,   “To‘g‘ri
kiritdingizmi?  [h/y]”).
6.  Afzalliklari va kamchiliklari
Afzalliklari:
 cin va getline xavfsiz va C++ ga xos.
 Xatolarni aniqlash va boshqarish oson.
 Turli ma'lumot turlari bilan moslashuvchan.
Kamchiliklari:
 cin bo‘shliqlarga sezgir, bu muammolarga olib kelishi mumkin.
 scanf xavfsiz emas va satrlar bilan ishlashda cheklovlarga ega.
 Noto‘g‘ri kiritishlarni boshqarish uchun qo‘shimcha kod yozish kerak.
Tushuntirish :
 Ism va manzil getline bilan o‘qiladi, bo‘sh kiritish tekshiriladi.
 Yosh cin bilan o‘qiladi, musbat son ekanligi tekshiriladi.
 Bufer cin.ignore bilan tozalanadi.
 Chiqish formatli yozish orqali jadval shaklida taqdim etiladi.
8. Amaliy maslahatlar
 Xatolarni   oldindan   rejalashtiring :   Har   doim   noto‘g‘ri   kiritishlarni   tekshirish
uchun kod yozing.
 Buferni tozalashni  unutmang : cin >> dan keyin getline ishlatganda cin.ignore()
qo‘llang.
 Foydalanuvchiga   yo‘l   ko‘rsating :   Xato   xabarlarida   aniq   ko‘rsatmalar   bering
(masalan, “Faqat raqam kiriting”).
 Soddalashtiring : Oddiy dasturlarda minimal tekshirishlar bilan ishlang, murakkab
loyihalarda to‘liq xavfsizlikni ta'minlang.
9  Maxsus   formatlar   uchun   parsing :   Agar   telefon   raqami   yoki   sana   kabi   maxsus
format kerak bo‘lsa, satr sifatida o‘qib, keyin tekshiring.
Misol :
#include <iostream>
using namespace std;
int main() {
    int son;
    cout << "Son kiriting: ";
    cin >> son;
    cout << "Kiritilgan son: " << son << endl;
    return 0;
}
Yuqoridagi   dastur   foydalanuvchidan   butun   sonni   o'qib,   uni   ekranga   chiqaradi.   cin
operatori turli ma'lumot turlarini (masalan, int, double, char) o'qish uchun ishlatiladi.
Getline   funksiyasi   satrlar   bilan   ishlashda   foydalidir,   chunki   u   bo'shliqlar   va   maxsus
belgilarni ham o'qiy oladi:
#include <iostream>
#include <string>
using namespace std;
int main() {
    string matn;
    cout << "Matn kiriting: ";
    getline(cin, matn);
    cout << "Kiritilgan matn: " << matn << endl;
    return 0;
}
10 Formatli yozish ma'lumotlarni belgilangan formatda ekranga yoki faylga chiqarish
jarayonidir. Bu jarayon <iomanip> kutubxonasi yordamida aniq sozlamalar bilan amalga
oshiriladi. 
Asosiy   vositalar:   C++   dasturlash   tilida   formatli   yozish   (formatted   output)
foydalanuvchiga ma'lumotlarni o'qilishi oson, tuzilgan va vizual jihatdan chiroyli shaklda
chiqarish   imkonini   beradi.   Bu   jarayon   odatda   cout   ob'ekti   va   <iomanip>   kutubxonasi
yordamida   amalga   oshiriladi,   lekin   boshqa   usullar   ham   mavjud   (masalan,   printf   yoki
std::format   C++20   dan   boshlab).   Formatli   yozish   ma'lumotlarni   ma'lum   bir   tartibda,
belgilangan   kenglikda,   aniqlikda   yoki   maxsus   formatda   (masalan,   o'nlik,   o'n   oltilik)
chiqarishni o'z ichiga oladi.
Quyida C++ da formatli yozish haqida to'liq ma'lumot, uning asosiy vositalari, usullari va
misollar bilan tushuntiriladi.
1.  Formatli yozishning maqsadi
Formatli yozishning asosiy maqsadlari:
 O'qiluvchanlik :   Ma'lumotlarni   foydalanuvchi   uchun   tushunarli   va   chiroyli
shaklda taqdim etish.
 Moslashuvchanlik : Turli ma'lumot turlarini (butun son, haqiqiy son, satr) maxsus
formatlarda chiqarish.
 Aniqlik : Raqamlarni ma'lum bir aniqlikda (masalan, o'nlik kasrlar soni) ko'rsatish.
 Tartib : Ma'lumotlarni jadval shaklida yoki belgilangan kenglikda tekislash.
 Moslashtirish : Chiqishni maxsus talablarga (masalan, valyuta, foiz) moslashtirish.
2.  Asosiy vositalar
C++ da formatli yozish uchun quyidagi kutubxonalar va vositalardan foydalaniladi:
 <iostream> : cout ob'ekti orqali standart chiqish.
 <iomanip> :   Formatlash   uchun   maxsus   manipulyatorlar   (masalan,   setw,
setprecision).
11  <string> : Satrlar bilan ishlash uchun.
 <format>   (C++20   va   undan   yuqori) :   Yangi   std::format   funksiyasi   orqali
zamonaviy formatlash.
 printf (C uslubi) : <cstdio> kutubxonasi orqali C tilidan meros qolgan formatlash
usuli.
3.  Formatli yozish usullari
3.1.  cout va <iomanip> bilan formatlash
<iomanip>   kutubxonasidagi   manipulyatorlar   formatli   chiqishni   osonlashtiradi.   Eng
muhim manipulyatorlar:
 setw(n) : Chiqish uchun kenglikni (n belgili joy) belgilaydi.
 left, right, internal : Matnni chapga, o'ngga yoki ichki tekislash.
 setprecision(n) :   Haqiqiy   sonlar   uchun   aniqlikni   (umumiy   raqamlar   soni)
belgilaydi.
 fixed : Haqiqiy sonlarni o'nlik shaklda chiqaradi.
 scientific : Ilmiy ko'rinishda (masalan, 1.23e+02) chiqaradi.
 hex, oct, dec : Sonlarni o'n oltilik, sakkizlik yoki o'nlik shaklda chiqarish.
 cout : Standart chiqish oqimiga yozish.
 setw : Chiqish maydonining kengligini belgilash.
 setprecision : Haqiqiy sonlarning aniqligini sozlash.
 printf : C uslubidagi formatli yozish.
3.3.  std::format bilan formatlash (C++20)
C++20   da   kiritilgan   <format>   kutubxonasi   Python   uslubidagi   formatlashni   qo'llab-
quvvatlaydi.  Bu zamonaviy va xavfsiz usul.
4. Umumiy formatlash texnikalari
 Tekislash : 
12 o left: Matnni chapga tekislaydi.
o right: Matnni o'ngga tekislaydi.
o internal: Belgilar (masalan, + yoki -) chapda, raqamlar o'ngda.
 Bo'sh joylarni to'ldirish : 
o setfill('x'): Bo'sh joylarni maxsus belgi bilan to'ldiradi (masalan, *).
o Misol: cout << setfill('*') << setw(10) << 42; → ********42.
 Raqamlar formati : 
o fixed: O'nlik shakl (masalan, 123.45).
o scientific: Ilmiy shakl (masalan, 1.23e+02).
o hex, oct: O'n oltilik yoki sakkizlik.
 Aniqlik : 
o setprecision(n):   Umumiy   raqamlar   soni   yoki   o'nlik   kasrlar   soni   (formatcha
bog'liq).
5.  Afzalliklari va kamchiliklari
Afzalliklari:
 Chiqishni foydalanuvchi uchun qulay va professional qiladi.
 Turli ma'lumot turlari va formatlarni qo'llab-quvvatlaydi.
 Jadval, hisobot va loglar yaratishda foydali.
Kamchiliklari:
 <iomanip>   manipulyatorlari   murakkab   bo'lishi   mumkin   va   holatni   o'zgartiradi
(masalan, fixed keyingi barcha chiqishlarga ta'sir qiladi).
 printf xavfsiz emas va satrlar bilan ishlashda qiyinchiliklar bo'lishi mumkin.
 std::format faqat yangi kompilyatorlarda ishlaydi.
6.  Amaliy maslahatlar
 Soddalik : Oddiy chiqish uchun cout va minimal manipulyatorlardan foydalaning.
13  Kompilyator   mosligi :   Agar   C++20   ishlatayotgan   bo'lsangiz,   std::format   ni   afzal
ko'ring.
 Xatolarni   tekshirish :   Foydalanuvchi   kiritgan   ma'lumotlarni   formatlashdan   oldin
tekshiring.
 O'qiluvchanlik :   Kodni   tushunarli   qilish   uchun   funktsiyalarga   ajrating   (masalan,
jadval chiqarish uchun alohida funktsiya).
Misol :
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
    double son = 123.456789;
    cout << setw(10) << setprecision(2) << fixed << son << endl;
    return 0;
    Yuqoridagi dastur 123.46 ni 10 ta bo'shliq ichida chiqaradi, bu formatlashning muhim
misolidir.
setw va setprecision :
 setw(n): Chiqish maydonini n ta belgiga kengaytiradi.
 setprecision(nsports   betting   software   development   cost   ):   Haqiqiy   sonning   n   ta
raqamini ko'rsatadi.
 fixed: Nuqtadan keyin belgilangan son aniqligini saqlaydi.
14    
Fayllar bilan ishlash
   Fayllar bilan ishlash <fstream> kutubxonasi orqali amalga oshiriladi. Fayllar ikki turda
ishlatiladi: o'qish (ifstream) va yozish (ofstream).
   Faylga.databox
Yozish Faylga yozish uchun ofstream obyekti ishlatiladi:
#include <fstream>
using namespace std;
int main() {
    ofstream fayl("output.txt");
    fayl << "Salom, dunyo!" << endl;
    fayl.close();
    return 0;
}
15 Fayldan o'qish
Fayldan o'qish uchun ifstream obyekti ishlatiladi:
#include <fstream>
#include <iostream>
using namespace std;
int main() {
    ifstream fayl("output.txt");
    string qator;
    while (getline(fayl, qator)) {
        cout << qator << endl;
    }
    fayl.close();
    return 0;
}
Fayllar bilan ishlashda xatolarni tekshirish muhimdir:
#include <fstream>
#include <iostream>
using namespace std;
int main() {
    ifstream fayl("output.txt");
    if (!fayl.is_open()) {
        cout << "Faylni ochib bo'lmadi!" << endl;
        return 1;
    }
    string qator;
    while (getline(fayl, qator)) {
16         cout << qator << endl;
    }
    fayl.close();
    return 0;
}
Amaliy mashqlar
Mashq 1: Foydalanuvchi ma'lumotlarini konsoldan o'qish va chiqarish
Vazifa :   Foydalanuvchidan   ism,   yosh   va   manzilni   o'qib,   formatlangan   holda
ekranga chiqarish.
Dastur :
#include   < iostream >
#include   < string >
#include   < iomanip >   // Formatlash uchun
using   namespace  std;
17 // Foydalanuvchi ma'lumotlarini chiroyli chiqarish uchun funktsiya
void  printHeader() {
       cout <<  "\n"  << string( 50 ,  '=' ) <<  "\n" ;
       cout <<  "\tFoydalanuvchi Ma'lumotlari Tizimi\n" ;
       cout << string( 50 ,  '=' ) <<  "\n\n" ;
}
// Ma'lumotlarni jadval shaklida chiqarish
void  printUserInfo( const  string& ism,  int  yosh,  const  string& manzil) {
       cout << string( 50 ,  '-' ) <<  "\n" ;
       cout <<  "| "  << left << setw( 15 ) <<  "Ism"  <<  "| "  << ism << string( 30  - ism.length(),  '
' ) <<  " |\n" ;
       cout << string( 50 ,  '-' ) <<  "\n" ;
        cout   <<   "|   "   <<   setw( 15 )   <<   "Yosh"   <<   "|   "   <<   yosh   <<   string( 30   -
to_string(yosh).length(),  ' ' ) <<  " |\n" ;
       cout << string( 50 ,  '-' ) <<  "\n" ;
       cout <<  "| "  << setw( 15 ) <<  "Manzil"  <<  "| "  << manzil << string( 30  - manzil.length(),
' ' ) <<  " |\n" ;
       cout << string( 50 ,  '-' ) <<  "\n\n" ;
}
int  main() {
       string ism, manzil;
        int  yosh;
        // Sarlavha chiqarish
       printHeader();
        // Ism kiritish
       cout <<  "Ismingizni kiriting: " ;
       getline(cin, ism);
        while  (ism.empty()) {
18                cout <<  "Xato! Ism bo'sh bo'lmasligi kerak. Qayta kiriting: " ;
               getline(cin, ism);
       }
        // Yosh kiritish va tekshirish
       cout <<  "Yoshingizni kiriting: " ;
        while  (!(cin >> yosh) || yosh <=  0 ) {
               cout <<  "Xato! Yosh musbat son bo'lishi kerak. Qayta kiriting: " ;
               cin.clear();
               cin.ignore( 10000 ,  '\n' );
       }
       cin.ignore();  // Buferni tozalash
        // Manzil kiritish
       cout <<  "Manzilingizni kiriting: " ;
       getline(cin, manzil);
        while  (manzil.empty()) {
               cout <<  "Xato! Manzil bo'sh bo'lmasligi kerak. Qayta kiriting: " ;
               getline(cin, manzil);
       }
        // Ma'lumotlarni chiqarish
       printUserInfo(ism, yosh, manzil);
       cout <<  "Ma'lumotlar muvaffaqiyatli saqlandi!\n" ;
       cout << string( 50 ,  '=' ) <<  "\n" ;
        return   0 ;
}
Tahlil : Ushbu dastur getline va cin yordamida turli ma'lumot turlarini o'qib, ularni
oddiy   formatda   chiqaradi.   cin.ignore()   satr   o'qishdan   oldin   buferni   tozalash   uchun
ishlatiladi.
19 Mashq 2: Ma'lumotlarni faylga yozish va o'qish
Vazifa :   Foydalanuvchidan   olingan   ma'lumotlarni   faylga   yozish   va   keyin   fayldan
o'qib ekranga chiqarish.
Dastur :
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
    string ism;
    int yosh;
    // Faylga yozish
    ofstream yozish("malumot.txt");
    cout << "Ismingizni kiriting: ";
    getline(cin, ism);
20     cout << "Yoshingizni kiriting: ";
    cin >> yosh;
    yozish << "Ism: " << ism << endl;
    yozish << "Yosh: " << yosh << endl;
    yozish.close();
    // Fayldan o'qish
    ifstream oqish("malumot.txt");
    string qator;
    cout << "\nFayldagi ma'lumotlar:\n";
    while (getline(oqish, qator)) {
        cout << qator << endl;
    }
    oqish.close();
    return 0;
}
Tahlil :   Dastur   foydalanuvchi   ma'lumotlarini   faylga   yozadi   va   keyin   uni   o'qib
chiqaradi. Fayl ochish va yopish jarayonlari to'g'ri bajarilishi ta'minlanadi.
21 Mashq 3: Formatlangan Jadval Chiqarish
Vazifa : Talabalar ro'yxatini formatlangan jadval sifatida ekranga chiqarish.
Dastur :
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
       cout << left << setw(20) << "Ism" << setw(10) << "ID" << setw(10) << "Baho" <<
endl;
    cout << string(40, '-') << endl;
    cout << left << setw(20) << "Ali" << setw(10) << 1001 << setw(10) << 85.5 << endl;
    cout << left << setw(20) << "Vali" << setw(10) << 1002 << setw(10) << 90.0 << endl;
       cout << left << setw(20) << "Sardor" << setw(10) << 1003 << setw(10) << 78.5 <<
endl;
    return 0;
}
Tahlil : Ushbu dastur setw yordamida ma'lumotlarni jadval shaklida chiqaradi. left
operatori matnni chapga tekislaydi.
22 Mashq 4: Talabalar Ro'yxatini Boshqarish
Vazifa : Talabalar ro'yxatini faylga yozish va undan o'qish dasturini ishlab chiqish.
Dastur :
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
using namespace std;
struct Talaba {
    string ism;
    int id;
    double baho;
};
void malumotYoz(const Talaba& talaba) {
    ofstream fayl("talabalar.txt", ios::app);
    fayl << left << setw(20) << talaba.ism << setw(10) << talaba.id << setw(10) << fixed
<< setprecision(2) << talaba.baho << endl;
    fayl.close();
}
void malumotOqish() {
    ifstream fayl("talabalar.txt");
    string ism;
    int id;
    double baho;
       cout << left << setw(20) << "Ism" << setw(10) << "ID" << setw(10) << "Baho" <<
endl;
    cout << string(40, '-') << endl;
23     while (fayl >> ism >> id >> baho) {
                cout   <<   left   <<   setw(20)   <<   ism   <<   setw(10)   <<   id   <<   setw(10)   <<   fixed   <<
setprecision(2) << baho << endl;
    }
    fayl.close();
}
int main() {
    Talaba talaba;
    cout << "Talaba ma'lumotlarini kiriting:\n";
    cout << "Ism: ";
    getline(cin, talaba.ism);
    cout << "ID: ";
    cin >> talaba.id;
    cout << "Baho: ";
    cin >> talaba.baho;
    malumotYoz(talaba);
    cout << "\nFayldagi ma'lumotlar:\n";
    malumotOqish();
    return 0;
}
Tahlil :   Dastur   struktura   yordamida   talaba   ma'lumotlarini   faylga   yozadi   va   o'qib
chiqaradi. Formatlash setw va setprecision orqali amalga oshiriladi.
24           
Asosiy loyiha: talabalar ma'lumotlarini boshqarish
Vazifa :   Talabalar   ma'lumotlarini   (ism,   ID,   baholar)   faylga   yozish,   o'qish   va
formatlangan holda chiqarish dasturini ishlab chiqish. Dastur menyuga asoslangan bo'lib,
foydalanuvchiga talaba qo'shish, ro'yxatni ko'rish va chiqish imkonini beradi.
Dastur :
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
using namespace std;
struct Talaba {
    string ism;
    int id;
    double baho;
};
void malumotYoz(const Talaba& talaba) {
    ofstream fayl("talabalar.txt", ios::app);
    if (!fayl.is_open()) {
        cout << "Faylni ochib bo'lmadi!" << endl;
        return;
    }
    fayl << left << setw(20) << talaba.ism << setw(10) << talaba.id << setw(10) << fixed
<< setprecision(2) << talaba.baho << endl;
    fayl.close();
}
void malumotOqish() {
25     ifstream fayl("talabalar.txt");
    if (!fayl.is_open()) {
        cout << "Faylni ochib bo'lmadi!" << endl;
        return;
    }
    string ism;
    int id;
    double baho;
       cout << left << setw(20) << "Ism" << setw(10) << "ID" << setw(10) << "Baho" <<
endl;
    cout << string(40, '-') << endl;
    while (fayl >> ism >> id >> baho) {
                cout   <<   left   <<   setw(20)   <<   ism   <<   setw(10)   <<   id   <<   setw(10)   <<   fixed   <<
setprecision(2) << baho << endl;
    }
    fayl.close();
}
int main() {
    int tanlov;
    do {
        cout << "\n1. Talaba qo'shish\n2. Talabalarni ko'rish\n3. Chiqish\nTanlov: ";
        cin >> tanlov;
        cin.ignore();
        if (tanlov == 1) {
            Talaba talaba;
            cout << "Ism: ";
            getline(cin, talaba.ism);
            cout << "ID: ";
            cin >> talaba.id;
            cout << "Baho: ";
26             cin >> talaba.baho;
            cin.ignore();
            malumotYoz(talaba);
        } else if (tanlov == 2) {
            malumotOqish();
        }
    } while (tanlov != 3);
    return 0;
}
Tahlil :   Dastur   foydalanuvchiga   menyudan   foydalanish   imkonini   beradi.   Talaba
ma'lumotlari   faylga   formatlangan   holda   yoziladi   va   o'qiladi.   Xatolarni   tekshirish   fayl
ochishda qo'llaniladi.
27  
                                                
28 Xulosa
Ushbu   kurs   ishi   C++   dasturlash   tilida   ma'lumotlarni   formatli   o'qish   va   yozish
funksiyalarini   o'rganishda   muhim   qadam   bo'ldi.   Amaliy   mashqlar   va   loyiha   orqali
talabalar konsol va fayllar bilan ishlashni o'rgandi. Asosiy loyiha talabalar ma'lumotlarini
boshqarish   dasturi   sifatida   ishlab   chiqildi,   bu   real   hayotdagi   ma'lumotlarni   boshqarish
tizimlariga misol bo'la oladi.
Kurs ishi davomida quyidagi ko'nikmalar o'zlashtirildi:
 <iostream> va <fstream> kutubxonalaridan foydalanish.
 Formatlash vositalari (setw, setprecision) bilan ishlash.
 Fayllar bilan ishlash va xatolarni boshqarish.
 Strukturalangan dasturlash va modulli dastur tuzish
                  Foydalanilgan adabiyotlar va internet resurslar
1.Anton,   H.,   Rorres,   C.   Elementary   Linear   Algebra   (11-th   Edition).   Wiley,   2014   –
Chiziqli   tenglamalar   sistemalarini   yechish   va   Gauss   usuli   haqida   fundamental   nazariy
ma’lumotlar. 
2.Press, W. H., Teukolsky, S. A., Vetterling, W. T., Flannery, B. P. Numerical Recipes:
The   Art   of   Scientific   Computing   (3rd   Edition).   Cambridge   University   Press,   2007   –
Gauss eliminatsiyasini kompyuterda amalga oshirish algoritmlari va C++ misollari.
3.Usmonov,   M.   T.   “Chiziqli   algebraik   tenglamalar   sistemasini   yechishning   matritsa,
Gauss   va   Gauss–   Jordan   usullari.”   Science   and   Education,   2(8),   2021,   pp.   312-322   –
Mazkur   maqolada   Gauss   usulining   nazariyasi   va   amaliy   qo‘llanilishi   batafsil   tahlil
qilingan.
4.Wikipedia – System of linear equations maqolasi, 2023 (onlayn): chiziqli tenglamalar
sistemasi tushunchasi va uning amaliy qo‘llanilishi .
29 5.Wikipedia   –   Gaussian   elimination   maqolasi,   2023   (onlayn):   Gauss   eliminatsiyasi
algoritmining tavsifi va qator amallari .
6.GeeksforGeeks   –   Gaussian   Elimination   to   Solve   Linear   Equations,   2025   .   Onlayn
manba, Gauss usulini tushuntirish va implementatsiya bo‘yicha qo‘llanma.
                        7. Josuttis, Nicolai M. The C++ Standard Library: A Tutorial and           
                           Reference, 2nd Edition. Addison-Wesley, 2012.
                        8. Sultonov A.K., Yo‘ldoshev A.X. “Informatika va dasturlash asoslari 
                        9.  Abdulhayev B.O. “Algoritmlar va dasturlash asoslari”, Samarqand: SamDU            
            10. Kernighan B.W., Ritchie D.M. “The C++ Dasturlash tili ”, Prentice Hall, 1988. 
30