15. Text — matnli fayllar
Barcha masalalarda matnli fayl (text file) bilan ishlash nazarda tutiladi.
Asosiy o'qish va yozish
1. N ta so'zni klaviaturadan kiritib, ularni matnli faylga (har biri alohida qatorda) yozing.
Misol: N = 3: olma, anor, uzum → fayl: olma / anor / uzum
2. Matnli fayldagi qatorlar sonini sanang.
Misol: fayl: bir ikki / uch / (bo'sh qator) / to'rt → 4
3. Matnli fayldagi barcha so'zlar sonini sanang.
Misol: fayl: bir ikki / uch to'rt besh → 5
4. Matnli fayldagi eng uzun qatorni (va uning uzunligini) toping.
Misol: fayl: bir / ikki uch / to'rt → ikki uch, uzunligi 8
5. Matnli fayldagi barcha belgilar (bo'shliqlardan tashqari) sonini sanang.
Misol: fayl: a b c / de f → 6
Qidirish va tahlil
6. Matnli fayl va C belgisi berilgan. C belgisi faylda necha marta uchrashini sanang.
Misol: fayl: banana / ananas, C = 'a' → 6
7. Matnli fayl va S so'zi berilgan. S so'zi faylda necha marta uchrashini va qaysi qatorlarda uchrashini toping.
Misol: fayl: men Go o'rganaman / Go oson / Python, S = "Go" → 2 marta, 1- va 2-qatorlarda
8. Matnli fayldagi har bir qatordagi so'zlar sonini alohida chiqaring.
Misol: fayl: bir ikki / uch / to'rt besh olti → 2 1 3
9. Matnli fayldagi bo'sh qatorlar sonini sanang.
Misol: fayl: a / (bo'sh qator) / b / (bo'sh qator) → 2
10. Matnli fayldagi eng ko'p uchraydigan so'zni toping.
Misol: fayl: bir ikki bir / uch bir ikki → bir (3 marta)
Belgilar va so'zlar statistikasi
11. Matnli fayl berilgan. Undagi har bir lotin harfining uchrashlar sonini (katta-kichik harf farqlanmaydi) kamayish tartibida chiqaring.
Misol: fayl: aab / Ba → a: 3, b: 2
12. Matnli fayl berilgan. Undagi unli va undosh lotin harflari sonini alohida toping.
Misol: fayl: Go tili → unlilar 3 (o, i, i), undoshlar 3 (G, t, l)
13. Matnli fayl berilgan. So'zlarning uzunlik bo'yicha taqsimotini chiqaring: 1 harfli so'zlar soni, 2 harfli so'zlar soni va hokazo.
Misol: fayl: a bo ona bir ikki uch → 1 harfli: 1, 2 harfli: 1, 3 harfli: 3, 4 harfli: 1
14. Matnli fayl berilgan. Undagi barcha so'zlarni takrorlanishlarsiz, alifbo tartibida yangi faylga yozing.
Misol: fayl: uch bir uch ikki → yangi fayl: bir / ikki / uch
15. Matnli fayl berilgan. Undagi eng uzun so'zni va u joylashgan qator raqamini toping.
Misol: fayl: bir ikki / uchtasi bor → uchtasi, 2-qator
16. Matnli fayl berilgan. Har bir qatordagi raqam belgilari sonini chiqaring.
Misol: fayl: a1b22 / xyz / 2026 → 3 0 4
17. Matnli fayl berilgan. So'zlar soni eng ko'p bo'lgan qatorni va uning raqamini toping.
Misol: fayl: bir ikki / uch to'rt besh / olti → 2-qator: uch to'rt besh
18. Ikkita matnli fayl berilgan. Birinchi faylda uchrab, ikkinchisida uchramaydigan so'zlarni chiqaring.
Misol: 1-fayl: bir ikki uch, 2-fayl: ikki to'rt → bir uch
O'zgartirish va nusxalash
19. Matnli fayldagi barcha harflarni katta harfga o'tkazib, yangi faylga yozing.
Misol: fayl: salom → yangi fayl: SALOM
20. Matnli faylda berilgan so'zni boshqa so'zga almashtirib, natijani yangi faylga yozing.
Misol: fayl: men Go bilan Go, Go → Python → yangi fayl: men Python bilan Python
21. Matnli fayldagi qatorlarni teskari tartibda (oxirgi qator birinchi bo'lib) yangi faylga yozing.
Misol: fayl: 1-qator / 2-qator / 3-qator → yangi fayl: 3-qator / 2-qator / 1-qator
22. Matnli fayldagi har bir qatorni o'zini teskari qilib (harflar tartibi teskari) yangi faylga yozing.
Misol: fayl: salom / dunyo → yangi fayl: molas / oynud
23. Matnli fayldagi bo'sh qatorlarni olib tashlab, qolganlarini yangi faylga yozing.
Misol: fayl: a / (bo'sh qator) / b → yangi fayl: a / b
24. Matnli faylning har bir qatoridagi bo'shliqlarni bittadan qoldirib (ortiqcha bo'shliqlarni olib tashlab), yangi faylga yozing.
Misol: fayl: bir ikki uch → yangi fayl: bir ikki uch
25. Matnli faylda har bir qator boshiga qator raqamini qo'shib (masalan "1. matn"), yangi faylga yozing.
Misol: fayl: olma / anor → yangi fayl: 1. olma / 2. anor
Qatorlarni tahrirlash
26. Ikkita matnli fayl berilgan. Ularni qatorma-qator solishtirib, farq qiluvchi birinchi qator raqamini toping (fayllar bir xil bo'lsa, 0).
Misol: 1-fayl: a / b / c, 2-fayl: a / x / c → 2; bir xil fayllar → 0
27. Matnli fayl, K soni va S satri berilgan. Faylning K-qatoridan keyin S satrini yangi qator sifatida qo'shing.
Misol: fayl: a / b / c, K = 2, S = "X" → a / b / X / c
28. Matnli fayl va K soni berilgan. Faylning K-qatorini o'chiring.
Misol: fayl: a / b / c, K = 2 → a / c
29. Matnli fayl berilgan. Ketma-ket takrorlanuvchi bir xil qatorlar guruhlarining har biridan faqat bittasini qoldiring.
Misol: fayl: a / a / b / a → a / b / a
30. Matnli fayl va K soni berilgan. Har bir qatorni Sezar shifri bilan (K ta siljitish) shifrlab, yangi faylga yozing. So'ng shifrlangan faylni deshifrlab, asl matn bilan solishtiring.
Misol: fayl: abc xyz, K = 3 → shifrlangan: def abc; deshifrlangandan keyin abc xyz — asl matn bilan mos
31. Matnli faylning har bir qatoridagi so'zlarni uzunligi bo'yicha o'suvchi tartibda saralab, natijani yangi faylga yozing.
Misol: fayl: ikki bir uch → bir uch ikki
32. Matnli faylning qatorlarini uzunligi bo'yicha o'suvchi tartibda saralab, yangi faylga yozing.
Misol: fayl: uchta / bir / ikki → bir / ikki / uchta
33. Ikkita matnli faylni birlashtirib (qatorlarini ketma-ket qo'shib), uchinchi faylga yozing.
Misol: 1-fayl: a / b, 2-fayl: c → 3-fayl: a / b / c
Matnni formatlash
34. Matnli fayl va K soni berilgan. Har bir qatorni K belgili kenglikda o'ng tomonga tekislab (chapdan bo'shliqlar qo'shib), yangi faylga yozing.
Misol: fayl: go / dastur, K = 8 → go / dastur
35. Matnli fayl va K soni berilgan. Har bir qatorni K belgili kenglikda markazga tekislab, yangi faylga yozing.
Misol: fayl: go / dastur, K = 8 → go / dastur
36. Matnli fayl va K soni berilgan. Matnni so'zlarni bo'lmagan holda uzunligi K dan oshmaydigan qatorlarga qayta taqsimlab, yangi faylga yozing.
Misol: fayl: bir ikki uch to'rt besh, K = 10 → bir ikki / uch to'rt / besh
37. Matnli fayl va K soni berilgan. Har bir qatorni ikki tomonga tekislang: so'zlar orasiga teng taqsimlangan qo'shimcha bo'shliqlar qo'shib, qator uzunligini roppa-rosa K ga yetkazing (oxirgi qator bundan mustasno).
Misol: fayl: a b c, K = 9 → a b c
38. Matnli fayl berilgan. Undagi har bir tabulyatsiya belgisini 4 ta bo'shliq bilan almashtirib, yangi faylga yozing.
Misol: fayl: \tsalom (\t — tabulyatsiya) → salom
39. Matnli fayl berilgan. Har bir gapning birinchi harfini katta harfga almashtirib, yangi faylga yozing (gaplar «.», «!», «?» belgilari bilan tugaydi).
Misol: fayl: salom. men Go o'rganaman! sen-chi? yaxshi. → Salom. Men Go o'rganaman! Sen-chi? Yaxshi.
40. Matnli fayl berilgan. Paragraflar bir-biridan bo'sh qator bilan ajratilgan. Har bir paragrafning birinchi qatori boshiga 4 ta bo'shliq qo'shing.
Misol: fayl: birinchi paragraf / davomi / (bo'sh qator) / ikkinchi paragraf → birinchi paragraf / davomi / (bo'sh qator) / ikkinchi paragraf
41. Matnli fayl va K soni berilgan. K dan uzun qatorlarni K belgidan bo'lib (so'z o'rtasidan bo'lish mumkin), yangi faylga yozing.
Misol: fayl: abcdefgh, K = 3 → abc / def / gh
Sonlar va sonli jadvallar
42. Matnli faylda har qatorda bittadan son yozilgan. Ularning yig'indisini toping.
Misol: fayl: 10 / 20 / 5 → 35
43. Matnli faylda sonlar bo'shliq bilan ajratilgan holda bitta qatorda yozilgan. Ularning eng kattasini toping.
Misol: fayl: 3 9 4 → 9
44. Matnli faylda sonlar berilgan. Ularning ichidan juft sonlarni ajratib, alohida faylga yozing.
Misol: fayl: 1 2 3 4 → 2 4
45. Matnli faylda sonlar berilgan. Ularni o'suvchi tartibda saralab, o'sha (yoki yangi) faylga yozing.
Misol: fayl: 5 1 4 → 1 4 5
46. Matnli faylda sonlar berilgan. Ularning o'rta arifmetigidan katta bo'lganlarini alohida faylga yozing.
Misol: fayl: 2 4 9 5 → o'rta arifmetik 5; yangi fayl: 9
47. Matnli fayl berilgan: har bir qatorda bo'shliq bilan ajratilgan sonlar yozilgan. Har bir qatordagi sonlar yig'indisini yangi faylga yozing.
Misol: fayl: 1 2 3 / 4 5 → 6 / 9
48. Matnli fayl berilgan: unda bir xil sondagi ustunlarga ega sonli jadval yozilgan. Har bir ustun yig'indisini toping.
Misol: fayl: 1 2 3 / 4 5 6 → 5 7 9
49. Matnli fayl berilgan: unda sonli matritsa yozilgan (har bir qator — matritsa qatori). Transponirlangan matritsani yangi faylga yozing.
Misol: fayl: 1 2 3 / 4 5 6 → 1 4 / 2 5 / 3 6
50. Matnli fayl berilgan: unda haqiqiy sonlar yozilgan. Sonlarni har bir qatorda 4 tadan, 2 ta kasr xonasi bilan va 10 belgili kenglikda o'ng tomonga tekislab, yangi faylga yozing.
Misol: fayl: 1.5 2.25 3 4.1 5.5 → 1.50 2.25 3.00 4.10 / 5.50
51. Butun sonlar saqlangan ikkilik fayl va K soni berilgan. Sonlarni matnli faylga har bir qatorda K tadan qilib yozing.
Misol: ikkilik fayl: 1 2 3 4 5 (int32), K = 2 → 1 2 / 3 4 / 5
52. Matnli fayl berilgan: unda bo'shliq va qator ko'chishlari bilan ajratilgan butun sonlar yozilgan. Ularni butun sonlar ikkilik fayliga yozing.
Misol: fayl: 1 2 / 3 → ikkilik fayl: 1 2 3 (int32, 12 bayt)
Amaliy masalalar
53. Talabalar ismi va bahosi matnli faylda (har qatorda "Ism Familiya Baho" formatida) saqlangan. Eng yuqori bahoga ega talabani toping.
Misol: fayl: Ali Valiyev 4 / Sevara Karimova 5 / Bobur Aliyev 3 → Sevara Karimova (5)
54. Xarajatlar ro'yxati matnli faylda (har qatorda "Nomi Summa" formatida) saqlangan. Umumiy xarajatni va eng katta xarajat turini toping.
Misol: fayl: Ijara 1500000 / Oziq-ovqat 800000 / Transport 200000 → jami 2500000, eng katta xarajat Ijara
55. Kitoblar ro'yxati matnli faylda (har qatorda "Muallif; Nomi; Yil" formatida) saqlangan. Berilgan yildan keyin chop etilgan kitoblarni chiqaring.
Misol: fayl: Alisher Navoiy; Xamsa; 1485 / Abdulla Qodiriy; O'tkan kunlar; 1925 / Chingiz Aytmatov; Jamila; 1958, yil 1900 → O'tkan kunlar, Jamila
56. Matnli faylda kundalik harorat qiymatlari (har qatorda bitta son) saqlangan. Haroratning eng katta o'sish (bir kundan ikkinchisiga) kunini toping.
Misol: fayl: 20 / 22 / 21 / 27 / 25 → 4-kun (+6)
57. Matnli faylda matn saqlangan (gaplar nuqta bilan ajratilgan). Har bir gapdagi so'zlar sonini alohida chiqaring.
Misol: fayl: Men Go o'rganaman. Bu qiziq. → 3 2
58. Vergul bilan ajratilgan qiymatlar (CSV) saqlangan matnli fayl va K soni berilgan. Har bir qatordagi K-ustun qiymatini chiqaring.
Misol: fayl: Ali,20,Toshkent / Vali,25,Samarqand, K = 3 → Toshkent, Samarqand
59. «kalit=qiymat» ko'rinishidagi sozlamalar saqlangan matnli fayl va kalit nomi berilgan. Shu kalitning qiymatini toping («#» bilan boshlanuvchi qatorlar izoh hisoblanadi va o'tkazib yuboriladi).
Misol: fayl: # sozlamalar / port=8080 / host=localhost, kalit port → 8080
60. «YYYY-MM-DD HH:MM daraja xabar» ko'rinishidagi yozuvlardan iborat log fayl berilgan. Har bir daraja (INFO, WARN, ERROR) bo'yicha yozuvlar sonini va eng oxirgi ERROR yozuvini chiqaring.
Misol: fayl: 2024-05-01 10:00 INFO Server ishga tushdi / 2024-05-01 10:05 ERROR Ulanish yo'q / 2024-05-01 10:07 WARN Sekin / 2024-05-01 10:10 ERROR Disk to'ldi → INFO: 1, WARN: 1, ERROR: 2; oxirgi ERROR: 2024-05-01 10:10 ERROR Disk to'ldi