Организация разветвлений. Разветвления в цикле

Разветвление – это структура, содержащая две ветви, из которых в зависимости от условия будет выполнена только одна. Разветвления организуются при помощи условного оператора if (см. п. 1.7.1):

if (выражение)

{

Операторы1;

}

[Else

{

Операторы2;

}]

. . .

Если выражение имеет значение true, то выполняются Операторы1, и происходит переход к оператору, следующему за if. Если выражение имеет значение false, то выполняются Операторы2, расположенные после else, и далее выполняется оператор, следующий за условным. Если вторая ветвь отсутствует (такая структура называется обход), то во втором случае никаких действий не производится и сразу выполняется оператор, следующий за условным. Если блок (операторы, заключенные в скобки {}) состоит из одного оператора и не содержит описаний переменных, то скобки можно не использовать.

Далее приводятся примеры программ с использованием разветвлений, разветвлений в цикле и множественного выбора (см. п. 1.7.5).

Пример 2.15.Составить программу для решения квадратного уравнения ax2+bx+c = 0. Квадратное уравнение имеет решение, если дискриминант d = b2 – 4ac не является отрицательным. Т.е. после ввода коэффициентов a, b и c нужно вычислить d и проверить условие d < 0. Если это условие выполняется, то нужно вывести сообщение «Уравнение не

имеет решения». Если условие не выполняется (d>=0), нужно вычислить и напечатать корни (возможность совпадения корней игнорируется).

double a, b, c, d, x1, x2;

Console.WriteLine("Введите a");

a = double.Parse(Console.ReadLine());

Console.WriteLine("Введите b");

b = double.Parse(Console.ReadLine());

Console.WriteLine("Введите c");

c = double.Parse(Console.ReadLine());

d = b * b - 4 * a * c;

if (d < 0)

Console.WriteLine("Уравнение не имеет решения");

else

{

x1 = (-b + Math.Sqrt(d)) / (2 * a);

x2 = (-b - Math.Sqrt(d)) / (2 * a);

Console.WriteLine("{0:f4} {1:f4}", x1, x2);

}

Console.ReadKey();

Пример 2.16. Вывести большее из двух чисел.

double x, y, u;

Console.WriteLine("Введите x");

x = double.Parse(Console.ReadLine());

Console.WriteLine("Введите y");

y = double.Parse(Console.ReadLine());

u = x;

if (y > u)

u = y;

Console.WriteLine(u);

Console.ReadKey();

Пример 2.17. Найти максимальное из трех чисел.

double x, y, z, u;

Console.WriteLine("Введите x");

x = double.Parse(Console.ReadLine());

Console.WriteLine("Введите y");

y = double.Parse(Console.ReadLine());

Console.WriteLine("Введите z");

z = double.Parse(Console.ReadLine());

u = x;

if (y > u)

u = y;

if (z > u)

u = z;

Console.WriteLine(u);

Console.ReadKey();

 

Пример 2.18. Определить, лежит ли точка с координатами x, y внутри или вне круга радиусом r с центром вначале координат.

string inside = "точка внутри круга";

string outside = "точка вне круга";

double x, y, r;

Console.WriteLine("Введите x");

x = double.Parse(Console.ReadLine());

Console.WriteLine("Введите y");

y = double.Parse(Console.ReadLine());

Console.WriteLine("Введите r");

r = double.Parse(Console.ReadLine());

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

Console.WriteLine(inside);

else

Console.WriteLine(outside);

Console.ReadKey();

Здесь использованы символьные константы inside и outside для размещения соответствующей символьной информации, которая выводится в качестве результата.

Второй вариант программы для решения этой задачи составлен с использованием логической переменной, в которую помещается результат (true, если точка внутри круга, false - в противоположном случае).

double x, y, r;

bool l = false;

Console.WriteLine("Введите x");

x = double.Parse(Console.ReadLine());

Console.WriteLine("Введите y");

y = double.Parse(Console.ReadLine());

Console.WriteLine("Введите r");

r = double.Parse(Console.ReadLine());

if (x * x + y * y <= r * r) l = !l;

Console.WriteLine(l);

Console.ReadKey();

