В чем ошибка? - C (СИ) (70363)
Формулировка задачи:
#include <stdio.h>
#include <locale.h>
#include <stdlib.h>
#include <math.h>
int main(void)
{
int n,a, y;
setlocale(LC_ALL, "RUS");
while (1)
{
puts("Программа склоняет слово рубль\n");
puts("Введите число \n");
scanf_s("%d", &n);
if (n % 10 == 0 || (n >= 11 && n < 20) || n % 10 >= 5)
printf("%d рублей \n", n);
if (n % 10 == 1)
printf("%d рубль \n", n);
else
printf("%d рубля \n", n);
puts("Продолжить работу программы? 1-Да. 2-Нет.");
scanf("%d", &a);
if (a == 2)break;
}
system("pause");
}Решение задачи: «В чем ошибка?»
textual
Листинг программы
if (n % 10 == 1 && n != 11)
printf("%d рубль \n", n);
else{
if (n % 10 == 0 || (n >= 11 && n < 20) || n % 10 >= 5)
printf("%d рублей \n", n);
else
printf("%d рубля \n", n);
}
Объяснение кода листинга программы
- Проверяется, делится ли число n нацело на 10 (остаток от деления на 10 равен 1 и число n не равно 11).
- Если условие выполняется, то выводится число n в формате
n рубль. - Если условие не выполняется, то проверяется, является ли число n равным 0 или находится в диапазоне от 11 до 19 (включительно), или остаток от деления на 10 больше или равен 5.
- Если условие выполняется, то выводится число n в формате
n рублей. - Если условие не выполняется, то выводится число n в формате
n рубля.