Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторная работа Си 2

.docx
Скачиваний:
57
Добавлен:
10.06.2015
Размер:
40.3 Кб
Скачать

Лабораторная работа 2

С/C++: программы разветвляющейся структуры

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

Теоретическое обоснование

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

Условный оператор if имеет две формы: полную и сокращенную: Формат полного оператора: if (условие) оператор1; else оператор2;

Формат сокращенного оператора: if (условие) оператор1;

Полный оператор if работает следующим образом: вычисляется и проверяется условие; если логическое выражение, выступающее в качестве условия, принимает значение true (истина), то выполняется оператор1, если результат проверки условия false (ложь), то выполняется оператор2, следующий за словом else.

В сокращенной форме при ложности условия исполняется оператор, следующий за условным оператором.

Для записи условия используются операции отношения и логические операции.

Пример 2.1. Условие x≠b на языке С++ имеет вид: (x< >b).

Пример 2.2. Сложное двойное условие a≤x<b на языке С++ имеет вид: ((x>=a) &&(x< b)).

Пример 2.3. Сложное двойное условие x≤c или x≥d на языке С++ имеет вид: ((x<=c)|(x>=d)).

В качестве оператор1 и оператор2 могут выступать один простой оператор или составной оператор.

Составной оператор применяется в тех случаях, когда синтаксис языка С, С++ допускает использование только одного оператора, а семантика программы требует выполнения нескольких действий. В этом случае несколько операторов заключаются в операторные скобки {}, образуя составной оператор. Формат оператора:

{ оператор_ 1;

оператор _2;

оператор_ n;}

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

Пример 2.4. Даны два числа А и В. Определить максимальное среди них.

Можно применить два варианта использования if:

  1. max=a;

if (b>max) max=b; // краткий if

  1. if (a>b) max=a; else max=b; // полный if

Пример 2.5. Даны два числа А и В. Найти среднеарифметическое отрицательных среди них чисел.

Фрагмент программы на языке С, С++ имеет вид:

sum=0; //обнуление начальных значений

kol=0;

if (a<0) { sum+=a; // вычисление суммы отрицательных чисел

kol++;} // определение количества отрицательных чисел

if (b<0) { sum+=b;

kol++;}

Sr=sum/kol; // вычисление среднего арифметического

В случае множественного выбора в качестве управляющей структуры используется оператор переключатель switch. Эта структура позволяет переходить на одну из множества ветвей в зависимости от значения заданного выражения. Ее особенность состоит в том, что выбор решения здесь осуществляется не в зависимости от истинности или ложности условия, а является вычислимым. Оператор выбора позволяет заменить несколько условных операторов (в силу этого его ещё называют оператором множественного ветвления).

Формат оператора:

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

case константное_выражение_1 : {операторы_1; break;}

case константное_выражение_2 : {операторы_2; break;}

. . . . . . . . . . . . . . . . . . . . .

case константное_выражение_n : {операторы_n; break;}

default: операторы;}

Выражение и константные_выражения должны быть только целого типа. Каждое константное_выражение уникально, т.е. входит только в одну из ветвей переключателя.

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

Если значение выражения не совпадает ни с одним из константных_выражений, выполняется операторы ветви default. При

Пример 2.6. С клавиатуры вводится символ S (тип char). Определить, какой это символ: цифра или знак арифметической операции (+,-,*, /).

switch (S) {

case ‘0’: case ‘1’: case ‘2’: case ‘3’: case ‘4’: case ‘5’:

case ‘6’: case ‘7’: case ‘8’: case ‘9’: { cout <<″цифра″; break;}

case ‘+’: case ‘-’: case ‘*’: case ‘/’: { cout <<″знак операции″; break;}

default: cout <<″символ не определен″; }

Поскольку переменная S имеет символьный тип значения константных_выражений заключены в апострофы.

Методика и порядок выполнения работы

  1. Изучите теоретическое обоснование и примеры.

  2. Выполните контрольный пример:

Для любого x вычислить значение функции, если

1, при x ≤ 1

Y= x ² , при 1 < x < 5

√x , при x ≥ 5

# include <iostream.h>

# include <math.h>

#include< stdlib.h>

float x,y;

main(){

cout <<"\n Введите x ";

cin >> x;

if (x<=1) y=1;

else if (x<5) y=x*x;

else y=sqrt(x)+1;

cout <<“ x=”<<x<<” y=”<<y;

system("PAUSE");

return 0;}

Запустите и выполните программу с разными исходными данными.

  1. Составьте блок–схему решения задачи из таблицы 2.1 (согласно варианту). Напишите программу на языке С++ с использованием условного оператора. Отладьте и выполните программу с разными исходными данными.

  2. Выполните контрольный пример:

С клавиатуры вводится номер дня недели. Вывести соответствующее название дня недели.

#include<iostream.h>

#include< stdlib.h>

int num;

main (){

cout <<"\n Введите номер дня"; cin >> num;

cout <<"\n Это день: ";

switch (num)

{ case 1:{ cout <<"понедельник \n"; break;}

case 2:{cout<<"вторник \n"; break;}

case 3: {cout<<" среда \n"; break;}

case 4:{ cout<<"четверг \n"; break;}

case 5:{cout<<"пятница \n"; break;}

case 6:{:cout<<"суббота \n"; break;}

case 7:{:cout<<"воскресенье \n"; break;}

default : cout <<"\n Это не день недели !!! ";}

system("PAUSE");

return 0; }

  1. Составьте блок–схему решения задачи из таблицы 2.2 (согласно варианту). Напишите программу на языке С++ с использованием оператора switch. Отладьте и выполните программу с разными исходными данными.

Таблица 2.1 – Таблица вариантов задания 1.

вар

Исходные данные

1

Найти действительные корни уравнения: АХ2 + ВХ + С = 0. Если корней нет, то выдать соответствующее сообщение. Учесть случай, когда А=0.

2

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

3

С клавиатуры последовательно вводятся числа K, L, M. Определить, является ли последовательность из этих чисел убывающей.

4

С клавиатуры вводится целое число R. Определить кратно ли оно пяти или трем.

5

С клавиатуры вводится целое трёхзначное число W. Вычислить произведение цифр этого числа.

6

Определить, является ли треугольник со сторонами А, В и С равнобедренным.

7

С клавиатуры вводятся координаты двух точек X1, Y1, X2, Y2. Определить, лежат ли точки на одной окружности, координаты центра которой – начало координат.

8

Определить, поместится ли в круг радиусом R квадрат со стороной А.

9

Определить, является ли четырехугольник со сторонами А, В, С и D ромбом.

10

С клавиатуры вводятся числа K, L, M.Подсчитать количество четных чисел.

11

Определить, поместится ли круг радиусом R в квадрат со стороной А.

12

Определить, какая из точек М1 с координатами X1,Y1 или М2 с координатами X2, Y2 расположена ближе к началу координат.

13

С клавиатуры вводятся сторона квадрата А и радиус круга R. Определить, какая из фигур имеет большую площадь.

14

Определить, является ли треугольник со сторонами А, В и С равносторонним.

15

С клавиатуры вводятся числа X и Y. Меньшее из этих чисел возвести в куб, а большее оставить без изменения..

16

С клавиатуры вводятся числа X, Y, Z и границы отрезка A и B. Определить какие из чисел X, Y или Z. принадлежат отрезку [A, B].

17

С клавиатуры вводится целое трёхзначное число T.Определить, есть ли среди цифр этого числа одинаковые.

18

С клавиатуры вводятся числа K, L, M. Найти максимальное из этих чисел.

19

С клавиатуры вводятся числа A, B, C, D и Z. Определить принадлежит ли число Z интервалам [А,В] или [С,D].

20

С клавиатуры вводится целое трёхзначное число T. Определить, является ли оно па­линдромом (т.е. читается ли число одина­ково слева направо и справа налево).

21

С клавиатуры вводятся числа А, В, С и D. Подсчитать количество отрицательных чисел.

22

Определить, попадает ли точка М с координатами X, Y в круг с радиусом R и центром в начала координат.

23

Определить номер квадранта (четверть плоскости), в котором расположена точка М с координатами X, Y.

24

С клавиатуры вводятся длины отрезков К, М и Р. Определить, можно ли из этих отрезков построить треугольник.

25

С клавиатуры вводятся катеты трёх прямоугольных треугольников A1, B1, A2, B2 и A3, B3. Определить, какой из треу­гольников имеет наибольшую гипотенузу.

26

С клавиатуры вводятся три числа A, B и С. Если их произведение положительно, то большее из А и В заменить на сто. В противном случае меньшее из В и С заменить на десять.

27

Жилец дома заходит в лифт и набирает номер своей квартиры N. В подъезде дома 9 этажей, на каждом этаже по три квартиры. Определить, на какой этаж доставить лифт жильца?

28

С клавиатуры вводится время телефонных разговоров Т (в минутах) за один месяц. Вычислить плату за пользование телефоном, если услуги телефонной сети оплачиваются по следующему правилу: 30 минут разговоров в месяц оплачиваются как абонентская плата в 100 рублей; разговоры сверх нормы оплачиваются из расчета 0,30 рублей за минуту.

29

С клавиатуры вводится целое трёхзначное число W.Определить какое получится число, если записать цифры W в обратном порядке.

30

С клавиатуры вводятся числа K, L, M. Подсчитать количество чисел кратных семи.

Таблица 2.2 – Таблица вариантов задания 2.

вар

Исходные данные

1

С клавиатуры вводится порядковый номер месяца M [1;12] текущего года. Определить количество дней в данном месяце.

2

С клавиатуры вводится два вещественных числа X и Y (не равные нулю). Арифметические действия над ними пронумерованы следующим образом: 1- ложение, 2- вычитание; 3- умножение; 4- деление. Составить программу, которая по введенному номеру операции выполнит то или иное действие над числами.

3

С клавиатуры вводится порядковый номер дня в текущем году D[1;365/366]. Определить, к какому месяцу принадлежит день.

4

С клавиатуры вводится час суток Т [1;24]. Определить время суток, по введенному часу, если считать: ночь с 22.00 до 5.00; утро с 6.00 до 11.00; день с 12.00 до 16.00; вечер с 17.00 до 21.00.

5

С клавиатуры вводится оценка, полученная студентом – Ос. Выдать сообщение ‘Умница’ , если Ос=5, ‘Хорошо’ – Ос=4, ‘Лентяй’ – Ос=3 или Ос=2.

6

С клавиатуры вводится целое число N [1; 5]. Вывести фразу «Мы сдали N экзаменов», учитывая, что при некоторых значениях N слово «экзаменов» необходимо заменить словом «экзамен» или «экзамена».

7

С клавиатуры вводится порядковый номер пальца на руке N [1;5]. Вывести название пальца соответствующее этому номеру (например, если введено число 5, выводится сообщение – ‘мизинец’).

8

С клавиатуры вводится первая буква названия падежа (И - именитель­ный, Р - родительный, Д - дательный, В - винительный, Т - твори­тельный, П - предложный). Вывести слово студент в заданном падеже единственного числа.

9

С клавиатуры вводится порядковый номер месяца M [1;12]. Вывести приходящие на этот месяц праздники (например, если введён номер 1, выводится сообщение – ‘1января Новый год’, ‘7января – Рождество’ и т.п.).

10

С клавиатуры вводится цифра [0;9]. Вывести на экран название цифры на английском языке (например, 2 –‘two’ и т.п.).

11

С клавиатуры вводится номер дня недели D [1;7].Вывести название дня недели, соответствующее этому номеру.

12

С клавиатуры вводится целое число K [1; 10]. Вывести фразу «Мне K лет», учитывая, что при некоторых значениях K слово «лет» необходимо заменить на слово «год» или «года».

13

С клавиатуры вводится целое число В [1,3]. Вывести буквы русского алфавита: гласные, если В=1; парные согласные, если В=2; непарные согласные, если В=3.

14

С клавиатуры вводится радиус R и номер операции. Операции пронумерованы следующим образом: 1 – вычисление длины окружности; 2 – вычисление площади круга; 3 – вычисление объема шара. Вывести результат выполнения соответствующей операции, с использованием R.

15

С клавиатуры вводится порядковый номер цвета радуги R [1;7]. Вывести название цвета соответствующее этому номеру.

16

С клавиатуры вводится возраст человека V [1,100]. Определите стадию жизни человека по его возрасту, если 0..1 – Младенчество, 2..7 – Детство, 8..15 – Отрочество, 16..25 – Юность, 26..65 – Зрелость, 66..100 – Старость.

17

С клавиатуры вводится порядковый номер месяца M [1;12]. Вывести название месяца, соответствующее этому номеру.

18

С клавиатуры вводится количество карандашей N [1;7]. Вывести фразу «Я купил N карандашей», учитывая, что при некоторых значениях N слово «карандаш» необходимо заменить на слово «карандаша» или «карандашей».

19

С клавиатуры вводится порядковый номер квартала K [1;4]. Вывести название месяцев входящих в этот квартал. (например, если введено число 2, выводится результат – апрель, май, июнь).

20

С клавиатуры вводится целое число F[1;9]. Вывести на экран это число римскими цифрами.

21

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

22

С клавиатуры вводится год Y. Определить, будут ли проводить в этом году зимние или летние олимпийские игры, или год не олим­пийский.

23

С клавиатуры вводится порядковый номер месяца M [1;12]. Определить, к какому сезону года (весна, лето, осень или зима) относится месяц M.

24

С клавиатуры вводится количество книг N [1;6]. Вывести фразу «Я взял из библиотеки N книг», учитывая, что при некоторых значениях N слово «книга» необходимо заменить на слово «книги» или «книг».

25

С клавиатуры вводится номер дня недели D [1;7]. Вывести расписание занятий вашей группы в этот день или сообщение о выходном дне.

26

С клавиатуры вводится целое число [11;50]. Определить является ли это число четным или нечетным.

27

27. С клавиатуры вводятся целые числа: n1 [1;7] и n2 [1;7] – порядковые номера нот, n1 ≠ n2. Определить интервал, образованный нотами n = n1- n2 (если n = 1 выводится сообщение – ‘секунда’, n = 2 – ‘терция’, n = 3 – ‘квинта’, n = 4 – ‘секста’, n = 5 – ‘септима’).

28

С клавиатуры вводится порядковый номер ноты Т [1;7] Вывести название ноты, соответствующее этому номеру.

29

С клавиатуры вводится количество тюльпанов N [1;6]. Вывести фразу «Я купил N тюльпанов», учитывая, что при некоторых значениях N слово «тюльпан» необходимо заменить на слово «тюльпан» или «тюльпана».

30

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

Содержание отчета и его форма

Выполните все описанные пункты задания, письменно оформите отчет, который должен содержать:

– название и цель лабораторной работы;

– условие задания 1, блок–схему алгоритма, отлаженную программу на языке С++, вводимые исходные данные и результаты выполнения программы;

– условие задания 2, блок–схему алгоритма, отлаженную программу на языке С++, вводимые исходные данные и результаты выполнения программы.

Контрольные вопросы и защита работы

  1. Что такое алгоритм и программа разветвленной структуры?

  2. Основные операции отношения и логические, используемые в Си.

  3. Какие операторы используются для программирования алгоритмов разветвляющейся структуры?

  4. Виды, синтаксис и принципы работы операторов условного перехода.

  5. В каких случаях фигурные скобки обязательны в условных операторах?

  6. Что такое множественный выбор? Как он изображается в блок–схеме?

  7. Зачем ставится в переключателе оператор break и что изменится при его отсутствии?

  8. Зачем в переключателе употребляется default?

Защита лабораторной работы включает в себя демонстрацию выполненных программ, подготовленный отчет и устный ответ на контрольные вопросы.