Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Данная структура используется также в неполной форме. В этом случае она реализуется так.





Алгоритмический язык выбор при <условии1>: <серия1> при <условии2>:<серия2> … при <условииN>:<серияN> все
  Бейсик SELECT CASE <выражение> CASE < список выражений1> <оператор1> … CASE < список выраженийN> <операторN> END SELECT
Паскаль сase <выражение> of <список констант1>: <оператор1>; ... <список константN>: <операторN>; end;
Си switch (<выражение>) case <константа1>: <оператор1>; break; ... case <константаN>: <операторN>; break;

Задача.

Ввести число. Вывести «неудовлетворительно», если введено 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);

}







Конфликты в семейной жизни. Как это изменить? Редкий брак и взаимоотношения существуют без конфликтов и напряженности. Через это проходят все...

ЧТО ПРОИСХОДИТ ВО ВЗРОСЛОЙ ЖИЗНИ? Если вы все еще «неправильно» связаны с матерью, вы избегаете отделения и независимого взрослого существования...

Что вызывает тренды на фондовых и товарных рынках Объяснение теории грузового поезда Первые 17 лет моих рыночных исследований сводились к попыткам вычис­лить, когда этот...

ЧТО И КАК ПИСАЛИ О МОДЕ В ЖУРНАЛАХ НАЧАЛА XX ВЕКА Первый номер журнала «Аполлон» за 1909 г. начинался, по сути, с программного заявления редакции журнала...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.