Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР6-С++-27 марта-2012.doc
Скачиваний:
17
Добавлен:
28.08.2019
Размер:
6.55 Mб
Скачать

3.6. Пример программы

Условие задачи. Ввести с клавиатуры координаты точки на плоскости X и Y и определить, в каком квадранте плоскости хОу лежит точка.

Приведем три различных варианта решения задачи, блок- схемы которых показаны соответственно на рис. 6.19, 6.20 и 6.21.

Пример 6.38.

/*Лабораторная работа № 6*/.

/*Программа для определения квадранта*/

/* положения точки на координатной плоскости*/.

/*Вариант А (см. рис. 6.19)*/

/*Автор Иванов Сергей, гр. ИНФО-101*/

/*Дата выполнения 29.03.2012*/

# include <stdio.h>

# include <conio.h>

int main ()

{float x,y; int К; //К – номер квадранта

/ *ввод исходных данных */

clrscr(); //Очистка экрана

cout << ("Введите координаты точки х и у > ");

cin >> x >> y >> endl;

/* Определение номера квадранта*/

if(x>=0 && y>=0) K = 1;

if(x<0 && y>=0) K = 2;

if(x<0 && y<0) K = 3;

if(x>=0 && y<0) K = 4;

/*печать результата*/

cout << ("\n\nТочка лежит в квадранте K = ") << K << endl;

getch();

return 0;

}

Рис. 6.19. Схема программы (вариант А) к примеру 6.38

Рис. 6.20. Схема программы (вариант В) к примеру 6.39

Пример 6.39.

/*Лабораторная работа № 6*/.

/*Программа для определения квадранта*/

/* положения точки на координатной плоскости*/.

/*Вариант А (см. рис. 6.20)*/

/*Автор Иванов Сергей, гр. ИНФО-101*/

/*Дата выполнения 29.03.2012*/

# include <stdio.h>

# include <conio.h>

int main ()

{float x,y; int К; //К – номер квадранта

/ *ввод исходных данных */

clrscr(); //Очистка экрана

cout << ("Введите координаты точки х и у > ");

cin >> x >> y >> endl;

/* Определение номера квадранта*/

if(x> = 0 &&y> = 0) K = 1;

else if(x<0 && у> = 0) K = 2;

else if(x<0 && у< 0) K = 3;

else K = 4;

/*печать результата*/

cout << ("\n\nТочка лежит в квадранте K = ") << K << endl;

getch();

return 0;

}

Рис. 6.40. Схема программы (вариант С)

Пример 6.40.

/*Лабораторная работа № 6*/.

/*Программа для определения квадранта*/

/* положения точки на координатной плоскости*/.

/*Вариант А (см. рис. 6.40)*/

/*Автор Иванов Сергей, гр. ИНФО-101*/

/*Дата выполнения 29.03.2012*/

# include <stdio.h>

# include <conio.h>

int main ()

{float x,y; int К; //К – номер квадранта

/ *ввод исходных данных */

clrscr(); //Очистка экрана

cout << ("Введите координаты точки х и у > ");

cin >> x >> y >> endl;

/* Определение номера квадранта*/

if(y>=0) k = (x>=0)?1:2; // точка в верхней половине плоскости

else k = (х<0)?3:4; // точка в нижней половине плоскости

/*печать результата*/

cout << ("\n\nТочка лежит в квадранте K = ") << K << endl;

getch();

return 0;

}

Сравнение приведенных вариантов весьма поучительно, хотя все они приводят к одинаковому результату. Для варианта А результат достигается после выполнения проверки восьми условий независимо от положения точки. Для варианта В в наихудшем случае проверяются шесть условий, а в наилучшем – только два. Наконец, для варианта С результат в любой ситуации достигается после проверки всего двух условий. Таким образом, очевидно, что вариант В предпочтительнее варианта А, а вариант С предпочтительнее вариантов А и В, так как обеспечивает наиболее экономное решение.

Этот пример показывает, как важно правильно организовать процесс ветвления в сложной ситуации.

Примечание. Обратите внимание на взаимное расположение операторов if и else при записи программы в варианте В: каждый оператор else помещен под своим if.

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