grzesiek11

Zapis słowny liczb #2

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