• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Помогите с Калькулятором на С

  • Автор темы MariannaSec
  • Дата начала
M

MariannaSec

Здравствуйте, проблема следующая.
Необходимо написать калькулятор на С, операции банальные +,-,* и /
есть два числа типа float. Необходимо произвести проверку правильности ввода чисел
(не введен ли случайно буква или пр. символы)
пробовала работать с результатом функции scanf(), и если он равен 0, обрабатывать ошибку, но
если ввести за места числа, например, "2в", то число "2" программа проглотит, а букву "в" будет использовать
в качестве результата следующего ввода.

Вот пример кода для операции сложения.
[codebox] do
{
printf("Enter the 1st number of the SUM (for example 3.12):\n");
err = scanf("%f", &a);//reading the fisrt
if (err==0)
{
printf("\nYou are entering not a float number");
rewind(stdin);
}
}
while (err == 0);
do
{
printf("Enter the number you want to ADD (for example 3.12):\n");
err=scanf("%f",&:);//reading the second number
if (err==0)
{
printf("\nYou are entering not a float number");
rewind(stdin);
}
}
while (err == 0);
result = a + b;//making ADDITION
printf("\n The result of ADDITION operation is:\n %f", result); //output the result
[/codebox]

Также существует еще одна проблема:
если я ввожу числа 12.1212 и 12.1214 складываю, то получается странный результат типа 24.24259, хотя должен быть 24.2426

Пожалуйста, откликнитесь, буду очень признательна!!!!!
 
S

Seagull

введённое с клавы сливай в строку, посимвольно разбирай, должны быть 1234567890.- и если нет- проси ввести ещё раз... разбор- switch - ом

Например так... криво, но можно...
 
C

ChexoV

в цикле проверь каждый символ с помощью функции isalpha(); она определяет являеться ли символ буквой)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!