Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




Программа

#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

а)

б)

в)

г)

д)

е)




Поделиться с друзьями:


Дата добавления: 2014-12-26; Просмотров: 373; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.032 сек.