14. File — ikkilik fayllar
Barcha masalalarda ikkilik fayl (binary file) bilan ishlash nazarda tutiladi. Go'da tiplangan fayl yo'q: sonlar encoding/binary paketi yordamida qat'iy o'lchamli turlarda (int32, float64) yoziladi va o'qiladi. Yozuv (record) Go'da struct bilan ifodalanadi, uning satr maydonlari faylda qat'iy uzunlikdagi bayt massivi (masalan [20]byte) sifatida saqlanadi. Fayl nomi va element turi masala shartida ko'rsatiladi yoki dastur ichida belgilanadi.
Yozish va o'qish
1. N ta butun sondan iborat massiv berilgan. Ularni ikkilik faylga yozing.
Misol: [3 -1 7] → fayl [3 -1 7] (int32, 12 bayt)
2. Ikkilik fayldan butun sonlarni o'qib, ularning yig'indisini toping.
Misol: [3 -1 7] → 9
3. Ikkilik fayldagi barcha sonlarni ekranga chiqaring va ularning sonini (necha ta ekanini) aniqlang.
Misol: [4 8 15] → 4 8 15, soni 3
4. Ikkilik fayldagi sonlarning eng katta va eng kichigini toping.
Misol: [3 9 -2 5] → eng katta 9, eng kichik -2
5. N ta haqiqiy sonni klaviaturadan kiritib, ularni ikkilik faylga yozuvchi va so'ng shu faylni o'qib ekranga chiqaruvchi dastur tuzing.
Misol: N = 3: 1.5 2.25 3 → fayl [1.5 2.25 3] (float64, 24 bayt), ekranga 1.5 2.25 3
Fayl hosil qilish
6. N berilgan. 1 dan N gacha bo'lgan sonlarning kvadratlaridan iborat ikkilik fayl yarating.
Misol: N = 5 → [1 4 9 16 25]
7. A, D va N berilgan. Birinchi hadi A, ayirmasi D bo'lgan arifmetik progressiyaning dastlabki N ta hadidan iborat ikkilik fayl yarating.
Misol: A = 2, D = 3, N = 5 → [2 5 8 11 14]
8. N berilgan. Dastlabki N ta Fibonachchi sonidan iborat ikkilik fayl yarating.
Misol: N = 7 → [1 1 2 3 5 8 13]
9. N berilgan. −50 dan 50 gacha bo'lgan N ta tasodifiy butun sondan iborat ikkilik fayl yarating va uni ekranga chiqaring.
Misol: N = 4 → masalan [-12 37 5 -50] (har ishga tushirishda boshqacha, lekin -50…50 oralig'ida)
10. N ta satr klaviaturadan kiritiladi. Ularni satrlar fayliga (har bir element — satr) yozing.
Misol: olma, anor, uzum → fayl: [olma anor uzum]
11. S satri berilgan. Uning belgilarini belgilar fayliga (har bir element — bitta belgi) yozing.
Misol: "salom" → fayl: [s a l o m]
12. Haqiqiy sonlar fayli berilgan. Undagi sonlarning butun qismlaridan iborat butun sonlar faylini hosil qiling.
Misol: [2.7 -1.5 4.9] → [2 -1 4]
13. Natural sonlar fayli berilgan. Har bir sonning raqamlari yig'indisidan iborat yangi fayl hosil qiling.
Misol: [123 45 7] → [6 9 7]
Qidirish va tahlil
14. Ikkilik fayl va X soni berilgan. X faylda bor-yo'qligini va necha marta uchraganini aniqlang.
Misol: [3 5 3 1 3], X = 3 → bor, 3 marta; X = 4 → yo'q
15. Ikkilik fayldagi sonlarning o'rta arifmetigini toping.
Misol: [2 4 9] → 5
16. Ikkilik fayldagi juft va toq sonlar sonini alohida sanang.
Misol: [1 2 3 4 6] → juft 3, toq 2
17. Ikkilik fayldagi sonlar o'suvchi tartibda joylashganligini tekshiring.
Misol: [1 3 5 7] → true; [1 5 3] → false
18. Ikkilik fayldagi sonlarning necha foizi musbat ekanligini aniqlang.
Misol: [3 -1 0 4] → 50%
19. Ikkilik faylni o'qib, undagi sonlarning median qiymatini toping.
Misol: [7 1 5 3] → 4; [7 1 5] → 5
20. Ikkilik fayldagi sonlar ketma-ketligida eng uzun o'suvchi segmentni toping.
Misol: [1 3 5 2 4 6 8] → 4 (2 4 6 8)
21. Ikkilik fayl berilgan. Faylni oxirigacha o'qimasdan, uning hajmi (baytlarda) va bitta elementning hajmi orqali undagi elementlar sonini aniqlang.
Misol: fayl hajmi 20 bayt, element int32 (4 bayt) → 5
Fayl ustida amallar
22. Ikkilik fayldagi barcha sonlarni 2 ga ko'paytirib, natijani yangi faylga yozing.
Misol: [1 -2 3] → [2 -4 6]
23. Ikkilik fayldagi manfiy sonlarni olib tashlab, qolganlarini yangi faylga yozing.
Misol: [3 -1 4 -5] → [3 4]
24. Ikkita ikkilik fayldagi sonlarni birlashtirib, uchinchi faylga yozing.
Misol: [1 2] va [3 4 5] → [1 2 3 4 5]
25. Ikkilik fayldagi sonlarni teskari tartibda yangi faylga yozing.
Misol: [1 2 3] → [3 2 1]
26. Ikkilik fayldagi sonlarni o'suvchi tartibda saralab, o'sha faylga (yoki yangi faylga) qayta yozing.
Misol: [5 2 4] → [2 4 5]
27. Ikkilik fayldagi sonlarni ikkita faylga (musbat va manfiy/nol) ajratib yozing.
Misol: [3 -1 0 5 -2] → musbat [3 5], manfiy va nol [-1 0 -2]
28. Ikkilik fayldagi sonlarni K ta guruhga (bloklarga) bo'lib, har bir guruhning yig'indisini alohida chiqaring.
Misol: [1 2 3 4 5 6], K = 3 → 3 7 11 ([1 2], [3 4], [5 6])
29. Ikkilik fayldagi sonlarni K songa bo'lib, bo'linmasi butun bo'lganlarini alohida faylga yozing.
Misol: [6 7 9 12], K = 3 → [6 9 12]
Elementlarga to'g'ridan-to'g'ri murojaat
30. Ikkilik fayl va K soni berilgan. Faylning K-elementini (faylni boshidan o'qimasdan, pozitsiyaga o'tish orqali) chiqaring; bunday element bo'lmasa, xabar chiqaring.
Misol: [10 20 30 40], K = 3 → 30; K = 7 → «bunday element yo'q»
31. Ikkilik fayl berilgan. Uning oxirgi elementini faylni boshidan o'qimasdan chiqaring.
Misol: [10 20 30] → 30
32. Ikkilik fayl berilgan. Faylning birinchi va oxirgi elementlarini faylning o'zida o'rin almashtiring.
Misol: [1 2 3 4] → [4 2 3 1]
33. Ikkilik fayl va K va X sonlari berilgan. Faylning K-elementini X bilan almashtiring (faylning o'zida).
Misol: [1 2 3 4], K = 2, X = 9 → [1 9 3 4]
34. Ikkilik fayl berilgan. Undagi eng katta va eng kichik elementlarni faylning o'zida o'rin almashtiring.
Misol: [3 9 1 5] → [3 1 9 5]
35. Ikkilik fayl berilgan. Uning juft o'rindagi elementlarini oxiridan boshlab (pozitsiyaga o'tish orqali) chiqaring.
Misol: [1 2 3 4 5 6] → 6 4 2
36. Ikkilik fayl berilgan. Uning o'rtadagi elementini (elementlar soni toq bo'lsa) yoki o'rtadagi ikkita elementini (juft bo'lsa) chiqaring.
Misol: [1 2 3 4 5] → 3; [1 2 3 4] → 2 3
37. Ikkilik fayl berilgan. Undagi barcha manfiy elementlarni faylning o'zida nol bilan almashtiring.
Misol: [3 -1 4 -5] → [3 0 4 0]
38. O'sish tartibida saralangan ikkilik fayl va X soni berilgan. Pozitsiyaga o'tish orqali ikkilik qidiruv usulida X ni faylda toping.
Misol: [1 3 5 7 9], X = 7 → 4-o'rin
39. Ikkilik fayl berilgan. Undagi har bir elementni faylning o'zida uning kvadrati bilan almashtiring.
Misol: [2 -3 4] → [4 9 16]
40. Ikkilik fayldagi barcha sonlarni faylning o'zida (joyida) teskari tartibga o'tkazing (yangi fayl yaratmasdan).
Misol: [1 2 3 4] → [4 3 2 1]
Faylga qo'shish va o'chirish
41. Ikkilik fayl va X soni berilgan. X ni fayl oxiriga qo'shing.
Misol: [1 2], X = 9 → [1 2 9]
42. Ikkilik fayl va X soni berilgan. X ni fayl boshiga qo'shing (qolgan elementlar bitta pozitsiyaga suriladi).
Misol: [1 2], X = 9 → [9 1 2]
43. Ikkilik fayl va K va X sonlari berilgan. X ni faylning K-o'rniga qo'shing.
Misol: [1 2 3], K = 2, X = 9 → [1 9 2 3]
44. Ikkilik fayl va K soni berilgan. Faylning K-elementini o'chiring (keyingi elementlar suriladi, fayl bitta elementga qisqaradi).
Misol: [1 2 3], K = 2 → [1 3]
45. Ikkilik fayl berilgan. Undagi barcha juft elementlarni o'chiring.
Misol: [1 2 3 4 5] → [1 3 5]
46. Ikkilik fayl berilgan. Uning birinchi yarmini o'chiring (elementlar soni toq bo'lsa, o'rtadagi element qoladi).
Misol: [1 2 3 4 5] → [3 4 5]
47. Ikkilik fayl berilgan. Har bir manfiy elementdan keyin nol qo'shing.
Misol: [3 -1 4 -5] → [3 -1 0 4 -5 0]
48. Ikkilik fayl berilgan. Takrorlanuvchi qiymatlarni o'chirib, har bir qiymatning faqat birinchi uchrashini qoldiring.
Misol: [1 2 1 3 2] → [1 2 3]
49. Ikkilik fayl va N soni berilgan. Fayl uzunligini N ga keltiring: elementlar ko'p bo'lsa, ortiqchalarini o'chiring; kam bo'lsa, oxiriga nollar qo'shing.
Misol: [1 2 3 4], N = 2 → [1 2]; N = 6 → [1 2 3 4 0 0]
50. O'sish tartibida saralangan ikkita ikkilik fayl berilgan. Ularni birlashtirib, saralangan uchinchi fayl hosil qiling.
Misol: [1 4 9] va [2 3 10] → [1 2 3 4 9 10]
Satr va belgi fayllari
51. Satrlar fayli berilgan. Undagi eng uzun satrni va uning tartib raqamini toping.
Misol: [bir ikki uchta] → uchta, 3-o'rin
52. Satrlar fayli berilgan. Satrlarni teskari tartibda yangi faylga yozing.
Misol: [bir ikki uchta] → [uchta ikki bir]
53. Satrlar fayli va C belgisi berilgan. C belgisidan boshlanuvchi satrlarni yangi faylga yozing.
Misol: [olma anor uzum ananas], C = 'a' → [anor ananas]
54. Belgilar fayli berilgan. Undagi raqam belgilari sonini toping.
Misol: [a 1 b 2 3] → 3
55. Belgilar fayli berilgan. Undagi barcha kichik lotin harflarini faylning o'zida katta harflarga almashtiring.
Misol: [S a l o m] → [S A L O M]
56. Satrlar fayli berilgan. Satrlarni uzunligi bo'yicha o'sish tartibida saralab, faylga qayta yozing.
Misol: [uchta bir ikki] → [bir ikki uchta]
57. Satrlar fayli berilgan. Har bir satr uzunligidan iborat butun sonlar faylini hosil qiling.
Misol: [bir ikki uchta] → [3 4 5]
58. Belgilar fayli berilgan. Undagi so'zlar (bo'shliq bilan ajratilgan belgilar guruhlari) sonini toping.
Misol: "bu juda yaxshi" → 3
Bir nechta fayllar bilan ishlash
59. N ta ikkilik fayl nomi berilgan. Barcha fayllar mazmunini ketma-ket birlashtirib, yangi faylga yozing.
Misol: [1 2], [3], [4 5] → [1 2 3 4 5]
60. Ikkilik fayl berilgan. Uni ikkita faylga ajrating: birinchisiga toq o'rindagi, ikkinchisiga juft o'rindagi elementlar yozilsin.
Misol: [1 2 3 4 5] → toq o'rinlar [1 3 5], juft o'rinlar [2 4]
61. Uchta ikkilik fayl berilgan. Ularning mos elementlari yig'indisidan iborat to'rtinchi faylni hosil qiling (eng qisqa fayl uzunligi bo'yicha).
Misol: [1 2 3], [10 20 30 40], [100 200] → [111 222]
62. Ikkita ikkilik fayl berilgan. Ularning mazmunini vaqtinchalik fayl yordamida o'rin almashtiring.
Misol: A = [1 2], B = [3 4 5] → A = [3 4 5], B = [1 2]
63. Ikkilik fayl va yangi fayl nomi berilgan. Faylning nusxasini shu nom bilan yarating.
Misol: data.bin, copy.bin → copy.bin mazmuni data.bin bilan bir xil
64. Fayl nomi berilgan. Bunday fayl mavjudligini tekshiring; mavjud bo'lsa, uni o'chiring va xabar chiqaring.
Misol: temp.bin mavjud → o'chiriladi va «fayl o'chirildi» deb chiqadi; mavjud bo'lmasa → «fayl topilmadi»
65. Ikkilik fayl va K soni berilgan. Faylni K tadan elementli bir nechta faylga bo'ling (fayl nomlari: nom1, nom2, …).
Misol: [1 2 3 4 5], K = 2 → nom1: [1 2], nom2: [3 4], nom3: [5]
66. Ikkita ikkilik fayl berilgan. Birinchi faylda bor, ikkinchisida yo'q elementlarni uchinchi faylga yozing.
Misol: [1 2 3 4] va [3 4 5] → [1 2]
67. Ikkita ikkilik fayl berilgan. Ular bir xil ekanligini elementma-element solishtirib tekshiring.
Misol: [1 2 3] va [1 2 3] → true; [1 2 3] va [1 2 4] → false
Yozuvlar (struct) fayli
68. Talaba yozuvlari (ism, uch baho) saqlangan ikkilik fayl berilgan. Barcha talabalarning o'rtacha bahosini toping.
Misol: Ali 5 4 3, Vali 5 5 4 → Ali — 4, Vali — 4.6667; umumiy o'rtacha 4.3333
69. Talaba yozuvlari saqlangan faylda eng yuqori o'rtacha bahoga ega talabani toping.
Misol: Ali 5 4 3, Vali 5 5 4 → Vali
70. Xodim yozuvlari (ism, maosh) saqlangan faylda maoshi berilgan qiymatdan yuqori bo'lganlar sonini toping.
Misol: Anvar 12000000, Bekzod 9000000, Dilorom 7000000, qiymat 8000000 → 2
71. Mahsulot yozuvlari (nomi, narxi, soni) saqlangan faylda umumiy qiymatni (narx × son yig'indisi) toping.
Misol: Non 4000 50, Sut 9000 20, Go'sht 90000 5 → 830000
72. Talaba yozuvlari faylida bahosi eng past bo'lgan talabaning yozuvini o'chirib (qolganlarini yangi faylga yozib), natijani chiqaring.
Misol: Ali 85, Vali 55, Sevara 92 → yangi fayl: Ali 85, Sevara 92
73. Talaba yozuvlari faylida barcha talabalarni o'rtacha bahosi bo'yicha kamayish tartibida saralab, yangi faylga yozing.
Misol: Ali 5 4 3 (4), Vali 5 5 4 (4.67), Sevara 3 4 4 (3.67) → Vali, Ali, Sevara
74. «Kitob» yozuvlari (Muallif, Nomi, Yil, Narx) saqlangan fayl va muallif ismi berilgan. Shu muallifning barcha kitoblarini chiqaring.
Misol: Qodiriy; O'tkan kunlar; 1925; 40000, Qodiriy; Mehrobdan chayon; 1929; 35000, Navoiy; Xamsa; 1485; 60000, muallif Qodiriy → O'tkan kunlar, Mehrobdan chayon
75. «Kitob» yozuvlari saqlangan fayl berilgan. Eng eski kitobni toping.
Misol: Xamsa (1485), O'tkan kunlar (1925) → Xamsa
76. «Kitob» yozuvlari saqlangan fayl berilgan. Kitoblarni chop etilgan yili bo'yicha saralab, yangi faylga yozing.
Misol: O'tkan kunlar 1925, Xamsa 1485, Mehrobdan chayon 1929 → Xamsa, O'tkan kunlar, Mehrobdan chayon
77. «Xodim» yozuvlari (Ism, Tug'ilgan yil, Maosh) saqlangan fayl va joriy yil berilgan. Yoshi 30 dan katta xodimlarni chiqaring.
Misol: Anvar 1985, Bekzod 1998, Dilorom 1990, joriy yil 2024 → Anvar (39), Dilorom (34)
78. «Xodim» yozuvlari saqlangan fayl berilgan. Barcha xodimlarning maoshini faylning o'zida 10% ga oshiring.
Misol: Anvar 12000000, Bekzod 9000000 → 13200000, 9900000
79. Nomi bo'yicha saralangan «Mahsulot» yozuvlari fayli va yangi yozuv berilgan. Yangi yozuvni saralanganlik saqlanadigan o'ringa qo'shing.
Misol: [Non Sut], yangi Pista → [Non Pista Sut]
80. «Mahsulot» yozuvlari fayli va mahsulot nomi berilgan. Shu nomli yozuvni fayldan o'chiring.
Misol: [Non Sut Un], nom Sut → [Non Un]
81. «Mahsulot» yozuvlari (Nomi, Soni) saqlangan ikkita fayl berilgan. Ularni birlashtiring: bir xil nomli mahsulotlar bitta yozuvga birlashtirilib, soni qo'shilsin.
Misol: [Non 10, Sut 5] va [Non 3, Un 7] → [Non 13, Sut 5, Un 7]
82. «Talaba» yozuvlari (Ism, Guruh, Baho) saqlangan fayl berilgan. Talabalarni guruhlar bo'yicha alohida fayllarga ajrating.
Misol: Ali G1 85, Vali G2 55, Sevara G1 92 → g1: Ali, Sevara; g2: Vali
83. «Talaba» yozuvlari saqlangan fayl berilgan. Undan jadval ko'rinishidagi matnli hisobot faylini hosil qiling (ustunlar tekislangan bo'lsin).
Misol: Ali G1 85, Vali G2 55 → Ism Guruh Baho / Ali G1 85 / Vali G2 55
Matritsa va murakkab tuzilmalar
84. Ikkilik faylda saqlangan matritsa (qatorlar ketma-ket yozilgan, o'lchami oldindan berilgan) elementlari yig'indisini toping.
Misol: 2×3, elementlar 1 2 3 4 5 6 → 21
85. N×M matritsa berilgan. Uni ikkilik faylga yozing: avval N va M, so'ng elementlar qatorlar bo'yicha.
Misol: [[1 2 3] [4 5 6]] → fayl [2 3 1 2 3 4 5 6]
86. Oldingi masaladagi ko'rinishda matritsa saqlangan fayl berilgan. Transponirlangan matritsani xuddi shu ko'rinishda yangi faylga yozing.
Misol: [2 3 1 2 3 4 5 6] → [3 2 1 4 2 5 3 6]
87. Matritsa saqlangan fayl (avval N va M, so'ng elementlar) va K soni berilgan. Pozitsiyaga o'tish orqali matritsaning K-qatorini chiqaring.
Misol: [2 3 1 2 3 4 5 6], K = 2 → 4 5 6
88. Kvadrat matritsa saqlangan fayl berilgan. Pozitsiyaga o'tish orqali uning bosh diagonal elementlarini chiqaring.
Misol: [3 3 1 2 3 4 5 6 7 8 9] → 1 5 9
89. Butun sonlar fayli berilgan. Ketma-ket joylashgan bir xil ishorali elementlar guruhlarining (seriyalarining) uzunliklaridan iborat yangi fayl hosil qiling.
Misol: [3 5 -1 -2 -3 4] → [2 3 1]
90. Xotiraga sig'maydigan katta ikkilik fayl berilgan. Uni ikkita yordamchi fayl yordamida tabiiy birlashtirish usulida saralang (fayl mazmuni to'liq massivga o'qilmasin).
Misol: [5 2 8 1 9 3] → o'suvchi bo'laklar [5], [2 8], [1 9], [3] → [1 2 3 5 8 9]