Результаты выполнения программы




Цель работы

Получение практических навыков проектирования разветвленных алгоритмов и использования условных операторов языка Си.

 

Задание

Разработать алгоритм и написать программу, проверяющую, попадает ли точка, заданная координатами A (x;y), в выбранную на плоскости область, находится на границе или вне выбранной области. Решение задачи выполнять многократно по желанию пользователя.

 

Уточнение задания

r3333
-3
y=-x
x2+y2=3
x
y
Рис. 1. Область на графике
А (x;y)

 


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


Контрольные примеры

Таблица 1. Контрольные примеры

 

№ п\п Исходные данные Результат
x y r
        Входит
        Граничная
    -1   Не входит
        Граничная
    -3   Граничная
  -3     Не входит
    -2   Не входит
  - -   Ошибка!
    -5   Входит
  -1     Входит

Описание переменных

Таблица 2. Описание переменных

 

Переменная Тип Назначение
x float Вводимая с клавиатуры абсцисса точки А
y float Вводимая с клавиатуры ордината точки А
r int Радиус окружности (см.рис.1)
i int Переменная управления циклом

Краткое описание алгоритма

НАЧАЛО

ШАГ 1. ВЫВОД: «Введите радиус r».

ШАГ 2.ВВОД: r (радиуса).

ШАГ3. Проверить правильность ввода значения радиуса.

ШАГ4. Если все верно, перейти к ШАГУ5, если нет – перейти к ШАГУ 1.

ШАГ5.ВВОД: xи y.

ШАГ6.ЕСЛИ у>-x, ТО

ЕСЛИ y>0, ТО

ЕСЛИ x2+y2<r2, ТО

ВЫВОД: «Входит» (переход к ШАГУ 7),

ИНАЧЕ,

ЕСЛИ x2+y2==r2, ТО

ВЫВОД: «Граничная» (переход к ШАГУ 7),

ИНАЧЕ ВЫВОД: «Не входит»(переход к ШАГУ 7);

ИНАЧЕ

ЕСЛИ у==0, ТО

ЕСЛИ x<=r, ТО

ВЫВОД: «Граничная» (переход к ШАГУ 7);

ИНАЧЕ ВЫВОД: «Не входит» (переход к ШАГУ 7);

ИНАЧЕ ВЫВОД: «Не входит» (переход к ШАГУ 7);

ИНАЧЕ

ЕСЛИ x>0&&y<-x, ТО

ЕСЛИ x2+y2>r2, ТО

ВЫВОД: «Входит» (переход к ШАГУ 7),

ИНАЧЕ,

ЕСЛИ x2+y2=r2||y==-x, ТО

ВЫВОД: «Граничная» (переход к ШАГУ 7),

ИНАЧЕ ВЫВОД: «Не входит»(переход к ШАГУ 7);

ИНАЧЕ

ЕСЛИ x==0, ТО

ЕСЛИ x<=-r || y==0, ТО

ВЫВОД: «Граничная» (переход к ШАГУ 7);

ИНАЧЕ ВЫВОД: «Не входит» (переход к ШАГУ 7);

ИНАЧЕ

ЕСЛИ y==-x, ТО

ВЫВОД: «Граничная» (переход к ШАГУ 7);

ИНАЧЕ ВЫВОД: «Не входит» (переход к ШАГУ 7);

ШАГ7. Спросить пользователя, хочет ли он повторить шаги 1-7.

ШАГ8. Если да, перейти к ШАГУ 1.

КОНЕЦ.


 
Блок-схема алгоритма  

Рис 2. Блок-схема алгоритма

Текст исходной программы на языке Си  
#include <stdio.h>

#include <conio.h>

main()

{

floatx,y;

intr,i;

do

{

do

{

printf("\nВведитезначениерадиусаr.\n");

scanf("%d",&r);

if (r<=0)

printf("\nОшибка! Неверновведенрадиус. Повторите попытку.");

}

while (r<=0);

printf("\nВведите координаты точки А(xиy)\n");

scanf("%f%f",&x,&y);

if (y>-x)

if (y>0)

if (x*x+y*y<r*r)

printf("\nТочка А входит в заданную область.");

else

if (x*x+y*y==r*r)

printf("\nТочка А лежит на границе заданной области.");

else

printf("\nТочка А не входит в заданную область.");

else

if (y==0)

if (x<=r)

printf("\nТочка А лежит на границе заданной области.");

else

printf("\nТочка А не входит в заданную область.");

else

printf("\nТочка А не входит в заданную область.");

else

if (x>0 && y<-x)

if (x*x+y*y>r*r)

printf("\nТочка А входит в заданную область.");

else

if (x*x+y*y==r*r || y==-x)

printf("\nТочка А лежит на границе заданной области.");

else

printf("\nТочка А не входит в заданную область.");

else

if (x==0)

if(y<=-r || y==0)

printf("\nТочка А лежит на границе заданной области.");

else

printf("\nТочка А не входит в заданную область.");

else

if (y==-x)

printf("\nТочка А лежит на границе заданной области.");

else

printf("\nТочка А не входит в заданную область.");

printf("\n\nПродолжить? (1/0)\n");

scanf("%d",&i);

}

while (i==1);

}

Результаты выполнения программы

При выполнении программы получены результаты, совпадающие с приведенными в таблице 1 контрольными примерами. Ошибки не обнаружены.

 

Выводы

При выполнении лабораторной работы были получены практические навыки проектирования разветвленных алгоритмов и использование условных операторов языка Си.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2018-01-08 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: