grzesiek11

Zapis słowny liczb #1

Feb 1st, 2018
559
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.71 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3.  
  4. using namespace std;
  5.  
  6. int obetnijRzad(int liczbaW, int rzad);
  7. string minusuj();
  8. string do20(int liczbaW);
  9. string dziesiatki(int liczbaW);
  10. string setki(int liczbaW);
  11. string tysiace(int liczbaW);
  12. string dziesiatkiTysiecy(int liczbaW);
  13. string setkiTysiecy(int liczbaW);
  14. string naTekst();
  15.  
  16. int liczba;
  17.  
  18. int main()
  19. {
  20.     while (1) {
  21.     cout << "Wprowadz liczbe do zamiany na tekst (od -999999 do 999999): ";
  22.     cin >> liczba;
  23.     if (liczba > 999999 || liczba < -999999)
  24.     {
  25.         cout << "Liczba przekracza mozliwy zakres." << endl;
  26.     }
  27.     else
  28.     {
  29.         cout << naTekst() << endl;
  30.     }
  31.     cin.ignore();
  32.     cin.get();
  33.     cout << setkiTysiecy(liczba) << endl;
  34.     }
  35. }
  36.  
  37. int obetnijRzad(int liczbaW, int rzad)
  38. {
  39.     int rzadR = 1;
  40.     int obcieta = 0;
  41.     int wielkoscRz = 0;
  42.     for (int i = 0; i < rzad; i++)
  43.     {
  44.         rzadR = rzadR * 10;
  45.     }
  46.     wielkoscRz = liczbaW / rzadR;
  47.     obcieta = liczbaW - wielkoscRz * rzadR;
  48.     return obcieta;
  49. }
  50.  
  51. string minusuj()
  52. {
  53.     if (liczba < 0)
  54.     {
  55.         liczba = -liczba;
  56.         return "minus ";
  57.     }
  58.     return "";
  59. }
  60.  
  61. string do20(int liczbaW)
  62. {
  63.     switch (liczbaW)
  64.     {
  65.     case 1:
  66.         return "jeden";
  67.     case 2:
  68.         return "dwa";
  69.     case 3:
  70.         return "trzy";
  71.     case 4:
  72.         return "cztery";
  73.     case 5:
  74.         return "piec";
  75.     case 6:
  76.         return "szesc";
  77.     case 7:
  78.         return "siedem";
  79.     case 8:
  80.         return "osiem";
  81.     case 9:
  82.         return "dziewiec";
  83.     case 10:
  84.         return "dziesiec";
  85.     case 11:
  86.         return "jedenascie";
  87.     case 12:
  88.         return "dwanascie";
  89.     case 13:
  90.         return "trzynascie";
  91.     case 14:
  92.         return "czternascie";
  93.     case 15:
  94.         return "pietnascie";
  95.     case 16:
  96.         return "szesnascie";
  97.     case 17:
  98.         return "siedemnascie";
  99.     case 18:
  100.         return "osiemnascie";
  101.     case 19:
  102.         return "dziewietnascie";
  103.     }
  104.     return "";
  105. }
  106.  
  107. string dziesiatki(int liczbaW)
  108. {
  109.     int liczbaT;
  110.     string doZwrotu = "";
  111.     if (liczbaW < 20)
  112.     {
  113.         return do20(liczbaW);
  114.     }
  115.     else
  116.     {
  117.         liczbaT = liczbaW / 10;
  118.         doZwrotu = doZwrotu + do20(liczbaT);
  119.         if (liczbaW >= 50 && liczbaW < 100)
  120.         {
  121.             doZwrotu = doZwrotu + "dziesiat ";
  122.         }
  123.         else if (liczbaW >= 30 && liczbaW < 50)
  124.         {
  125.             doZwrotu = doZwrotu + "dziesci ";
  126.         }
  127.         else if (liczbaW >=20 && liczbaW < 30)
  128.         {
  129.             doZwrotu = doZwrotu + "dziescia ";
  130.         }
  131.         doZwrotu = doZwrotu + do20(liczbaW - liczbaT * 10);
  132.     }
  133.     return doZwrotu;
  134. }
  135.  
  136. string setki(int liczbaW)
  137. {
  138.     int liczbaT;
  139.     string doZwrotu = "";
  140.     if (liczbaW >= 100)
  141.     {
  142.         liczbaT = liczbaW / 100;
  143.         doZwrotu = doZwrotu + dziesiatki(liczbaT);
  144.         if (liczbaW >= 500 && liczbaW < 1000)
  145.         {
  146.             doZwrotu = doZwrotu + "set";
  147.         }
  148.         else if (liczbaW >= 300 && liczbaW < 500)
  149.         {
  150.             doZwrotu = doZwrotu + "sta";
  151.         }
  152.         else if (liczbaW >=200 && liczbaW < 300)
  153.         {
  154.             doZwrotu = "dwiescie";
  155.         }
  156.         else if (liczbaW >=100 && liczbaW < 200)
  157.         {
  158.             doZwrotu = "sto";
  159.         }
  160.     }
  161.     return doZwrotu + " ";
  162. }
  163.  
  164. string tysiace(int liczbaW)
  165. {
  166.     int liczbaT;
  167.     string doZwrotu = "";
  168.     liczbaT = liczbaW / 1000;
  169.     doZwrotu = doZwrotu + dziesiatki(liczbaT);
  170.     if (liczbaW >= 5000 && liczbaW < 100000)
  171.     {
  172.         doZwrotu = doZwrotu + " tysiecy";
  173.     }
  174.     else if (liczbaW >= 2000 && liczbaW < 5000)
  175.     {
  176.         doZwrotu = doZwrotu + " tysiace";
  177.     }
  178.     else if (liczbaW >= 1000 && liczbaW < 2000)
  179.     {
  180.         doZwrotu = "tysiac";
  181.     }
  182.     return doZwrotu + " ";
  183. }
  184.  
  185. string dziesiatkiTysiecy(int liczbaW)
  186. {
  187.     int liczbaT;
  188.     if (liczbaW >= 10000)
  189.     {
  190.         liczbaT = liczbaW / 1000;
  191.         return dziesiatki(liczbaT/10*10) + " ";
  192.     }
  193.     return "";
  194. }
  195.  
  196. string setkiTysiecy(int liczbaW)
  197. {
  198.     int liczbaT;
  199.     if (liczbaW >= 100000)
  200.     {
  201.         liczbaT = liczbaW / 1000;
  202.         return setki(liczbaT) + " ";
  203.     }
  204.     return "";
  205. }
  206.  
  207. string naTekst()
  208. {
  209.     int liczbaT;
  210.     string caly = "";;
  211.     caly = caly + minusuj();
  212.     caly = caly + setkiTysiecy(liczba);
  213.     liczbaT = obetnijRzad(liczba,5);
  214.     caly = caly + dziesiatkiTysiecy(liczbaT);
  215.     liczbaT = obetnijRzad(liczba,4);
  216.     caly = caly + tysiace(liczbaT);
  217.     liczbaT = obetnijRzad(liczba,3);
  218.     caly = caly + setki(liczbaT);
  219.     liczbaT = obetnijRzad(liczba,2);
  220.     caly = caly + dziesiatki(liczbaT);
  221.     if (liczba == 0)
  222.     {
  223.         caly = "zero";
  224.     }
  225.     return caly;
  226. }
Advertisement
Add Comment
Please, Sign In to add comment