Oʻzbek tilida sonlarni soʻz bilan ifodalash algoritmi

Baʼzi dasturlash maqsadlari uchun sonlarni soʻz bilan ifodalash talab etiladi. Masalan, koʻzi ojizlar uchun qurilma ekranidagi matnni oʻqib beradigan maxsus dasturlar raqam va sonlarni talaffuz etishda ularni avval soʻz (matn) bilan ifodalab oladilar.

Nutq simulyatorlari "1234" soniga duch kelsalar, uni qanday talaffuz etishni bilmay qoladilar. Shu bois, sonlarni oʻqitishdan oldin, ularni soʻz bilan ifodalash lozim. Yaʼni, "1234" avval "bir ming ikki yuz oʻttiz toʻrt" kabi matnga oʻgirilib, keyin nutq simulyatoriga uzatilishi lozim.

Sonlarni soʻz bilan ifodalash algoritmi u qaysi til uchun yozilishiga qarab boshqacha boʻlishi tabiiy. Chunki turli tillar murakkab sonlarni turlicha ifodalaydilar. Masalan, rus tilida 11 dan 19 gacha sonlar oʻz nomiga ega. Ingliz tilida ham shunday.

Oʻzbek tilida bu masala ancha oddiy, chunki ikki xonali sonlar oʻnlik nomi va birlik nomidan iborat (13 sonida "oʻn" qismi oʻnlik nomi, "uch" qismi birlik soni). Demak, algoritm oʻqilishi kerak boʻlgan sonni avval birlik, oʻnlik, yuzlik, minglik, millionlik, milliardlik va hokazo qismlarga ajratib olib, keyin ularga tegishli nomlarni biriktirishi kerak.

Bir xonali sonlarni oʻqish juda oson: har birini oʻz nomi bilan alishtirilsa bas (1 => "bir", 2 => "ikki" kabi).

Algoritm birdan koʻp xonali songa duch kelganda, avvalo sonning necha xonaliligini aniqlaydi. Soʻngra oxirgi uch xona (birlik qism), agar mavjud boʻlsa undan oldingi uch xona (minglik qism), mavjud boʻlsa undan ham oldingi uch xona (millionlik qism), va mavjud boʻlsa milliardlik qismlar aniqlanadi. Har bir qism ichidagi birlik, oʻnlik va yuzlik oʻz nomiga alishtiriladi. Va nihoyat, minglik, millionlik va milliardlik qismlardan keyin shu qismlar nomi qoʻshiladi.

Algoritm ishini aniq bir misolda koʻrib chiqsak. Misol uchun "204564" sonini algoritm quyidagicha soʻzlarga oʻgiradi:

1. Son necha xonaligi aniqlanib, qismlarga ajratiladi: 6 xonali, ikki qismdan iborat - minglik ("204") va birlik ("564").

2. Har bir qism soʻzlarga oʻgiriladi: 204 => "ikki yuz-u toʻrt", 564 => "besh yuz oltmish toʻrt".

3. Minglik qismdan keyin "ming" soʻzi qoʻshiladi: "ikki yuz-u toʻrt" => "ikki yuz-u toʻrt ming".

4. Qismlar birlashtiriladi: "ikki yuz-u toʻrt ming besh yuz oltmish toʻrt.

Algoritmning JavaScript tilida yozilgan versiyasini quyidagi gitdan topishingiz mumkin: https://github.com/juraevuz/num2textuz

Albatta, bu algoritm hali juda oddiy. Uni oddiy va oʻnlik kasrlarni ham oʻqiy oladigan qilib kengaytirish, boyitish mumkin. Balki oʻquvchilar orasidan shu bilan shugʻullanib, oʻz mahoratini oshirishni istaydiganlar topilar.


juraevuz

Muallif haqida

Juraev Javlon Iqtisodchi, yozuvchi, dasturchi.


Blogdagi so‘nggi maqolalar:


Birinchi bo‘ling!

Iltimos, fikr bildirish uchun saytga kiring yoki ro‘yxatdan o‘ting!