Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методичка 25.07.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
2.05 Mб
Скачать

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

Оператор 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:

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

  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 микрарайон.