Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

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





Разветвление – это структура, содержащая две ветви, из которых в зависимости от условия будет выполнена только одна. Разветвления организуются при помощи условного оператора 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. Логические переменные, логические операторы, логические выражения и их использование в программах.







Дата добавления: 2014-12-06; просмотров: 1048. Нарушение авторских прав; Мы поможем в написании вашей работы!




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


ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...


Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...


Логические цифровые микросхемы Более сложные элементы цифровой схемотехники (триггеры, мультиплексоры, декодеры и т.д.) не имеют...

В теории государства и права выделяют два пути возникновения государства: восточный и западный Восточный путь возникновения государства представляет собой плавный переход, перерастание первобытного общества в государство...

Закон Гука при растяжении и сжатии   Напряжения и деформации при растяжении и сжатии связаны между собой зависимостью, которая называется законом Гука, по имени установившего этот закон английского физика Роберта Гука в 1678 году...

Характерные черты официально-делового стиля Наиболее характерными чертами официально-делового стиля являются: • лаконичность...

Дизартрии у детей Выделение клинических форм дизартрии у детей является в большой степени условным, так как у них крайне редко бывают локальные поражения мозга, с которыми связаны четко определенные синдромы двигательных нарушений...

Педагогическая структура процесса социализации Характеризуя социализацию как педагогический процессе, следует рассмотреть ее основные компоненты: цель, содержание, средства, функции субъекта и объекта...

Типовые ситуационные задачи. Задача 1. Больной К., 38 лет, шахтер по профессии, во время планового медицинского осмотра предъявил жалобы на появление одышки при значительной физической   Задача 1. Больной К., 38 лет, шахтер по профессии, во время планового медицинского осмотра предъявил жалобы на появление одышки при значительной физической нагрузке. Из медицинской книжки установлено, что он страдает врожденным пороком сердца....

Studopedia.info - Студопедия - 2014-2026 год . (0.012 сек.) русская версия | украинская версия