Программа
#include <stdio.h>
#include <math.h>
float absolute(float a) /*Функция определения модуля числа*/
{ if (a<0) return -a; else return a; }
unsigned int Quest(char Ch[80]) /*Функция запроса*/
{ char Ans;
printf("%s [Y|N] ",Ch); /*Вывод запроса*/
do /*Цикл чтения клавиатуры*/
{ Ans=getche(); /*Чтение нажатия клавиши*/
} while (!(Ans=='Y' || Ans=='y' || Ans=='N' || Ans=='n'));
/*Выход из цикла при нажатии клавиши Y или N */
printf("\n"); /*Вывод конца строки*/
return Ans=='Y' || Ans=='y'; /*Определение значения функции*/
}
main()
{ float R, a, b, x, y;
unsigned int Exite; /*флаг выхода из цикла*/
printf("Введите радиус круга R="); /*Вывод приглашения к вводу данных*/
scanf("%f",&R); /*Ввод радиуса*/
do
{ printf("Введите a="); /*Вывод приглашения к вводу данных*/
scanf("%f",&a); /*Ввод коэффициента прямой a */
do
{ printf("Введите b="); /*Вывод приглашения к вводу данных*/
scanf("%f",&b); /*Ввод коэффициента прямой b */
Exite=absolute(b)/sqrt(a*a+1)<R; /*Проверка пересечения прямой и окружности*/
if (!Exite) printf("Область не определена! Повторите ввод.\n");
/*Вывод сообщения, если прямая не пересекает окружность*/
} while (!Exite); /*Выход из цикла после получения прямой, пересекающей заданную окружность*/
do /*Цикл ввода и проверки попадания точек в заданную область*/
{ /*Ввод точек:*/
printf("Введите x="); scanf("%f",&x);
printf("Введите y="); scanf("%f",&y);
/*Проверка попадания:*/
if (y<=0 && x*x+y*y<=R*R && a*x+b>=y)
{ if (y==0 || x*x+y*y==R*R || a*x+b==y) /*Проверка попадания на границу*/
printf("Введенная точка попадает на границу заданной области.\n");
else printf("Введенная точка попадает в заданную область.\n");
}
else printf("Введенная точка не попадает в заданную область.\n");
} while (Quest("Повторить ввод точек?")); /*Выход из цикла при положительном ответе*/
} while (Quest("Повторить ввод уравнения?")); /*Выход из цикла при положительном ответе*/
}
Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию