Студопедия

КАТЕГОРИИ:

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

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




Лабораторная работа 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

2) 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;}

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

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

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

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

 

#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; }

5. Составьте блок–схему решения задачи из таблицы 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.










Последнее изменение этой страницы: 2018-05-10; просмотров: 219.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...