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

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

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





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




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


Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...


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


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

Потенциометрия. Потенциометрическое определение рН растворов Потенциометрия - это электрохимический метод иссле­дования и анализа веществ, основанный на зависимости равновесного электродного потенциала Е от активности (концентрации) определяемого вещества в исследуемом рас­творе...

Гальванического элемента При контакте двух любых фаз на границе их раздела возникает двойной электрический слой (ДЭС), состоящий из равных по величине, но противоположных по знаку электрических зарядов...

Сущность, виды и функции маркетинга персонала Перснал-маркетинг является новым понятием. В мировой практике маркетинга и управления персоналом он выделился в отдельное направление лишь в начале 90-х гг.XX века...

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

ЛЕЧЕБНО-ПРОФИЛАКТИЧЕСКОЙ ПОМОЩИ НАСЕЛЕНИЮ В УСЛОВИЯХ ОМС 001. Основными путями развития поликлинической помощи взрослому населению в новых экономических условиях являются все...

МЕТОДИКА ИЗУЧЕНИЯ МОРФЕМНОГО СОСТАВА СЛОВА В НАЧАЛЬНЫХ КЛАССАХ В практике речевого общения широко известен следующий факт: как взрослые...

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