Некорректно работает код перевода дюймов в сантиметры - C (СИ)
Формулировка задачи:
Привет)
Задание.
Перевести дюймы в см.
т.е. ввожу 2i, должно вывести 5.08 см.
В чем ошибка? Я может чо то не понимаю, проверка вроде правильно стоит.
#include <stdio.h>
int main()
{
int x;
char ch;
ch=getchar();
scanf("%d%c",&x,&ch);
//ch = getchar();
if (x == 2 && ch == 'i')
printf("%d%c cm\n",x*2.54,ch);
//2i = 5.08cm
}Решение задачи: «Некорректно работает код перевода дюймов в сантиметры»
textual
Листинг программы
#include <stdio.h>
#define INCH_CM_RELATION (2.54)
void clear_input(void) {
char ch;
while ( scanf("%c", &ch) == 1 && ch != '\n' )
;
}
int main(void) {
double value;
char dimension[2];
while ( printf("> ") && scanf("%lf%1s", &value, dimension) == 2 ) {
switch ( *dimension ) {
case 'i' :
case 'I' :
printf("%.2f cm\n", value * INCH_CM_RELATION);
break;
case 'c' :
case 'C' :
printf("%.2f i\n", value / INCH_CM_RELATION);
break;
default :
printf("Wrong dimension!\n");
}
clear_input();
}
return 0;
}
Объяснение кода листинга программы
- Подключение стандартной библиотеки ввода-вывода
- Определение константы, представляющей соотношение дюймов и сантиметров
- Функция для очистки ввода с клавиатуры
- Основной цикл программы
- Ввод значения и единицы измерения с клавиатуры
- Проверка введенного значения и единицы измерения
- Передача значения и единицы измерения в функцию для перевода в другую единицу измерения
- Вывод результата на экран
- Очистка ввода с клавиатуры после каждой операции
- Возврат значения 0, указывающего на успешный конец работы программы