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

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

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





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


Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...


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

Приложение Г: Особенности заполнение справки формы ву-45   После выполнения полного опробования тормозов, а так же после сокращенного, если предварительно на станции было произведено полное опробование тормозов состава от стационарной установки с автоматической регистрацией параметров или без...

Измерение следующих дефектов: ползун, выщербина, неравномерный прокат, равномерный прокат, кольцевая выработка, откол обода колеса, тонкий гребень, протёртость средней части оси Величину проката определяют с помощью вертикального движка 2 сухаря 3 шаблона 1 по кругу катания...

Неисправности автосцепки, с которыми запрещается постановка вагонов в поезд. Причины саморасцепов ЗАПРЕЩАЕТСЯ: постановка в поезда и следование в них вагонов, у которых автосцепное устройство имеет хотя бы одну из следующих неисправностей: - трещину в корпусе автосцепки, излом деталей механизма...

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

ОСНОВНЫЕ ТИПЫ МОЗГА ПОЗВОНОЧНЫХ Ихтиопсидный тип мозга характерен для низших позвоночных - рыб и амфибий...

Принципы, критерии и методы оценки и аттестации персонала   Аттестация персонала является одной их важнейших функций управления персоналом...

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