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

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

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






Разветвление – это структура, содержащая две ветви, из которых в зависимости от условия будет выполнена только одна. Разветвления организуются при помощи условного оператора 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; просмотров: 1025. Нарушение авторских прав; Мы поможем в написании вашей работы!



Шрифт зодчего Шрифт зодчего состоит из прописных (заглавных), строчных букв и цифр...

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

Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...

Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Характерные черты немецкой классической философии 1. Особое понимание роли философии в истории человечества, в развитии мировой культуры. Классические немецкие философы полагали, что философия призвана быть критической совестью культуры, «душой» культуры. 2. Исследовались не только человеческая...

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит...

Кран машиниста усл. № 394 – назначение и устройство Кран машиниста условный номер 394 предназначен для управления тормозами поезда...

Алгоритм выполнения манипуляции Приемы наружного акушерского исследования. Приемы Леопольда – Левицкого. Цель...

ИГРЫ НА ТАКТИЛЬНОЕ ВЗАИМОДЕЙСТВИЕ Методические рекомендации по проведению игр на тактильное взаимодействие...

Реформы П.А.Столыпина Сегодня уже никто не сомневается в том, что экономическая политика П...

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