Сделать защиту от ввода букв и символов - C (СИ)

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

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

Здравствуйте! Помогите, пожалуйста, сделать защиту от ввода лишних символов и букв в программе. Важно, чтобы вводились только числа.
#include <conio.h>
#include <stdio.h>
#include <locale.h>
 
void main()
{
    double Rsum,R1,R2,R3;
    setlocale(LC_ALL, "rus");
    printf("Введите R1, R2 и R3 для параллельного соединения: ");
    scanf("%d", &R1); scanf("%d", &R2); scanf("%d", &R3);
    if ((R1>=0)&&(R2>=0)&&(R3>=0))
                {
                    Rsum=1/(1/R1+1/R2+1/R3);
                    printf("Сопротивление соединения равно: ", Rsum);
                }
                    if ((R1<0)||(R2<0)||(R3<0))
                {
                Rsum==0;
                printf("ОШИБКА: Отрицательных значений быть не может!"); 
                }
    //Рассчёт сопротивления соединения для последовательного соединения
    printf("\n Введите R1, R2 и R3 для последовательного соединения: ");
    scanf("%d", &R1); scanf("%d", &R2); scanf("%d", &R3);
    if ((R1>=0)&&(R2>=0)&&(R3>=0))
                {
                    Rsum=R1+R2+R3;
                    printf("Сопротивление соединения равно: ", Rsum);
                }
                    if ((R1<0)||(R2<0)||(R3<0))
                {
                Rsum=0;
                printf("ОШИБКА: Отрицательных значений быть не может!");
                }
    getch();
    system("pause");
}
Заранее спасибо!

Решение задачи: «Сделать защиту от ввода букв и символов»

textual
Листинг программы
#include <conio.h>
#include <stdio.h>
#include <locale.h>
 
void main()
{
    float Rsum, R1,R2,R3;
    setlocale(LC_ALL, "rus");
    do 
   {  
    fflush(stdin);
    printf("Введите R1, R2 и R3 для параллельного соединения: ");
    scanf("%f",&R1);
    scanf("%f",&R2);
    scanf("%f",&R3);
    if((R1<0)||(R2<0)||(R3<0))
    printf("\n\aОШИБКА!\n");
    }while ((R1<0)||(R2<0)||(R3<0));
                    Rsum=1/(1/R1+1/R2+1/R3);
                    printf("Сопротивление параллельного соединения равно: %.4f", Rsum);
    do 
   {  
    fflush(stdin); 
    printf("\nВведите R1, R2 и R3 для последовательного соединения: ");
    scanf("%f",&R1); 
    scanf("%f",&R2); 
    scanf("%f",&R3);
    if((R1<0)||(R2<0)||(R3<0))
    printf("\n\aОШИБКА!\n");
    }while ((R1<0)||(R2<0)||(R3<0));
                    Rsum=R1+R2+R3;
                    printf("Сопротивление последовательного соединения равно: %.f", Rsum);
    getch();
}

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

  1. Подключение необходимых библиотек для работы с консолью и вводом-выводом данных
  2. Объявление переменных типа float для хранения значений сопротивлений R1, R2, R3 и Rsum
  3. Установка русской локали для работы с консолью
  4. Использование цикла do-while для повторного запроса ввода значений, если они отрицательные
  5. Проверка значений R1, R2 и R3 на отрицательность перед выполнением расчетов
  6. Расчет сопротивления параллельного соединения по формуле Rsum=1/(1/R1+1/R2+1/R3)
  7. Вывод результата расчетов на экран
  8. Использование цикла do-while для повторного запроса ввода значений, если они отрицательные
  9. Проверка значений R1, R2 и R3 на отрицательность перед выполнением расчетов
  10. Расчет сопротивления последовательного соединения по формуле Rsum=R1+R2+R3
  11. Вывод результата расчетов на экран
  12. Использование функции getch() для приостановки выполнения программы и ожидания нажатия клавиши

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


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

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

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