В операторе if логической переменной l присваивается значение true : выполняется операция отрицания (оператор !), если условие выполняется, т.е. точка лежит внутри круга.. Подробнее о логических операциях см. п. 1.5

Пример 2.19. Определить, лежит ли точка с координатами x, y внутри или вне квадрата, вершинами которого являются точки с координатами (1, 1), (–1, 1), (1, –1), (–1, –1).

Точка лежит внутри квадрата, если одновременно выполняются условия |x|<1 и |y|<1. Результат будем получать в логической переменной (см. пример 2.18).

 

double x, y;

bool l = false;

Console.WriteLine("Введите x");

x = double.Parse(Console.ReadLine());

Console.WriteLine("Введите y");

y = double.Parse(Console.ReadLine());

if (Math.Abs(x) <= 1 && Math.Abs(y) <= 1) l = !l;

Console.WriteLine(l);

Console.ReadKey();

В операторе if логической переменной l присваивается значение true: выполняется логическая операция «И» (оператор &&), если условие выполняется, т.е. точка лежит внутри квадрата. Подробнее см. п. 1.5.

Пример 2.20. Определить, лежит ли точка с координатами x, y внутри или вне треугольника с вершинами в точках (0, –1), (0, 1), (1, 0).

Точка принадлежит треугольнику, если одновременно выполняются два условия x >= 0 и x+|y| <= 1.

 

double x, y;

bool l = false;

Console.WriteLine("Введите x");

x = double.Parse(Console.ReadLine());

Console.WriteLine("Введите y");

y = double.Parse(Console.ReadLine());

if (x >= 0 && Math.Abs(y) + x <= 1) l = !l;

Console.WriteLine(l);

Пример 2.21. Вводя координаты n точек x, y. Определить, сколько из них попадет в круг радиусом r с центром в начале координат.

double x, y, r;

int i, n, k;

Console.WriteLine("Введите количество точек");

n = int.Parse(Console.ReadLine());

Console.WriteLine("Введите радиус");

r = double.Parse(Console.ReadLine());

k = 0;

for (i = 1; i <= n; i++)//вместо i = i + 1

{

Console.WriteLine("Введите x");

x = double.Parse(Console.ReadLine());

Console.WriteLine("Введите y");

y = double.Parse(Console.ReadLine());

if (x*x + y*y <= r*r) k++;

}

Console.WriteLine("В круг попало {0} точек из {1} ", k, n);

Console.ReadKey();

Пример 2.22. Ввести координаты точки x, y. Вычислить по выбору радиус-вектор точки, площадь прямоугольника с вершинами в точках (0, 0), (x, 0), (0, y), (x, y) или длину окружности с центром в начале координат, проходящей через точку x, y.

Для выбора варианта вычислений используем оператор switch. Вариант вычислений будем задавать цифрой 1, 2 или 3.

double x, y, r;

int k = 0;

Console.WriteLine("Введите x");

x = double.Parse(Console.ReadLine());

Console.WriteLine("Введите y");

y = double.Parse(Console.ReadLine());

Console.WriteLine("Признак: 1 = радиус - вектор, 2 = площадь
прямоугольника, 3 - длина окружности");

Console.Write("Введите признак 1, 2 или 3: ");

k = int.Parse(Console.ReadLine());

switch (k)

{

case 1:

r = Math.Sqrt(x * x + y * y);

Console.WriteLine("радиус вектор {0:f}", r);

Console.ReadLine();

break;

case 2:

r = x * y ;

Console.WriteLine("площадьпрямоугольника{0:f}",r);

Console.ReadKey();

break;

case 3:

r = 2*Math.PI*Math.Sqrt(x * x + y * y);

Console.WriteLine("длина окружности {0:f}", r);

Console.ReadKey();

break;

default:

Console.WriteLine("Неверный выбор. Выберите 1, 2 или 3.");

Console.ReadKey();

break;

}

 

 

 

Вопросы для самопроверки

1. Что такое разветвление? Какой оператор используется для организации разветвлений?

2. Обход и его реализация на языке C#.

3. Множественный выбор и его реализация на языке C#.

4. Логические переменные, логические операторы, логические выражения и их использование в программах.








Дата добавления: 2015-02-07; просмотров: 3577;


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

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.022 сек.