Дать для числа название «гривна», «гривны» или «гривен». - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Дано натуральное число s (s <= 1000), определяющий денежную сумму (в гривнах). Дать для этого числа название «гривна», «гривны» или «гривен».
// 3 лаба 3 завдання.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include "math.h"
#include "stdio.h"
#include "conio.h"
 
int main()
{ 
int p;
if (p==1 || p==21 || p==31 || p==41 || p==51 || p==61 || p==71 
|| p==81 || p==91   || p==101 || p==121 || p==131 || p==141 || p==151 
|| p==161 || p==171 || p==181 || p==191 || p==201 || p==221 || p==231 
|| p==241 || p==251 || p==261 || p==271 || p==281 || p==291 || p==301
|| p==321 || p==331 || p==341 || p==351 || p==361 || p==371 || p==381
|| p==391 || p==401 || p==421 || p==431 || p==451 || p==461 || p==471 
|| p==481 || p==491 || p==501 || p==521 || p==531 || p==541 || p==551 
|| p==561 || p==571 || p==581 || p==591 || p==601 || p==621 || p==631
|| p==641 || p==651 || p==661 || p==671 || p==681 || p==691 || p==701 
|| p==721 || p==731 || p==741 || p==751 || p==761 || p==771 || p==781 
|| p==791 || p==801 || p==821 || p==831 || p==841 || p==851 || p==861
|| p==871 || p==881 || p==891 || p==901 || p==921 || p==931 || p==941
|| p==951 || p==961 || p==971 || p==981 || p==991 )
printf("Hruvna\n");
else 
{
if (p>1 && p<5 || p>21 && p<25 || p>31 && p<35 
|| p>41 && p<45 || p>51 && p<55 || p>61 && p<65
|| p>71 && p<75 || p>81 && p<85 || p>91 && p<95
||p>101 && p<105 || p>121 && p<125 || p>131 && p<135
||p>141 && p<145 || p>151 && p<155 || p>161 && p<165
||p>171 && p<175 || p>181 && p<185 || p>191 && p<195
||p>201 && p<205 || p>211 && p<215 || p>221 && p<225
||p>231 && p<235 || p>241 && p<245 || p>251 && p<255
||p>261 && p<265 || p>271 && p<275 || p>281 && p<285
||p>291 && p<295 || p>301 && p<305 || p>311 && p<315
||p>321 && p<325 || p>331 && p<335 || p>341 && p<345
||p>351 && p<355 || p>361 && p<365 || p>371 && p<375
||p>381 && p<385 || p>391 && p<395 || p>401 && p<405
||p>411 && p<415 || p>421 && p<425 || p>431 && p<435
||p>441 && p<445 || p>451 && p<455 || p>461 && p<465
||p>471 && p<475 || p>481 && p<485 || p>491 && p<495
||p>501 && p<505 || p>511 && p<515 || p>521 && p<525
||p>531 && p<535 || p>541 && p<545 || p>551 && p<555
||p>561 && p<565 || p>571 && p<575 || p>581 && p<585
||p>591 && p<595 || p>601 && p<605 || p>611 && p<615
||p>621 && p<625 || p>631 && p<635 || p>641 && p<645
||p>651 && p<655 || p>661 && p<665 || p>671 && p<675
||p>681 && p<685 || p>691 && p<695 || p>701 && p<705
||p>711 && p<715 || p>721 && p<725 || p>731 && p<735
||p>741 && p<745 || p>741 && p<745 || p>751 && p<755
||p>761 && p<765 || p>771 && p<775 || p>781 && p<785
||p>791 && p<795 || p>801 && p<805 || p>811 && p<815
||p>821 && p<825 || p>831 && p<835 || p>841 && p<845
||p>851 && p<855 || p>861 && p<865 || p>871 && p<875
||p>881 && p<885 || p>891 && p<895 || p>901 && p<905
||p>911 && p<915 || p>921 && p<925 || p>931 && p<935
||p>941 && p<945 || p>951 && p<955 || p>961 && p<965
||p>971 && p<975 || p>981 && p<985 || p>991 && p<995)
printf("Hryvni\n");
}
 
if (p>1000)
printf("Error\n");
else 
printf("Hryven\n");
getch();
return 0;
}
Составил программу а она не работает

Решение задачи: «Дать для числа название «гривна», «гривны» или «гривен».»

textual
Листинг программы
/////////////////////////////////////////////////////////////////////////////////////////
//Дано натуральное число s (s <= 1000), определяющий денежную сумму (в гривнах). 
//Дать для этого числа название «гривна», «гривны» или «гривен».
/////////////////////////////////////////////////////////////////////////////////////////
#include <iostream>
#include <string>
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::string  T_str;
/////////////////////////////////////////////////////////////////////////////////////////
int main() 
{
    std::locale::global(std::locale(""));
    for(;;)
    {
        int  amount;
        std::cout << "Введите сумму в гривнах: ";              
        std::cin >> amount;        
        int  units  = amount % 10;
        int  tens   = amount % 100 / 10;
        T_str  amount_name = "гривен";
        if(tens != 1)
        {
            switch(units)
            {
            case 1:
                amount_name = "гривна";
                break;
 
            case 2:
            case 3:
            case 4:            
                amount_name = "гривны";                
            }
        }
        std::cout << amount
                  << ' '
                  << amount_name
                  << std::endl
                  << std::endl
                  << std::endl
                  << std::endl;    
    }
}

Объяснение кода листинга программы

  1. Включаются необходимые заголовочные файлы
  2. Объявляется тип переменной T_str, который будет использоваться для хранения строковых значений
  3. Задаётся цикл, который будет выполняться до тех пор, пока пользователь не введет знак выхода из цикла
  4. Внутри цикла объявляется переменная amount типа int, в которую будет считываться введенное пользователем натуральное число
  5. Далее, с помощью операций % и /, определяются десятки и единицы числа
  6. Переменной amount_name присваивается строковое значение гривен
  7. Если значение переменной tens не равно 1, то выполняется блок кода, который будет определять значение переменной amount_name в зависимости от значения переменной units
  8. Для этого используется оператор switch, который проверяет значение переменной units и присваивает переменной amount_name соответствующее строковое значение
  9. После выполнения блока кода, выводится на экран введенное пользователем число и его название, которое хранится в переменной amount_name
  10. После вывода значения переменной amount и amount_name на экран, программа продолжает выполнение цикла с первой итерации

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.714 из 5
Похожие ответы