|
Данная структура используется также в неполной форме. В этом случае она реализуется так. ⇐ ПредыдущаяСтр 3 из 3
Задача. Ввести число. Вывести «неудовлетворительно», если введено 2, «удовлетворительно», если введено число 3, «хорошо», если 4, «отлично», если 5, и вывести «это не оценка» в противном случае. Блок-схема
Алгоритмический язык алг оценка начцел n ¦ вывод "введите n" ¦ ввод n ¦ выбор ¦ ¦ при n=2: вывод "Неудовлетворительно" ¦ ¦ при n=3: вывод "Удовлетворительно" ¦ ¦ при n=4: вывод "Хорошо" ¦ ¦ при n=5: вывод "Отлично" ¦ ¦ иначевывод "Это не оценка" ¦ все кон Блок-схема
Бейсик 'Оценка INPUT "Введите n:"; n SELECT CASE n CASE 2 PRINT"Неудовлетворительно" CASE 3 PRINT "Удовлетворительно" CASE 4 PRINT "Хорошо" CASE 5 PRINT "Отлично" CASE ELSE PRINT "Это не оценка" END SELECT END Паскаль
program ocenka; var n:integer; begin write('Введите n: ');readln(n); case n of 2:writeln('Неудовлетворительно'); 3:writeln('Удовлетворительно'); 4:writeln('Хорошо'); 5:writeln('Отлично'); else writeln('Это не оценка') end; end. Си #include<stdio.h> void main() { int n; printf("\nВведите n: "); scanf("%d",&n); switch (n) { case 2: printf("Неудовлетворительно");break; case 3: printf("Удовлетворительно");break; case 4: printf("Хорошо");break; case 5: printf("Отлично");break; default: printf("Это не оценка");break; } } Примеры задач, в которых используются вложенные структуры Следующая задача решается с помощью вложенной структуры «развилка в развилке». Задача. Решить квадратное уравнение ax2+bx+c=0 (a ¹ 0). Решение Блок-схема
Алгоритмический язык алг квадратное уравнение начвещ a,b,c,d,x,x1,x2 ¦ вывод "Введите a,b,c" ¦ ввод a,b,c ¦ d:=b**2-4*a*c ¦ если d<0 ¦ ¦ товывод "Вещественных корней нет" ¦ ¦ иначе ¦ ¦ если d=0 ¦ ¦ ¦ то x:=-b/(2*a); ¦ ¦ ¦ вывод "х=",x ¦ ¦ ¦ иначе x1:=(-b+sqrt(d))/2/a; ¦ ¦ ¦ x2:=(-b-sqrt(d))/2/a; ¦ ¦ ¦ вывод "x1=",x1; ¦ ¦ ¦ вывод "x2=",x2 ¦ ¦ все ¦ все кон Бейсик 'Квадратное уравнение INPUT "Введите коэффциенты a, b, c"; a, b, c d = b ^ 2 - 4 * a * c IF d < 0 THEN PRINT "Вещественных корней нет" ELSEIF d = 0 THEN x = -b / (2 * a) PRINT "х= "; x ELSE x1 = (-b + SQR(d)) / 2 / a x2 = (-b - SQR(d)) / 2 / a PRINT "x1="; x1 PRINT "x2="; x2 END IF END Паскаль program kv_uravn; var x,x1,x2,a,b,c,d:real; begin write('Введите коэффициенты a,b,c:'); readln(a,b,c); d:=b*b-4*a*c; if d<0 then writeln('Вещественных корней нет') else if d=0 then begin x:=-b/2/a; writeln('x=',x:6:2) end else begin x1:=(-b+sqrt(d))/2/a; x2:=(-b-sqrt(d))/2/a; writeln('x1=',x1:6:2); writeln('x2=',x2:6:2) end; end. Си #include<stdio.h> void main() { float x,x1,x2,a,b,c,d; printf("\nВведите коэффициенты a,b,c: "); scanf("%e", & a); scanf("%e", & b); scanf("%e", & c); d=b*b-4*a*c; if (d<0) printf("Вещественных корней нет "); else if (d==0) { x=-b/2/a; printf("x= %e", x); } else { x1=(-b+sqrt(d))/2/a; x2=(-b-sqrt(d))/2/a; printf("x1= %e", x1); printf("x2= %e", x2); } } Следующая задача решается с помощью вложенной структуры «развилка в цикле». Задача (алгоритм Евклида). Вычислить наибольший общий делитель двух чисел Решение. Блок-схема
Алгоритмический язык алг нод начцел m, k, nod ¦ вывод "Введите m, k" ¦ ввод m, k ¦ нцпока m <> k ¦ ¦ если m > k ¦ ¦ ¦ то m:= m - k ¦ ¦ ¦ иначе k:= k - m ¦ ¦ все ¦ кц ¦ nod:= m ¦ вывод нс, "НОД=", nod кон Бейсик 'Определение НОД DEFINT m,k,nod INPUT " Введите m и k"; m, k DO WHILE m <> k IF m > k THEN m = m – k ELSE k = k – m LOOP nod = m PRINT " НОД ="; nod END Паскаль { Определение НОД} program pr_nod; var m, k, nod: integer; begin write(‘ Введите m и k’); readln(m,k); while m <> k do if m > k then m:= m - k else k:= k - m; nod:= m; writeln (‘НОД = ‘, nod); end. Си #include<stdio.h> void main() { int m,k,nod; printf("\nВведите m и k: "); scanf("%d",&m); scanf("%d",&k); while(m!=k) if(m>k) m=m-k; else k=k-m; nod=m; printf("НОД = %d",nod); } При решении следующей задачи используются последовательно друг за другом структуры цикла с постусловием и развилки, причем, в цикле с постусловием содержится вложенная структура развилки в неполной форме. Задача. Вводится последовательность ненулевых чисел (не менее 2), 0 – конец последовательности. Определить, сколько раз последовательность меняет знак. Решение. Блок-схема Бейсик 'Последовательность INPUT "Введите число:"; xst INPUT "Введите число:"; xn k = 0 DO IF xst * xn < 0 THEN k = k + 1 xst = xn INPUT "Введите число:"; xn LOOP UNTIL xn = 0 IF k > 0 THEN PRINT "Последовательность меняет знак "; k; " раз" ELSE PRINT "Последовательность не меняет знака" END IF END Паскаль program znak; var xst,xn:real; k:integer; begin write('Введите число:'); readln(xst); write('Введите число:'); readln(xn); k:=0; repeat if xst*xn<0 then k:=k+1; xst:=xn; write('Введите число:'); readln(xn) until xn=0; if k>0 then writeln('Последовательность меняет знак ',k,' раз') else writeln('Последовательность не меняет знака') end.
В следующей задаче используется вложенная структура цикл с параметром в развилке. Задача. Найти n-й член ряда Фибоначчи. (Ряд Фибоначчи задается начальными значениями f1=1, f2=1 и рекуррентным соотношением fn=fn-1+fn-2: 1, 1, 2, 3, 5, 8…). Решение. Блок-схема Алгоритмический язык алг фибоначчи нач цел n,f1,f2,f,i ¦ вывод "Введите n:" ¦ ввод n ¦ если n<=2 ¦ ¦ то f:=1 ¦ ¦ иначе f1:=1;f2:=1 ¦ ¦ нц для i от 3 до n ¦ ¦ ¦ f:=f1+f2; ¦ ¦ ¦ f1:=f2; ¦ ¦ ¦ f2:=f; ¦ ¦ кц ¦ все ¦ вывод нс, n,"-е число Фибоначчи=",f кон Бейсик 'Числа Фибоначчи INPUT " Введите n:"; n IF n <= 2 THEN f = 1 ELSE f1 = 1 f2 = 1 FOR i = 3 TO n f = f1 + f2 f1 = f2 f2 = f NEXT END IF PRINT n; "-е число Фибоначчи="; f END Паскаль {Числа Фибоначчи} program fib; var i,n,f,f1,f2:integer; begin write('Введите n:');readln(n); if n<=2 then f:=1 else begin f1:=1; f2:=1; for i:=3 to n do begin f:=f1+f2; f1:=f2; f2:=f; end; end; writeln(n,'-е число Фибоначчи=',f) end. Си /* Числа Фибоначчи*/ #include<stdio.h> void main() { int f1,f2,n,f,i; printf("\nВведите n: "); scanf("%d",&n); if(n<=2) f=1;else {f1=1; f2=1; for(i=3;i<=n;i=i+1) {f=f1+f2; f1=f2; f2=f; } } printf("%d–е число Фибоначчи=%d",n,f); } ЧТО ТАКОЕ УВЕРЕННОЕ ПОВЕДЕНИЕ В МЕЖЛИЧНОСТНЫХ ОТНОШЕНИЯХ? Исторически существует три основных модели различий, существующих между... Что способствует осуществлению желаний? Стопроцентная, непоколебимая уверенность в своем... Что делает отдел по эксплуатации и сопровождению ИС? Отвечает за сохранность данных (расписания копирования, копирование и пр.)... Что будет с Землей, если ось ее сместится на 6666 км? Что будет с Землей? - задался я вопросом... Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:
|