Условный оператор множественного выбора
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Оператор switch позволяет провести анализ значения некоторого выражения и в зависимости от его значения выполнить те или иные действия. В общем случае формат записи оператора является следующим:

switch (выражение_выбора){

case значение_1 : оператор_1;

                break ; // не обязательно

case значение_ n : оператор_n;

                break ; // не обязательно

default : оператор; // не обязательно

                      }

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

Значения, указываемые в метках case, должны быть константными выражениями, соответствующими возможным значениям выражения выбора. После значения ставится двоеточие <:>, а затем пишется оператор (может писаться составной оператор), который должен выполняться, если выражение приняло указанное в метке значение.

Если значение выражения выбора совпало со значением, указанным в одной из меток case, то выполняется оператор, записанный после этой метки, после чего, если не принять соответствующих мер, будут выполняться все последующие операторы остальных меток. Поскольку это обычно нежелательно, то, как правило, после оператора, который должен выполняться, записывают оператор break, который прерывает выполнение структуры switch и управление передается следующему за ней оператору.

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

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

Приведенный ниже пример анализирует переменную Key типа char, содержащую символ, введенный пользователем.

switch (Key) {

case ‘y’: case ‘Y’:

cout<< “Вы нажали клавишу Y или y”; break;

case ‘n’: case ‘N’:

cout<< “Вы нажали клавишу N или n”; break;

default:

cout<<“Вы не нажали клавишу Y/y и N/n”;

      }

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

Оператор передачи управления

Оператор goto позволяет прервать обычный поток управления и передать управление в произвольную точку кода, помеченную специальной меткой и имеет следующую форму:

goto метка;

 Метка в тексте программы обозначается идентификатором с последующим двоеточием. Например

Lbegin:

Метка отмечает точку, в которую передается управление оператором goto. Метка может располагаться в любом месте блока, как после оператора goto передающего на нее управление, так и до этого оператора. При этом нужно иметь в виду, что передача управления извне или внутрь цикла может приводить к непредсказуемым последствиям.

Метки можно использовать внутри всей функции, в которой они указаны, но на них нельзя ссылаться вне тела функции.

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

Примеры, реализующие алгоритмы разветвляющейся структуры

Пример 1. Для данной области (рис. 5.а) составить программу, которая определяет принадлежность точки с координатами (x,y) закрашенной области:

 

                   а)                                                              b)

Рис. 5

 

Разобьем закрашенную область на три фигуры (рис. 5.б) и для каждой фигуры приведем ограничения в виде неравенств.

Фигура A ограничена осью абсцисс (y =0) и окружностью с центром в точке (-2;-1) и радиусом R =2. Чтобы точка принадлежала фигуре A нужно выполнение следующих условий:   И .

Фигура B ограничена осью абсцисс (y =0), осью ординат (x =0), прямой, проходящей через точки (-5;-6) и (0;-5), а также окружностью с центром в точке (-2;-1) и радиусом R =2. Чтобы точка принадлежала фигуре B нужно выполнение следующих условий:   И  И  И .

Фигура C ограничена прямыми, параллельными осям координат (y =-4), (x =-5), (x =-1), а также прямой, проходящей через точки (-5;-6) и (0;-5). Чтобы точка принадлежала фигуре C нужно выполнение следующих условий:   И  И  И .

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

1) чтобы точка попала в область фигуры A;

2) чтобы точка попала в область фигуры В и одновременно не попала в область фигуры C.

В общем случае условие принадлежности закрашенной области выглядит следующим:

A ИЛИ ( B И (НЕ С))

Листинг программы, выполняющий данное задание:

#include<iostream.h>

#include<conio.h>

main()

{

double x,y;

cout <<"Введите координаты точки:"<<endl;

cout <<"x=";

cin >> x;

cout <<"y=";

cin >> y;

int A,B,C;

//проверка условий попадания в область фигуры A

A=(y>0)&&((x+2)*(x+2)+(y+1)*(y+1)<4);

//проверка условий попадания в область фигуры B

B=(y<0)&&(x<0)&&(y>0.2*x-5)

&&((x+2)*(x+2)+(y+1)*(y+1)>4);

//проверка условий попадания в область фигуры C

C=(y<-4)&&(x>-4)&&(x<-1);

//проверка условия попадания в закрашенную область

//если A ИЛИ ( B И (НЕ С))

if (A||(B&&(!C)))

cout << "Точка принадлежит заданной области";

 else 

cout << "Точка не принадлежит заданной области";

getch();

}

Пример 1. Составить программу, которая по введенным двум числам и одному из знаков (+, -, *, /), осуществит результат соответствующего арифметического действия.

#include<iostream.h>

#include<conio.h>

main()

{

double x,y;

cout <<"Введите число X=";

cin >>x;

cout <<"Введите число Y=";

cin >>y;

char op;

cout <<"Введите арифметическую операцию:";

cin >>op;

switch (op){

case '+': cout <<"X+Y="<<x+y;

        break;

case '-': cout <<"X-Y="<<x-y;

        break;

case '*': cout <<"X*Y="<<x*y;

        break;

case '/': cout <<"X/Y="<<x/y;

        break;

default: cout <<"Неизвестная операция!";

       }

getch();

}

Варианты заданий

ЗАДАНИЕ I :

Для данных областей составить программу, которая определяет принадлежность точки с координатами (x,y) закрашенной области:

 

 

1. 2.
3. 4.
5. 6.
7. 8.
9. 10.
11. 12.
13. 14.
15. 16.
17. 18.
19. 20.
21. 22.
23. 24.
    25.     26.
27. 28.
29. 30.
  31.   32.
33. 34.
35. 36.
  37.   38.
39. 40.
41. 42.
  43.   44.
45. 46.
47. 48.
49. 50.

 

ЗАДАНИЕ 2:

Для всех вариантов заданий, при организации ветвления в программе, следует использовать конструкцию множественного выбора switch … case .

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

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

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

4. Написать программу, которая по введенной длине отрезка и номеру единицы измерения (1 — дециметр, 2 — километр, 3 —метр, 4 — миллиметр, 5 — сантиметр) выводит соответствующее значение длины отрезка в метрах.

5. Написать программу, которая по введенному числу и номеру месяца выводит информацию, является ли этот день праздничным и название праздника.

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

7. Даны два вещественных положительных числа х и у. Арифметические действия над числами пронумерованы (сложение — 1, вычитание — 2, умножение — 3, деление — 4). Составить программу, которая по введенному номеру выполняет то или иное действие над числами.

8. Написать программу, которая по введенной массе и номеру единицы измерения (миллиграмм — 1, грамм — 2, килаграмм — 3, центнер — 4, тонна —5) выводит соответствующее значение массы в килограммах.

9. Пусть элементами треугольника являются: сторона а (первый элемент), площадь S (второй элемент), высота h (третий элемент), радиус вписанной окружности r (четвертый элемент), радиус описанной окружности R (пятый элемент). Составить программу, которая по введенному номеру и значению соответствующего элемента вычисляет значения всех остальных элементов треугольника. (Углы треугольника считаются известными).

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

11. Пусть элементами параллелограмма являются: сторона а (первый элемент), площадь S (второй элемент), высота h (третий элемент), диагональ d (четвертый элемент). Составить программу, которая по введенному номеру и значению соответствующего элемента вычисляет значения всех остальных элементов треугольника. (Углы параллелограмма считаются известными).

12. Написать программу, которая запрашивает натуральной число (от 0 до 99) в десятичном представлении и выводит его название на естественном языке. Например: 7 семь, 52 пятьдесят два

13. Вычислить порядковый номер дня по заданному числу, месяцу и году.

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

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

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

17. В старояпонском календаре был принят 12-летний цикл. Годы внутри цикла носили названия животных: крысы, коровы, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, курицы, собаки и свиньи. Написать программу, которая вводит номер некоторого года и печатает его название по старояпонскому календарю. (Справка: 1996 г. — год Крысы — начало очередного цикла).

18. Даны два числа в виде дробей A/B и C/D. Арифметические действия над числами пронумерованы (сложение — 1, вычитание — 2, умножение — 3, деление — 4). Составить программу, которая по введенному номеру выполняет то или иное действие над этими числами, результат выводится в виде дроби.

19. Даны два комплексных числа A+jB и C+jD. Арифметические действия над числами пронумерованы (сложение — 1, вычитание — 2, умножение — 3, деление — 4). Составить программу, которая по введенному номеру выполняет то или иное действие над этими числами.

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

21. Написать программу, которая определяет принадлежит ли точка c координатами (x,y) фигуре, выбранной по соответствующему номеру (прямая — 1, парабола — 2, гипербола — 3, окружность — 4). Для вычисления принадлежности программа должна производить запрос необходимых параметров исходя из выбранной фигуры.

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

23. Написать программу, которая по числу и номеру месяца рождения выдавала знак зодиака.

24. Написать программу, которая по введенным коэффициентам передаточной функции , определяла название простого звена.

25. По введенному четырехзначному номеру аудитории вывести словами номер и адрес корпуса, где находится аудитория и на каком этаже. Пример: 3203 находится в третьем корпусе, распложенным по адресу Макаренко, 40 на втором этаже.

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

27. По введенному четырехзначному номеру телефона вывести примерное расположение адреса абонента. Пример: 330245 – Падунский район, п.Энергетик, 5 микрарайон.

Лабораторная работа №3

Дата: 2019-02-02, просмотров: 313.