Пример выполнения задания. Лабораторная работа № 2

ЛАБОРАТОРНАЯ РАБОТА № 2

РЕАЛИЗАЦИЯ РАЗВЕТВЛЯЮЩИХСЯ АЛГОРИТМОВ

 

Цель работы: изучить операции сравнения, логические операции, условные операторы if, switch и оператор передачи управления break.

 

Теоретические сведения

Условный оператор if

Для выбора одного из варианта вычислений применяется оператор условного перехода. Различают полную и сокращенную форму оператора.
Полная форма:

if ( выражение ) оператор 1; else оператор 2;

вычисляется выражение, и если его значение истинно (не равно 0), то выполняется оператор 1, иначе (выражение ложно)– оператор 2, например:

if (а<b) min = a;

else min = b;

Если операторы 1, 2 содержат более одного оператора, то применяется блок и они заключаются в фигурные скобки { }.

Сокращенная форма:

if ( выражение ) оператор 1;

Конструкция else отсутствовать и тогда, в случае ложности условия, управление передается на следующий за if оператор.

О ператоры 1, 2 могут являются операторами if и тогда оператор называют вложенным, при этом ключевое слово else принадлежит ближайшему предшествующему if.

Например, найти наименьшее значение из трех чисел a, b, c:

if (a<b)

if (a<c) min=a;

else min=c;

else if(b<c) min=b;

else min=c;

Операции сравнения: < (меньше), <= (меньше или равно), > (больше), >= (больше или равно), = = (равно), != (не равно). Пары символов разделять пробелом нельзя.

Операции сравнения бинарные, их общий вид:

операнд1 операция сравнения операнд 2

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

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

-! (отрицание или логическое НЕ – унарная операция),

- && (конъюнкция или логическое И),

- || (дизъюнкция или логическое ИЛИ).

Например: (0<=а)&&(а<=10)

((x==0)&&(!y)||((z>1)&&(k<=0))

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

Тернарная (условная) операция?:

Ее общая форма:

операнд 1? операнд 2: операнд 3;

Если значение операнда 1 истинно (не равно 0), то результатом операции является операнд 2, иначе – операнд 3.

Например, поиск наименьшего из двух чисел запишется с помощью тернарной операции следующим образом: min = n<m? n: m;

Оператор выбора switch

Общая форма оператора выбора (переключателя):

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

case константа _1: операторы; break;

case константа _N: операторы; break;

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

Вычисляется выражение и проверяется, если его результат совпадает со значением одной из констант, то выполняются операторы этого case. Значениями константа _1,…, константа _ N могут быть только целые или символьные константы. Конструкция default выполняется в том случае, если результат выражения не совпал ни с одной из констант. Конструкция default может отсутствовать – это сокращенная форма оператора выбора. В этом случае, если не одна из констант не совпала со значением выражения, то управление предается следующему за ним оператору. Оператор break выполняет досрочный выход из switch, то есть после выполнения ветви case все остальные будут пропущены. Если оператор break в case не указан, то будут выполняться операторы следующих ветвей case до появления оператора break, либо до завершения оператора switch.

Например:

switсh(i) {

case 1: cout << "зима"; break;

case 2: cout << "весна"; break;

case 3 cout << "лето"; break;

case 4 cout << "осень"; break;

default: cout << "Нет такой пары года"; exit(1);

}

Пример выполнения задания

Вычислить значение выражения

При выполнении задания предусмотреть выбор вида функции f (x): sin(x), x 2 или 3x, а так же вывод сообщения, по какой ветви выполнялись вычисления.

Составим блок-схему алгоритма решения задачи (рисунок 2.1)

 

Рисунок 2.1— Блок-схема алгоритма решения задачи

 

Текст программы может иметь следующий вид (ввод-вывод в потоке):

 

#include <iostream.h>

#include <math.h>

#include <conio.h>

int main()

{

double x,y,f,a,s; int k;

cout << "Vvedite x "; cin >> x;

cout << "Vvedite y "; cin >> y;

cout << "Viberite f: 1 - sin(x), 2 – x*x, 3 – 3*x "; cin >> k;

switch (k)

{

case 1: f=sin(x); break;

case 2: f=pow(x,2); break;

case 3: f=3*x; break;

default: cout << "Ne vuibrana funkciya "; return 1;

}

a=fabs(x*y);

if (a>10) { s=f*sin(x);cout << "a>10" << endl; }

Else

if (a<=10 && a>5) { s=y*cos(f); cout << "5<a<=10" << endl;}

Else

{ s=pow(y,f); cout << "a<=5" << endl;}

cout << "RESULT = " << s << endl;

getch();

return 0;

}

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

- 1 вариант введенные значения соответствуют первому условию (рисунок 2.2):

Рисунок 2.2—Результат решения по первому условию

- 2 вариант введенные значения соответствуют второму условию (рисунок 2.3):

Рисунок 2.3—Результат решения по второму условию

- 3 вариант введенные значения соответствуют третьему условию (рисунок 2.4):

 

Рисунок 2.4— Результат решения по третьему условию

 

- 4 вариант введенные значения не соответствуют вариантам выбора функции f(x) (рисунок 2.5):

 

Рисунок 2.5— Результат решения в исключительной ситуации


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: