Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Вложенные структуры условных операторов




Структура называется вложенной, если после служебного слова else или при истинности логического выражения вновь используются условные операторы. Число вложений может быть произвольным. При этом справедливо сле­дующее правило: служебное слово else всегда относится к ближайшему выше слову if.

Пример. Вычислить значение у по одной из трех ветвей:

При решении данной задачи возможны два варианта про­граммирования:

1) без вложенной структуры;

2) с вложенной структурой.

Ниже рассмотрены оба варианта решения задачи.

Вариант 1 (с использованием вложенной структуры)

Начало
x
 
 
x≥1
y=  
y
Конец
x>0
y=  
y=  
 
 
Схема алгоритма

 

Программа

#include "stdafx.h"

#include<math.h>

int main()

{

float a,x, y;

printf("Введите число х= ");

scanf("%f",&x);

if (x>=1)

y = sqrt(x)/2;

else

if(x>0){a=1.0/3; y=pow(x,a);}

else {a=1.0/4; y=pow(x,a)/4;}

printf("y=%6.2f",y);

return 0;}

Вариант 2 (без использования вложенной структуры)

Схема алгоритма Программа

Начало
X
 
 
x≥1
y=
y
Конец
 
 
0<x<1
y=  
 
 
x≤0
y=  

#include "stdafx.h"

#include<math.h>

int main()

{

float a,x,y;

printf("Введите число x=");

scanf("%f",&x);

if (х>=1)

у = sqrt(x)/2;

if ((x>0)&&(x<1))

{ a= 1.0/3;

y =pow(x,a)/2;

}

if(x<=0)

{a= 1.0/4;

y=pow(x,a)/4;

}

printf("y=%6.2f",y);

return 0;

}

 

 

 

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

При многократном вложении условных операторов программная конструкция становится громоздкой и ее трудно понять. Считается, что число вложений не должно превышать двух-трех. При большем числе вложений рекомендуется использовать оператор выбора switch-case.

 

Общий вид записи оператора

switch <селектор>

{

сase константа выбора 1: оператор 1; break;

…………………………………………………

сase константа выбора n: оператор n; break;

default: оператор n+1;

}

Селектор - это выражение целого или символьного типа.

Константы выбора - возможные значения селектора.

default – осуществляет обработку непредусмотренного значения селектора. Наличие этой метки в операторе switch необязательно.

Работа оператора

По вычисленному значению селектора выбирается для испол­нения case-оператор, содержащий кон­станту выбора, равную значению селектора. После выполнения выбранно­го case-оператора управление передается на конец оператора case. Следующим в программе выполняется оператор, стоящий за опе­ратором выбора switch.

Пример 1. Написать оператор выбора для вычисления величи­ны y по формулам:

Оператор выбора имеет следующую запись:

switch (n)

{

case 1: у =х; break;

case 2: case 3: у = 2 * sqrt(abs(x)); break;

case 4: у = ехр(х); break;

default: printf("значение для n указано не верно\n");

}

Графическая интерпретация оператора

В схемах алгоритма оператору switch соответствует структура ВЫБОР.

Для приведенного выше примера 1 эта структура выглядит следующим образом:

 

n=4
Анализ селектора n
y=x
n=1
y=
y=
n=2 или n=3

 

 


Замечание. Если в строке выбора необходимо записать не­сколько операторов, то их заключают в операторные скобки {...}.

Пример 2. Вычислить значение у.

Если значение х не принадлежит рассматриваемым проме­жуткам, то вывести на экран соответствующее сообщение.

В задаче переменная х является вещественной и не может ис­пользоваться в качестве селектора оператора case. Введем новую переменную целого типа n, которой присваивается целая часть значения х. Тогда программа решения данной за­дачи с использованием оператора выбора может быть составлена следующим образом.

#include "stdafx.h"

#include<math.h>

int main()

{

float х, у;

int n;

printf("Введите число х= ");

scanf("%f",&x);

if((х<1) || (x>=5))

printf("x не принадлежит рассматриваемой области\n");

else

{ n = x;

Switch (n)

{

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

case 2: у = exp(-x); break;

case 3: y =log(x); break;

case 4: у = tan(x); break;

default: printf(" такого решения нет \n");

break;

}

if ((n==1)||(n==2)||(n==3)||(n==4)) printf("y=%6.2f", y);

}

return 0;

}

 

 

Контрольные задания

1)Записать на языке С++ логические выражения

а)

б)

в)переменная х находится вне интервала [а, b];

г) все точки на плоскости находятся выше оси абсцисс;

д) все точки на плоскости находятся либо в первом, либо в третьем квадрантах;

е) все точки на плоскости лежат выше прямой у = 1 +х.

2) Начертить на плоскости область, в которой логическое вы­ражение имеет значение TRUE

а) (х>= 0) && (у>= 0) && (у <= х) || (у <= -1);

б) (х*х +у*у <= 1) && (у>= 0) &&!(y <x);

в) (у>= х) && (y>= -х);

г) (у <= 2) && (x <- 2) || (х*у <0);

д) (х*у>= 0) && (у <= х) && (x <1) && (y>-1);

е) (х*х + у*у <= 4) &&(y>= х*х).

 

3) Записать на языке С++ логические выражения, принимающие значение TRUE для точек, принадлежащих заштрихованной области (рисунок 1).

 

а) б)

 

в) г)

д) е)

Рисунок 1.

 

4) Записать на языке С++ логические выражения, расставить действия и вычислить при: i = 5, j = 2, к=2, а = TRUE, b = FALSE

а)

б)

в)

г)

д)

е)

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...