Доработка программы, нужно что бы после того как юзер введет вместо числа что то другое вылезала ошибка - C (СИ)

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

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

#include <stdio.h>
#include <windows.h>
 
int main(void)
{
    SetConsoleOutputCP(1251);
    char unit;
    float Celsius=0.0, Kelvin=0.0, Fahrenheit=0.0;
    printf("Введите из какой шкалы вы хотите перевести\nЦельсии\nФаренгейты\nКельвина\n");
        scanf("%c", &unit);
    switch(unit)
    {
        case 'C':
        case 'c':
        case '1':
        printf("Введите Цельс.\n");
        scanf("%f",&Celsius);
        Fahrenheit = 1.8 * Celsius + 32;
        Kelvin = Celsius +273;
        break;
        case '2':
        case 'f':
        case 'F':
        printf("Введите Фар.\n");
        scanf("%f",&Fahrenheit);
        Celsius = (Fahrenheit - 32)/1.8;
        Kelvin = Celsius + 273;
        break;
        case 'K':
        case 'k':
        case '3':
        printf("Введите Кель\n");
        scanf("%f",&Kelvin);
        Celsius = Kelvin - 273;
        Fahrenheit = 1.8 * Celsius + 32;
        break;
        default:
        printf("Введены неправильные значения\n");
        return -1;

    }
    printf("Цельс. %f\n", Celsius);
    printf("Фаренг. %f\n", Fahrenheit);
    printf("Кель. %f\n", Kelvin);
    return 0;
}

Решение задачи: «Доработка программы, нужно что бы после того как юзер введет вместо числа что то другое вылезала ошибка»

textual
Листинг программы
#include <stdio.h>
#include <windows.h>
 
int main(void)
{
    SetConsoleOutputCP(1251);
    char unit = '\0';
    float Celsius = 0.0,
        Kelvin = 0.0,
        Fahrenheit = 0.0;
    puts("Введите из какой шкалы вы хотите перевести\n 1. Цельсии\n 2. Фаренгейты\n 3. Кельвина\n");
    scanf("%c", &unit);
 
    switch(unit)
    {
    case 'C': case 'c': case '1':
        {
            while(1)
            {
                puts("Введите Цельс: ");
                if(!scanf("%f", &Celsius))
                {
                    fflush(stdin);
                    puts("Ошибка ввода. Повторите попытку...\n\n");
                }
                else
                    break;
            }
            Fahrenheit = 1.8 * Celsius + 32;
            Kelvin = Celsius +273;
            break;
        }
    case '2': case 'f': case 'F':
        {
            while(1)
            {
                puts("Введите Фар: ");
                if (!scanf("%f", &Fahrenheit))
                {
                    fflush(stdin);
                    puts("Ошибка ввода. Повторите попытку...\n\n");
                }
                else
                    break;
            }
            Celsius = (Fahrenheit - 32)/1.8;
            Kelvin = Celsius + 273;
            break;
        }
    case 'K': case 'k': case '3':
        {
            while(1)
            {
                puts("Введите Кел: ");
                if (!scanf("%f", &Kelvin))
                {
                    fflush(stdin);
                    puts("Ошибка ввода. Повторите попытку...\n\n");
                }
                else
                    break;
            }
            Celsius = Kelvin - 273;
            Fahrenheit = 1.8 * Celsius + 32;
            break;
        }
    default:
        {
            puts("Введены неправильные значения\n");
            return -1;
        }
    }
 
    printf("Цельс. %f\n", Celsius);
    printf("Фаренг. %f\n", Fahrenheit);
    printf("Кель. %f\n", Kelvin);
 
    return 0;
}

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

  1. Ввод значения температуры в требуемой шкале
  2. Проверка корректности ввода значения температуры
  3. Перевод температуры из одной шкалы в другую
  4. Вывод значений температуры в каждой шкале

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


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

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

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