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

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

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





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




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


Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...


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


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

СПИД: морально-этические проблемы Среди тысяч заболеваний совершенно особое, даже исключительное, место занимает ВИЧ-инфекция...

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

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

Вопрос 1. Коллективные средства защиты: вентиляция, освещение, защита от шума и вибрации Коллективные средства защиты: вентиляция, освещение, защита от шума и вибрации К коллективным средствам защиты относятся: вентиляция, отопление, освещение, защита от шума и вибрации...

Задержки и неисправности пистолета Макарова 1.Что может произойти при стрельбе из пистолета, если загрязнятся пазы на рамке...

Вопрос. Отличие деятельности человека от поведения животных главные отличия деятельности человека от активности животных сводятся к следующему: 1...

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