Блок-схема.
Текст программы
/*----------------------------------------------------------------------------------------
Программная реализация алгоритмов разветвленной структуры
Вариант 30.
------------------------------------------------------------------------------------------*/
#include <iostream>
#include <windows.h>
using namespace std;
void main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
double x, y; // координаты точки
char otv;
cout<<"x=";
cin>>x;
cout<<"y=";
cin>>y;
cout<<"\nТочка с координатами x="<<x<<" и y="<<y;
if ( (y>=1-x)&&(x*x+y*y<=1) )
cout<<" попадает в заданный диапазон";
else cout<<" не попадает в заданный диапазон";
cout<<endl;
system("pause");
}
Відладка програми
Найважливіше у відладці цієї програми - переконатися в тому, що програма видає правильні результати при різних комбінаціях вхідних даних. Отже, необхідно підібрати такі комбінації, які були б показовими для різних випадків розміщення точки. Наприклад:
|
(0.4, 0.4) |
|
(0.5, 0.5); |
|
(0.7, 0.6); |
|
(0.707, 0.707); |
|
(0.8, 0.8); |
|
(1.0 0.0); |
|
(0.0 1.0); |
Для зручності відладки програми, додамо в текст програми налагоджувальних операторів:
Оператор циклу do . while, для того, що б для різних координат x і y не потрібно було б по новому запускати програму;
Оператори cout :
/*--------------------------------------------------- отладка
cout<<"\nОпределение условий попадания в целевую область:\n";
cout<<y<<">="<<1-x<<" ? - "<<(y>=1-x)<<endl;
cout<<x*x+y*y<<"<="<<y<<" ? - "<<(x*x+y*y<=1)<<endl<<endl;
-----------------------------------------------------------*/
У цьому варіанті, ці оператори є коментарями.
У наступному варіанті вони є виконуваними операторами.
// /*---------------------------------------------------------- отладка
cout<<"\nОпределение условий попадания в целевую область:\n";
cout<<y<<">="<<1-x<<" ? - "<<(y>=1-x)<<endl;
cout<<x*x+y*y<<"<="<<y<<" ? - "<<(x*x+y*y<=1)<<endl<<endl;
// ----------------------------------------------------------------*/
Остаточний варіант програми.
#include <iostream>
#include <windows.h>
using namespace std;
void main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
double x, y; // координаты точки
char otv;
do
{
cout<<"x=";
cin>>x;
cout<<"y=";
cin>>y;
/*----------------------------------------- отладка
cout<<"\nОпределение условий попадания в целевую область:\n";
cout<<y<<">="<<1-x<<" ? - "<<(y>=1-x)<<endl;
cout<<x*x+y*y<<"<="<<y<<" ? - "<<(x*x+y*y<=1)<<endl<<endl;
-------------------------------------------------*/
cout<<"\nТочка с координатами x="<<x<<" и y="<<y;
if ( (y>=1-x)&&(x*x+y*y<=1) )
cout<<" попадает в заданный диапазон";
else cout<<" не попадает в заданный диапазон";
cout<<"\nПродолжить (Y/N)?";
cin>>otv;
}while (otv=='y');
cout<<endl;
system("pause");
}
Результати роботи програми
x=0.400; y=0.400 не попадает в заданный диапазон
x= 0.500; y= 0.500 попадает в заданный диапазон
x= 0.700; y= 0.600 попадает в заданный диапазон
x= 0.707; y= 0.707 попадает в заданный диапазон
x= 0.800; y= 0.800 не попадает в заданный диапазон
x= 0.100; y= 0.000 попадает в заданный диапазон
x= 0.000; y= 1.000 попадает в заданный диапазон
Висновки
При виконанні лабораторної роботи вивчені питання:
