Сделать защиту от ввода букв и символов - 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();
}
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с консолью и вводом-выводом данных
- Объявление переменных типа float для хранения значений сопротивлений R1, R2, R3 и Rsum
- Установка русской локали для работы с консолью
- Использование цикла do-while для повторного запроса ввода значений, если они отрицательные
- Проверка значений R1, R2 и R3 на отрицательность перед выполнением расчетов
- Расчет сопротивления параллельного соединения по формуле Rsum=1/(1/R1+1/R2+1/R3)
- Вывод результата расчетов на экран
- Использование цикла do-while для повторного запроса ввода значений, если они отрицательные
- Проверка значений R1, R2 и R3 на отрицательность перед выполнением расчетов
- Расчет сопротивления последовательного соединения по формуле Rsum=R1+R2+R3
- Вывод результата расчетов на экран
- Использование функции getch() для приостановки выполнения программы и ожидания нажатия клавиши