Продолжать ввод, пока не получит точку, принадлежащую графику - C (СИ)
Формулировка задачи:
Есть программа, которая определяет принадлежность точки графику
Сам код:
Программа работает, но хотелось бы сделать так, чтобы при вводе координат точки (2 числа), не принадлежащих графику, программа просила бы пользователя вновь и вновь вводить числа до тех пор пока не получит точку принадлежащую графику. На 2 картинке видно что после ввода неверных чисел программа запрашивает у меня верные только 1 раз и потом даже при неверных числах выдает их за правильные. каким образом это можно осуществить или дайте что нибудь почитать по этому поводу.
надеюсь что понятно объяснил то, что хочу осуществить.
#include <stdio.h>
#include <iostream>
#include <windows.h>
int main ()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int x,y;
bool z;
printf ("Введите 2 числа\n");
scanf("%d,%d",&x,&y);
z=y<=1&&x>=0&&x<=2||
(x*x+y*y<1)&&y>=0&&x>=0||
(x*x+y*y<1)&&x<=0&&y<=0||
(x*x+y*y>1)&&x>=0&&x<=2&&y<=0&&y>=-1;
if (z) printf("Точка с координатами (%d,%d)лежит внутри фигуры \n\n");
else
{
printf("Точка не принадлежит фигуре. \n\n\n");
printf ("Попробуй другое число\n");
scanf("%d\n,\t%d\n",&x,&y);
printf("Точка с координатами (%d,%d) лежит внутри фигуры\n\n");
}
system("color 2D");
system("PAUSE");
return 0;
}Решение задачи: «Продолжать ввод, пока не получит точку, принадлежащую графику»
textual
Листинг программы
for(z=false; z==false; ) {
printf ("Введите 2 числа\n");
scanf("%d,%d",&x,&y);
z=y<=1&&x>=0&&x<=2||
(x*x+y*y<1)&&y>=0&&x>=0||
(x*x+y*y<1)&&x<=0&&y<=0||
(x*x+y*y>1)&&x>=0&&x<=2&&y<=0&&y>=-1;
if (z) printf("Точка с координатами (%d,%d)лежит внутри фигуры \n\n");
else
printf("Точка не принадлежит фигуре. \n\n\n");
}
Объяснение кода листинга программы
- Переменная z инициализируется значением false.
- Условие цикла for требует, чтобы z оставалось равным false для продолжения цикла.
- Пользователю предлагается ввести два числа, которые будут присвоены переменным x и y.
- С помощью оператора scanf числа считываются и присваиваются переменным x и y.
- Значение переменной z обновляется с помощью условного выражения.
- Условие проверяет, принадлежит ли точка с координатами (x, y) фигуре по определенным правилам.
- Если точка принадлежит фигуре, выводится сообщение
Точка с координатами (x, y) лежит внутри фигуры. - Если точка не принадлежит фигуре, выводится сообщение
Точка не принадлежит фигуре. - Цикл продолжается, пока пользователь не введет точку, принадлежащую фигуре.