КР по ОАиП для заочников. Основы алгоритмизации и программирования
Скачать 1.08 Mb.
|
1.4. Индивидуальные задания Составить согласно индивидуальному варианту блок-схему алгоритма и программу вычисления значения выражения при заданных исходных данных. Сравнить полученное значение с указанным правильным результатом. 1. 2 2 2 2 2cos 3 1 1 3 / 5 sin 2 x z s z y при x = 14,26; y = –1,22; z = 3,5· 2 10 . Ответ s = 0,749155. 2. 2 3 3 2 2 9 ( ) tg 2 x y x y s e z x y при x = –4,5; y = 0,75· 4 10 ; z = –0,845 2 10 . Ответ s = –3,23765. 3. 2 2 2 2 1 sin 1 cos arctg 2 1 y x y s x z y x x y при x = 3,74 2 10 ; y = –0,825; z = 0,16 2 10 . Ответ s = 1,05534. Ввод значений x, y, z с клавиатуры 13 4. 2 2 3 4 1 2sin cos cos 1 2 3 4 y z z z s x y z при x = 0,4 4 10 ; y = –0,875; z = –0,475 3 10 . Ответ s = 1,98727. 5. 2 ln sin (arctg( )) 2 x y s y x z при x = –15,246; y = 4,642 2 10 ; z = 21. Ответ s =–182,038. 6. 2 2 3 10 arcsin y s x x z x y при x = 16,55 3 10 ; y = –2,75; z = 0,15. Ответ s = –40,6307. 7. 2 2 3 1 5arctg arccos 4 x x y x s x x x y z x при x = 0,1722; y = 6,33; z = 3,25 4 10 . Ответ s = –205,306. 8. 6 2 3 ln arctg arctg x y x y e x y s x y x z при x = –2,235 2 10 ; y = 2,23; z = 15,221. Ответ s = 39,3741. 9. 3 2 cos 1 y x z y y x y s x y x x y x при x = 1,825 2 10 ; y = 18,225; z = –3,298 2 10 . Ответ s = 1,21308. 10. 3 1/ sin 4 2 x x z s x y e при x = 3,981 2 10 ; y = –1,625 3 10 ; z = 0,512. Ответ s = 1,26185. 11. 3 3 2 cos sin 1 2 x x y y z s y x y x x y e при x = 6,251; y = 0,827; z = 25,001. Ответ s = 0,712122. 12. 2 1 arctg 3 2 3 1 1 x y y x y z s x y при x = 3,251; y = 0,325; z = 0,466 4 10 . Ответ s = 4,23655. 13. 3 4 2 1 sin tg y x s x y z z при x = 17,421; y = 10,365 3 10 ; z = 0,828 5 10 . Ответ s = 0,330564. 14 14. 1 1/ sin 3 2 1 2 2 3 x z y x y s x x y y при x = 12,3 1 10 ; y = 15,4; z = 0,252 3 10 . Ответ s = 82,8256. 15. 2 3 1 1 1 1 tg 2 3 y y y x y x x e s y x x y z при x = 2,444; y = 0,869 2 10 ; z = –0,13 3 10 . Ответ s = –0,498707. 15 ЗАДАНИЕ №2 ПРОГРАММИРОВАНИЕ РАЗВЕТВЛЯЮЩИХСЯ АЛГОРИТМОВ 2.1. Логические операции и операции сравнения Операции сравнения применяются при работе с двумя операндами и воз- вращают true ( 1 ), если результат сравнения – истина, и false ( 0 ), если резуль- тат сравнения – ложь. В языке С определены следующие операции сравнения: < (меньше ), <= (меньше или равно), > (больше), >= (больше или равно), != (не равно), == (равно). Логические операции работаютс операндами скалярных типов и возвра- щают результат булева типа. Существует три логические операции: ! – отрицание или логическое НЕ; && –логическое И; || – логическое ИЛИ. Например: 0 ≤ х ≤ 10 => 0<=x && x<=10 x ≠ y или z = x => x!=y || z==x 2.2. Оператор условной передачи управления if Форматы оператора if : 1. Полная форма: if ( логическое_выражение ) оператор_ 1; else оператор_2 ; Если логическое выражение истинно, то выполняется оператор_1, иначе – оператор_2. 2. Сокращенная форма: if ( логическое_выражение ) оператор_ 1; Если логическое_выражение истинно, то выполняется оператор_1. 3. Вложенная форма: if ( логическое_выражение_1 ) оператор_ 1; else if ( логическое_выражение_2 ) оператор_ 2; else оператор_3 ; Если логическое_выражение_1 истинно, то выполняется оператор_1, иначе, если логическое_выражение_2 истинно, то выполняется опера- тор_2, иначе выполняется оператор_3. Примеры: 1. найти максимальное значение из х, y, z (max(x,y,z)): if (x>y) max=x; else max=y; if (z>max) max=z; 16 2. Вычислить выражение: 3 3 3 2 ln , / 0 ln / , / 0 , иначе x y x y s x y x y x y x y Так как на ввод значения переменной y по условию примера не преду- смотрено никаких ограничений, то при вводе значения y =0 может возникнуть ситуация деление на 0, поэтому следует записывать оператор if , начиная с вет- ви иначе: if (!x || !y) s =pow(pow(x,2)+y,3); // x=0 или y=0 - иначе else if (x/y >0) s=log(x)+ pow(fabs(y),1./3); // x/y>0 else s= log(fabs(x/y))* pow(x+y,3); // x/y<0 2.3. Оператор множественного выбора switch Общая форма оператора: switch ( переменная_выбора ) { case const_1: операторы_1 ; break; … case const_N: операторы_N ; break; default: операторы_ N+1; } переменная_выбора, const _1,…, const_N – константа, переменная или вы- ражение целого, символьного или логического типа. При использовании оператора switch сначала анализируется перемен- ная_выбора и проверяется, совпадает ли еѐ значение со значением одной из констант const _1, …, const_N . При совпадении выполняются операторы этого case . Конструкция default (может отсутствовать) выполняется, если результат выражения не совпал ни с одной из констант. Например: выбор функции f(x): х 2 , |x|, x switch (k) { case 1: f=pow(x,2); break; case 2: f=fabs(x); break; case 3: f=sqrt(x); break; default : cout<<‖\nf(x) ne zadana!\n‖; return 1; } 17 2.4. Пример выполнения задания Написать программу вычисления выражения 2 cos( ) ln( ), 10 , 3 10 2tg( ), иначе x y x y xy s e xy x y Предусмотреть вывод информации о выбранной ветви вычислений. Блок-схема алгоритма Код программы #include #include { 18 double x, y, s, f_xy; cout << "Vvedite x: "; cin >> x; cout << "Vvedite y: "; cin >> y; f_xy=fabs(x*y); if (f_xy>10) { // 10 xy s=fabs(cos(x))+log(y); cout<<"\nVetv 1\n"; } else if (f_xy>3 && f_xy<=10) // 3 10 xy { s=exp(2*x+y); cout<<"\nVetv 2\n"; } else { // иначе s=sqrt(fabs(x))+2*tan(y); cout<<"\nVetv 3\n"; } cout<<"\nResult="< } Рисунок 3 – Результат выполнения программы 19 2.5. Индивидуальные задания Составить согласно индивидуальному варианту блок-схему алгоритма и программу вычисления выражения. Предусмотреть вывод информации о вы- бранной ветви вычислений. 1. 2 3 2 2 3 , 0 sin( ), 0 , иначе x y x xy s x y x xy x y y 2. 3 3 3 2 ln , / 0 ln / , / 0 , иначе x y x y s x y x y x y x y 3. 2 3 2 2 sin , 0 ln , 0 tg , иначе x y y x y s x y x x y y x y 4. 3 3 2 3 tg , cos , , иначе x y x x y s y x x x y y x x 5. 3 3 3sin( ), , / , иначе y x x x y s x x x y x x y 6. 3 2 , 0,5 10 , 0,1 0,5 2 , иначе x y e xy s x y xy x 7. 3 2 , 1 10 4 , 12 40 , иначе x e xb s x y xb y x 8. 3 2 3 , / 0 ln / / , / 0 sin( ) , иначе x y x y s x y x y x y y 9. 3 2 3 2 3 , , 3 , иначе x y x y s x y x y x y 10. 3 ln , 10 , 10 , иначе x y x y xy s e xy x y 11. 3 2 3 2 tg , 0 ln , 0 sin ( ), иначе x x xy y s x y xy x y 12. 2 3 3 tg( ) , 2 , 2 sin( ), иначе x x y x s x y y x x x 20 13. 3 3 2 ( ln( )) , / 0 2 / 3 ln( sin( ) ), / 0 , иначе x y x y s y x y x y 14. 3 3 3 3 3 2 3 ln , 0 tg( ) , 0 , иначе x x s x y x x y x 15. 2 3 3 2 3 ( ) / , 0 ln cos , 0 sin ( ), иначе x y y x s x y x y 21 ЗАДАНИЕ №3 ПРОГРАММИРОВАНИЕ ЦИКЛИЧЕСКИХ АЛГОРИТМОВ. ФУНКЦИИ ПОЛЬЗОВАТЕЛЯ 3.1. Оператор цикла с параметром for Общий вид оператора: for ( инициализирующее_выражение ; условие ; инкрементирующее_выражение ) { тело цикла; } Инициализирующее_выражение выполняется только один раз в начале выполнения цикла и, как правило, инициализирует счетчик цикла. Условие содержит операцию отношения, которая выполняется в начале каждого цикла. Если условие равно true ( 1 ), то цикл повторяется, иначе вы- полняется следующий за телом цикла оператор. Инкрементирующее_выражение, как правило, предназначено для из- менения значения счетчика цикла. Модификация счетчика происходит после каждого выполнения тела цикла. Например: вычислить значение факториала n = 1∙2∙3∙…∙n = n! (0!=1) f=1; for (i=1;i<=n;i++) f*=i; 3.2. Оператор цикла с предусловием while Общий вид оператора: while ( условие ) { тело цикла ; } Операторы тела цикла повторяются до тех пор, пока условие истинно. Например: найти НОД(a,b) while (a!=b) if (a>b) a-=b; else b-=a; 3.3. Оператор цикла с постусловием do Общий вид оператора: do { тело цикла ; } while ( условие ); Операторы тела цикла повторяются до тех пор, пока условие истинно. 22 Например: ввести такие длины сторон, чтобы из них можно было составить треугольник do { cout<<”\nVvedite dlini storon (a,b,c): ”; cin>>a>>b>>c; } while (a+b>c || c+b>a || a+c>b); 3.4. Операторы перехода Оператор break прекращает выполнение ближайшего к нему цикла или оператора switch while ( условие ) do { { оператор ; оператор ; break; break; оператор ; оператор ; } while ( условие ); } оператор ; оператор ; Оператор continue передает управление на проверку условия циклов while и do while , либо на инкрементирующее_выражение цикла for while ( условие ) do { { оператор ; оператор ; |