Вывод в консоль - C (СИ)
Формулировка задачи:
Привет, всем! Задали задачку никак не могу решить. Программа выводит в консоль число и текст. Надо к тексту приделать нормальное окончание. Например: 1 монетА, 5 монет, 3 монетЫ.
Может кто что-нибудь подскажет, что-то ничего в голову не приходит.
#include <stdio.h> int main(void) { //Переменные float owed = 0.0; int CentCount; int rest = 0; int i; char s; //Массивы int MoneyCount[4] = {0, 0, 0, 0}; int del[4] = {25, 10, 5, 1}; printf("Привет! Сколько я должен сдачи?\n"); //Ввод данных scanf("%f", &owed); printf("\n"); if (owed <= 0.0){ printf("Я Вам ничего не должен!\n"); } else { //выясняем общее число центов в сдаче owed = owed * 100.0; CentCount = (int) owed; //считаем for(i=0; i<4; i++) { MoneyCount[i] = CentCount / del[i]; CentCount = CentCount % del[i]; rest = rest + MoneyCount[i]; if(MoneyCount[i] > 0) // добавим печать количества монет { if(MoneyCount[i] == 1) { s = 'а'; } else if(MoneyCount[i] % 2 || MoneyCount[i] % 3) { s = 'ы'; } else if(MoneyCount[i] % 5 || MoneyCount[i] % 7) { s = ' '; } printf(" %i монет%c по %i \n", MoneyCount[i], s, del[i]); } } if(rest == 1) { s = 'а'; } else if((rest % 2) || (rest % 3)) { s = 'ы'; } else if(((rest % 5) || (rest % 7))) { s = ' '; } //выводим результат на экран printf("\nВ нашей сдаче %i монет%c\n", rest, s); } return 0; }
Решение задачи: «Вывод в консоль»
textual
Листинг программы
if((rest%10 == 1) && ((rest%100<10) || (rest%100>20))) { s = 'а'; } else if((rest%10 >= 2) && (rest%10 <= 4) && ((rest%100<10) || (rest%100>20))) { s = 'ы'; } else { s = ' '; }
Объяснение кода листинга программы
В данном коде выполняется следующая последовательность действий:
- В условии if проверяется, является ли остаток от деления переменной rest на 10 равным 1, а также проверяется, является ли остаток от деления переменной rest на 100 меньше 10 или больше 20. Если оба условия выполняются, то переменной s присваивается значение 'а'.
- Если условие if не выполняется, то программа переходит к блоку else if, где проверяется, является ли остаток от деления переменной rest на 10 больше или равен 2 и меньше или равен 4, а также проверяется, является ли остаток от деления переменной rest на 100 меньше 10 или больше 20. Если оба условия выполняются, то переменной s присваивается значение 'ы'.
- Если ни одно из условий if и else if не выполняется, то программа переходит к блоку else, где переменной s присваивается значение ' '. Таким образом, в результате выполнения данного кода переменной s будет присвоено одно из трех значений: 'а', 'ы' или ' '.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д