t1nman

lab1_4

Apr 30th, 2012
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.27 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. char *hundreds(int n);     // 100-900
  4. char *dozens(int n);       // 20-90
  5. char *small_dozens(int n);  // 10-19
  6. char *units(int n);        // 0-9
  7.  
  8. main()
  9. {
  10.     int rub, cop;
  11.     int r1, r2, r3, c1, c2;
  12.     char ans[200];
  13.  
  14.     puts("enter money value:_ ");
  15.     scanf("%d.%2d", &rub, &cop);
  16.  
  17.     r3 = rub % 10;
  18.     r2 = (rub % 100) / 10;
  19.     r1 = rub / 100;
  20.  
  21.     c2 = cop % 10;
  22.     c1 = cop / 10;
  23.  
  24.     switch (r1 + '0') {
  25.         case '0': break;
  26.         default: strcat(ans,hundreds(r1));
  27.                  strcat(ans," ");
  28.                  break;
  29.     }
  30.  
  31.     switch (r2 + '0') {
  32.         case '0': break;
  33.         case '1': strcat(ans,small_dozens(r3));
  34.                   strcat(ans," рублей");
  35.                   break;
  36.         default:  strcat(ans,dozens(r2));
  37.                   strcat(ans," ");
  38.                   break;
  39.     }
  40.  
  41.     if (r2 != 1) {
  42.         strcat(ans,units(r3));
  43.         switch (r3 + '0') {
  44.             case '0': break;
  45.             case '1': strcat(ans," рубль");
  46.                       break;
  47.             case '2': case '3': case '4':
  48.                       strcat(ans," рубля");
  49.                       break;
  50.             default:  strcat(ans," рублей");
  51.                       break;
  52.         }
  53.     }
  54.  
  55.     if ((r1 != 0) && (r2 == 0) && (r3 == 0))
  56.         strcat(ans,"рублей");
  57.     printf("%s ", ans);
  58.    
  59.     if (cop != 0) {
  60.         (c1 == 0) ? printf("%s%d ", "0", c2) : printf("%d ", cop);
  61.    
  62.         switch (c1 + '0') {
  63.             case '0': break;
  64.             case '1':  printf("%s\n", "копеек");
  65.                       break;
  66.         }
  67.  
  68.         if (c1 != 1) {
  69.             switch (c2 + '0') {
  70.                 case '0': break;
  71.                 case '1': printf("%s\n", "копейка");
  72.                           break;
  73.                 case '2': case '3': case '4':
  74.                           printf("%s\n", "копейки");
  75.                           break;
  76.                 default:  printf("%s\n", "копеек");
  77.                           break;
  78.              }
  79.          }
  80.     }
  81.                  
  82.     return 0;
  83. }
  84.  
  85. char *hundreds(int n)
  86. {
  87.     static char *hund[] = {
  88.         "", "Сто", "Двести", "Триста", "Четыреста", "Пятьсот", "Шестьсот",
  89.         "Семьсот", "Восемьсот", "Девятьсот"
  90.     };
  91.  
  92.     return hund[n];
  93. }
  94.  
  95. char *dozens(int n)
  96. {
  97.     static char *doz[] = {
  98.         "", "", "двадцать", "тридцать", "сорок", "пятьдесят", "шестьдесят",
  99.         "семьдесят", "восемьдесят", "девяносто"
  100.     };
  101.  
  102.     return doz[n];
  103. }
  104.  
  105. char *small_dozens(int n)
  106. {
  107.     static char *small[] = {
  108.         "десять", "одиннадцать", "двенадцать", "тринадцать", "четырнадцать",        "пятнадцать", "шестнадцать", "семнадцать", "восемнадцать",
  109.         "девятнадцать"
  110.     };
  111.  
  112.     return small[n];
  113. }
  114.  
  115. char *units(int n)
  116. {
  117.     static char *unit[] = {
  118.         "", "один", "два", "три", "четыре", "пять", "шесть", "семь",
  119.         "восемь", "девять"
  120.     };
  121.  
  122.     return unit[n];
  123. }
Advertisement
Add Comment
Please, Sign In to add comment