Студопедия

КАТЕГОРИИ:

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

Задание №2. Реализация разветвляющихся алгоритмов




         

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

 

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

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

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

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

                        elseоператор2;

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

                                           if(x>y) max = x;

                                   else max = y;

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

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

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

Например, найти наибольшее значение из трех чисел x, y, z:

if (x>y)

      if (x>z) max=x;

            else max=z;

else if(y>z) max=y;

             else max=z;

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

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

                  Операнд 1 знак операции  Операнд 2

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

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

! (отрицание или логическое НЕ – унарная операция), &&(конъюнкция или логическое И), || (дизъюнкция или логическое ИЛИ).

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

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

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

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

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

                  Операнд 1?Операнд 2:Операнд 3

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

Например, найти наибольшее из двух чисел: max = a>b ? a : b;

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

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

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

        caseconst_1: операторы;   break;

                                                 …

        caseconst_N: операторы; break;

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

           }

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

Например:       

              switсh(i) {

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

                   case 2: f=fabs(x); break;

                   case 3: f=sqrt(x); break;

                   default: printf(“Ошибка!”); exit(1);

     }

              f=f+5;

 

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

     Ввести значения исходных данных x, y и z. Вычислить значение функции

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

Текст программы может иметь седующий вид (в комментариях указаны действия по вводу-выводу в потоках, набираемые вместо записанных):

#include <conio.h>                                // #include <iostream.h>

#include <stdio.h>

#include <math.h>

void main()

{

     double x, y, z, u;

 puts("Input x, y, z");                   // cout << "Input x, y, z" << endl;

scanf("%lf%lf%lf",&x, &y, &z);  // cin >> x >> y >> z;

if (x*y > z){

           u = x*sin(y);

           puts(" x*y > z");          // cout << " x*y > z" << endl;

}

else {

           u = y*cos(x);

           puts(" x*y <= z");        // cout << " x*y <= z" << endl;

}

printf("\n\t Rezult U = %8.6lf", u); // cout << "\n\t Rezult U = " << u;

puts("\nPress any key ... ");         // cout <<"\nPress any key ... " << endl;

getch();

}

 

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

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

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

 

Индивидуальные задания

Составить программу для вычисления значения rez в зависимости от поставленного условия.

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

1. rez =

2. rez =

3. rez =

4. rez =

5. rez =

     6. rez =  

7. rez =

8. rez =

9. rez =  

10. rez = .

11. rez =

12. rez =  

13. rez =

14. rez =

15. rez =

16. rez =










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

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