КАТЕГОРИИ: Архитектура-(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 (без использования вложенной структуры) Схема алгоритма Программа
#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 эта структура выглядит следующим образом:
Замечание. Если в строке выбора необходимо записать несколько операторов, то их заключают в операторные скобки {...}. Пример 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; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |