Разрешить ввод данных только типа Float - C (СИ)

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

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

#include <stdio.h>
#include <conio.h>
 
void main ()
{
clrscr();
float x,y;
printf ("Vvedite koordinatu X tochki E\n");
scanf ("%f",&x);
  if ((x<=0)||(x>=0))
    {
    printf ("Vvedite koordinatu Y tochki E\n");
    scanf ("%f",&y);
      if ((y<=0)||(y>=0))
        {
    if ((y<=2*x+3)&&(y<=(-x))&&(y>=0))
    printf("Tockha prinadlejit figure ABCD");
    else
      {
      if ((y<=0)&&(y<=(2*x)+3)&&(y>=x/3-1/3))
      printf ("Tockha prinadlejit figure ABCD");
      else printf("Tockha ne prinadlejit figure ABCD");
      }
     }
       else printf ("Oshibka vvoda!");
    }
   else printf ("Oshibka vvoda!");

getch();
}
Вот код программы моей... Дело в том, что условия не работают должным образом. Мне нужно следующее: Чтоб когда я вводил X он проверял, если он Float, то программа работает дальше, если нет, то сообщение об ошибке выходило ("Oshibka vvoda!"); Если X введён Float, то программа дальше проверяет на то же условие Y и с ним делает тоже самое... Если X и Y введуться верно, то дальше уже основной блок рабоать будет... Не буду писать где точно какие ошибки, просто кто хочет помочь, прокомпилируйте, запустите и введите на пример букву и сами всё поймёте... Но когда значения вводятся верно, то она работает как положено... Я никак разобраться не могу, помогите...

Решение задачи: «Разрешить ввод данных только типа Float»

textual
Листинг программы
#include <stdio.h>
#include <conio.h>
#include <float.h>
 
void main ()
{
clrscr();
float x=FLT_MAX,y=FLT_MAX;
printf ("Vvedite koordinatu X tochki E\n");
scanf ("%f",&x);
  if ((x!=FLT_MAX))
    {
    printf ("Vvedite koordinatu Y tochki E\n");
    scanf ("%f",&y);
      if ((y!=FLT_MAX))
        {
        if ((y<=2*x+3)&&(y<=(-x))&&(y>=0))
        printf("Tockha prinadlejit figure ABCD");
        else
          {
          if ((y<=0)&&(y<=(2*x)+3)&&(y>=x/3-1/3))
          printf ("Tockha prinadlejit figure ABCD");
          else printf("Tockha ne prinadlejit figure ABCD");
          }
         }
       else printf ("Oshibka vvoda!");
    }
   else printf ("Oshibka vvoda!"); 
getch();
}

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

  1. Включаем необходимые заголовочные файлы: , , .
  2. Задаём начальные значения переменных x и y равными максимальному значению типа float (FLT_MAX).
  3. Выводим сообщение и призыв к вводу координаты X.
  4. Считываем значение координаты X с помощью функции scanf и сохраняем его в переменной x.
  5. Проверяем, что введенное значение не равно FLT_MAX (то есть не является начальным).
  6. Если условие выполняется, то выводим сообщение и призыв к вводу координаты Y.
  7. Считываем значение координаты Y с помощью функции scanf и сохраняем его в переменной y.
  8. Проверяем, что введенное значение не равно FLT_MAX (то есть не является начальным).
  9. Если условие выполняется, то проверяем, что значение y находится в определенном диапазоне: (y<=2*x+3)&&(y<=(-x))&&(y>=0).
  10. Если условие выполняется, то выводим сообщение Tockha prinadlejit figure ABCD.
  11. Если условие не выполняется, то проверяем, что значение y находится в диапазоне (y<=0)&&(y<=(2*x)+3)&&(y>=x/3-1/3).
  12. Если условие выполняется, то выводим сообщение Tockha prinadlejit figure ABCD.
  13. Если условие не выполняется, то выводим сообщение Tockha ne prinadlejit figure ABCD.
  14. Если в процессе проверки значение y оказывается меньше нуля, то выводим сообщение Oshibka vvoda!.
  15. Если в процессе проверки значение y оказывается больше или равно 2*x+3, то выводим сообщение Oshibka vvoda!.
  16. Если в процессе проверки значение y оказывается меньше x/3-1/3, то выводим сообщение Oshibka vvoda!.
  17. Если значение x или y было прочитано некорректно, то выводим сообщение Oshibka vvoda!.
  18. Используем функцию getch() для приостановки выполнения программы и ожидания нажатия клавиши.
  19. Объявляем функцию main() как точку входа в программу.
  20. Все действия программы выполняются в рамках переменной типа int, которая не имеет имени и не видна за пределами функции main().

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


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

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

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