Алгоритмы без использования условного оператора

Материалы полезны  для подготовки к экзаменам по информатике. В программе описаны массивы. Значения массивов задаются с помощью фрагментов программы. При решении задач обучающиеся отвечают на такие вопросы как: Как из­ме­ня­ют­ся эле­мен­ты этого мас­си­ва? 1) все эле­мен­ты, кроме по­след­не­го, сдви­га­ют­ся на 1 эле­мент впра­во 2) все эле­мен­ты, кроме пер­во­го, сдви­га­ют­ся на 1 эле­мент влево 3) все эле­мен­ты ока­жут­ся равны 1 4) все эле­мен­ты ока­жут­ся равны своим ин­дек­сам. Сколь­...
Раздел Информатика
Класс -
Тип Конспекты
Автор
Дата
Формат doc
Изображения Нет
For-Teacher.ru - все для учителя
Поделитесь с коллегами:

Алгоритмы без ис­поль­зо­ва­ния условного оператора

1. В про­грам­ме опи­сан од­но­мер­ный це­ло­чис­лен­ный мас­сив A с ин­дек­са­ми от 0 до 10. Ниже пред­став­лен фраг­мент этой про­грам­мы, в ко­то­ром зна­че­ния эле­мен­тов мас­си­ва сна­ча­ла за­да­ют­ся, а затем ме­ня­ют­ся.

A[0] : = 1;

for i : = 1 to 10 do

A[i] : = 2+A[i-1];

for i : = 0 to 5 do

A[10-i] : = A[i]-1;

Чему будут равны эле­мен­ты этого мас­си­ва?

1) 1 3 5 7 9 10 8 6 4 2 0
2) 1 3 5 7 9 11 13 15 17 19 21
3) 1 3 5 7 9 11 9 7 5 3 1
4) 1 3 5 7 9 11 8 6 4 3 0

Решение.

Пер­вый цикл, за­пол­ня­ем мас­сив:

i=0: a[0]=1,

i=1: a[1]=3,

i=2: a[2]=5,

i=3: a[3]=7,

...

i=10: a[10]=21.

Вто­рой цикл, ме­ня­ем зна­че­ния по­след­них шести эле­мен­тов:

i=0: a[10]=a[0]-1 = 0,

i=1: a[9]=a[1]-1 = 2,

...

i=5: a[5]=a[5]-1 = 10,

По­это­му в ре­зуль­та­те вы­пол­не­ния про­грам­мы эле­мен­ты мас­си­ва будут равны: 1, 3, 5, 7, 9, 10, 8, 6, 4, 2, 0.

Пра­виль­ный ответ ука­зан под но­ме­ром 1.

2. Зна­че­ния эле­мен­тов двух мас­си­вов А и В раз­ме­ром 1 х 100 за­да­ют­ся с по­мо­щью сле­ду­ю­ще­го фраг­мен­та про­грам­мы:

for i:=1 tо 100 do

A[i] := 50 - i;

for i:=1 tо 100 do

B[i] := A[i] + 49;

Сколь­ко эле­мен­тов мас­си­ва В будут иметь от­ри­ца­тель­ные зна­че­ния?

1) 1
2) 10
3) 50
4) 100

Решение.

Мас­сив A:

i=1: a[1]=50-1=49,

i=2: a[2]=50-2=48,

i=3: a[3]=47,

...

i=50: a[50]=0

i=51: a[51]=-1

...

i=100: a[100]=-50.

Мас­сив B:

i=1: b[1]=a[1]+49=49+49=98,

i=2: b[2]=a[2]+49=48+49=97,

...

i=99: b[99]=-49+49=0,

i=100: b[100]=-50+49=-1

В мас­си­ве B одно отри­ца­тель­ное зна­че­ние.

Пра­виль­ный ответ ука­зан под но­ме­ром 1.

3. Зна­че­ния двух мас­си­вов A[1..100] и B[1..100] за­да­ют­ся с по­мо­щью сле­ду­ю­ще­го фраг­мен­та про­грам­мы:

for n:=1 to 100 do

A[n] := n - 10;

for n:=1 to 100 do

B[n] := A[n]*n;

Сколь­ко эле­мен­тов мас­си­ва B будут иметь по­ло­жи­тель­ные зна­че­ния?

1) 10
2) 50
3) 90
4) 100

Решение.

Мас­сив A:

n=1: a[1]=1-10=-9,

n=2: a[2]=2-10=-8,

n=3: a[3]=-7,

...

n=9: a[9]=-1,

n=10: a[10]=0,

...

n=100: a[100]=90.

Эле­мен­ты мас­си­ва B имеют такой же знак, как и со­от­вет­ству­ю­щие эле­мен­ты мас­си­ва A, по­сколь­ку n при­ни­ма­ет толь­ко по­ло­жи­тель­ные зна­че­ния и B[n]=A[n]*n. В мас­си­ве A 100-10=90 по­ло­жи­тель­ных зна­че­ний, сле­до­ва­тель­но и в B их тоже 90.

Пра­виль­ный ответ ука­зан под но­ме­ром 3.

4. В про­грам­ме опи­сан од­но­мер­ный це­ло­чис­лен­ный мас­сив с ин­дек­са­ми от 0 до 10. В при­ве­ден­ном ниже фраг­мен­те про­грам­мы мас­сив сна­ча­ла за­пол­ня­ет­ся, а потом из­ме­ня­ет­ся:

for i:=0 to 10 do

A[i]:= i + 1;

for i:=1 to 10 do

A[i]:= A[i-1];

Как из­ме­ня­ют­ся эле­мен­ты этого мас­си­ва?

1) все эле­мен­ты, кроме по­след­не­го, сдви­га­ют­ся на 1 эле­мент впра­во
2) все эле­мен­ты, кроме пер­во­го, сдви­га­ют­ся на 1 эле­мент влево
3) все эле­мен­ты ока­жут­ся равны 1
4) все эле­мен­ты ока­жут­ся равны своим ин­дек­сам

Решение.

Пер­вый цикл, за­пол­ня­ем мас­сив:

i=0: a[0]=1,

i=1: a[1]=2,

i=2: a[2]=3,

i=3: a[3]=4,

...

i=10: a[10]=11.

Вто­рой цикл, из­ме­ня­ем зна­че­ния всех эле­мен­тов, кроме ну­ле­во­го:

i=1: a[1]=a[0]=1,

i=2: a[2]=a[1]=1,

i=3: a[3]=a[2]=1

...

i=10: a[10]=a[9]=1.

Видно, что все эле­мен­ты, стали рав­ны­ми еди­ни­це

Пра­виль­ный ответ ука­зан под но­ме­ром 3.

5. В про­грам­ме опи­сан од­но­мер­ный це­ло­чис­лен­ный мас­сив A с ин­дек­са­ми от 0 до 10. Ниже пред­став­лен фраг­мент этой про­грам­мы, в ко­то­ром зна­че­ния эле­мен­тов мас­си­ва сна­ча­ла за­да­ют­ся, а затем ме­ня­ют­ся.

for i:=0 to 10 do

A[i]:=2+i;

for i:=0 to 4 do begin

A[i]:=A[10-i]-1;

A[10-i]:=A[i]+3;

end;

Чему будут равны эле­мен­ты этого мас­си­ва?

1) 11 10 9 8 7 5 6 7 8 9
2) 11 10 9 8 7 7 5 6 7 8 9
3) 11 10 9 8 7 7 10 11 12 13 14
4) 11 10 9 8 7 10 11 12 13 14

Решение.

За­да­ем мас­сив A[i]:=2 + i: 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12.

Ме­ня­ем мас­сив, идя от краев в центр, левый ме­ня­ем на пра­вый с вы­че­том 1, а потом пра­вый на из­ме­нен­ный левый плюс 3:

A[i]:= A[10-i] - 1: 12 - 1, 11 - 1, 10 - 1, 9 - 1, 8 - 1 = 11, 10, 9, 8, 7 - пер­вые пять ячеек.

A[10 - i]:= A[i] + 3 = A[10-i] - 1 + 3 = A[10-i] + 2: 12 + 2, 11 + 2, 10 + 2, 9 + 2, 8 + 2 = 14, 13, 12, 11, 10 - вто­рые пять ячеек в об­рат­ном по­ряд­ке (с но­ме­ра 10 до но­ме­ра 6).

Эле­мент A[5] остал­ся не­из­мен­ным: A[5] = 7.

В итоге: 11 10 9 8 7 7 10 11 12 13 14.

Пра­виль­ный ответ ука­зан под но­ме­ром 3.

6. Дан фраг­мент про­грам­мы, об­ра­ба­ты­ва­ю­щей двух­мер­ный мас­сив A[1..5,1..4]:

k:=4;

for m:=1 to 4 do begin

k:=k+1;

for n:=1 to 5 do begin

k:=m-k;

A[n,m]:=n*n+m*m-2*k;

end;

end;

Чему будет равно зна­че­ние A[3,1]?

1) 18
2) 19
3) 20
4) 21

Решение.

Най­дем A[3,1]:

m=1, зна­чит пер­вый цикл прой­дет толь­ко один раз и из него вый­дет k:= k + 1 = 4 + 1 = 5.

Вто­рой цикл прой­дет 3 раза:

1. k:=m - k = 1 - 5 = -4;

2. k:=m - k = 1 - (-4) = 5;

3. k:=m - k = 1 - 5 = -4.

Те­перь уже вы­чис­лим A[3,1]:=3*3 + 1*1 - 2*(-4)=9 + 1 + 8 = 18.

Пра­виль­ный ответ ука­зан под но­ме­ром 1.

7. Зна­че­ния двух мас­си­вов A и B с ин­дек­са­ми от 1 до 100 за­да­ют­ся при по­мо­щи сле­ду­ю­ще­го фраг­мен­та про­грам­мы:

for i:=1 to n do

A[i]:=(i-75)*(i-75);

for i:=1 to n do

B[101-i]:=A[i];

Какой эле­мент мас­си­ва B будет наи­боль­шим?

1) B[1]
2) B[26]
3) B[75]
4) B[100]

Решение.

Итак, если рас­смот­реть мас­сив A[i]:= (i - 75)2 как функ­цию у = (x - 75)2, то най­дем мак­си­маль­ное зна­че­ние на ин­тер­ва­ле [1, 100]: при i=1 A[1]:=(1 - 75)2=(-74)2;

По усло­вию B[101 - 1]:=A[1] наи­боль­шее, т. е. B[100] - наи­боль­шее.

Пра­виль­ный ответ ука­зан под но­ме­ром 4.

8. Зна­че­ния дву­мер­но­го мас­си­ва за­да­ют­ся с по­мо­щью вло­жен­но­го опе­ра­то­ра цикла в пред­став­лен­ном фраг­мен­те про­грам­мы:

for n:=1 to 5 do

for k:=1 to 5 do

B[n,k] := n + k;

Чему будет равно зна­че­ние B[2,4]?

1) 9
2) 8
3) 7
4) 6

Решение.

Оче­вид­но, что зна­че­ние эле­мен­та B[2,4] = 2 + 4 = 6.

Пра­виль­ный ответ ука­зан под но­ме­ром 4.

9. В про­грам­ме опи­сан од­но­мер­ный це­ло­чис­лен­ный мас­сив с ин­дек­са­ми от 0 до 10. В при­ве­ден­ном ниже фраг­мен­те про­грам­мы мас­сив сна­ча­ла за­пол­ня­ет­ся, а потом из­ме­ня­ет­ся:

for i:=0 to 10 do

A[i]:= i - 1;

for i:=1 to 10 do

A[i-1]:= A[i];

A[10] := 10;

Как из­ме­ня­ют­ся эле­мен­ты этого мас­си­ва?

1) все эле­мен­ты, кроме по­след­не­го, ока­жут­ся равны между собой
2) все эле­мен­ты ока­жут­ся равны своим ин­дек­сам
3) все эле­мен­ты, кроме по­след­не­го, сдви­га­ют­ся на один эле­мент впра­во
4) все эле­мен­ты, кроме по­след­не­го, умень­ша­ют­ся на еди­ни­цу

Решение.

Пер­вый цикл, за­пол­ня­ем мас­сив:

i=0: a[0] = -1,

i=1: a[1] = 0,

i=2: a[2] = 1,

...

i=10: a[10] = 9.

Вто­рой цикл, из­ме­ня­ем зна­че­ния мас­си­ва:

i=1: a[0]=a[1] = 0,

i=2: a[1]=a[2] = 1,

i=3: a[2]=a[3] = 2,

...

i=10: a[9]=a[10] = 9.

a[10] = 10.

По­это­му в ре­зуль­та­те вы­пол­не­ни про­грам­мы эле­мен­ты мас­си­ва будут равны: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, т. е. равны своим ин­дек­сам.

Пра­виль­ный ответ ука­зан под но­ме­ром 2.

10. Все эле­мен­ты дву­мер­но­го мас­си­ва A раз­ме­ром 10х10 эле­мен­тов пер­во­на­чаль­но были равны 0. Затем зна­че­ния эле­мен­тов ме­ня­ют­ся с по­мо­щью вло­жен­но­го опе­ра­то­ра цикла в пред­став­лен­ном фраг­мен­те про­грам­мы:

for n : = 1 to 4 do

for k : = n to 4 do begin

A[n,k] : = A[n,k] + 1;

A[k,n] : = A[k,n] + 1;

end;

Сколь­ко эле­мен­тов мас­си­ва в ре­зуль­та­те будут равны 1?

1) 0
2) 16
3) 12
4) 4

Решение.

Опе­ра­ция A[n,k] : = A[n,k] + 1 при за­дан­ных n и k уве­ли­чи­ва­ет на 1 эле­мен­ты пер­вых четырёх строк и столб­цов, име­ю­щих но­ме­ра на­чи­ная с но­ме­ра стро­ки до 4.

Опе­ра­ция A[k,n] : = A[k,n] + 1 при за­дан­ных n и k уве­ли­чи­ва­ет на 1 эле­мен­ты строк, име­ю­щих но­ме­ра на­чи­ная с но­ме­ра столб­ца до 4.

На­ри­су­ем из­ме­ня­ю­щий­ся фраг­мент чис­ло­вой таб­ли­цы:

1 + 1

1

1

1

1

1 + 1

1

1

1

1

1 + 1

1

1

1

1

1 + 1

Видим, что опе­ра­ции пе­ре­сек­лись на 4-х эле­мен­тах, т. е. 12 эле­мен­тов будут равны 1.

Пра­виль­ный ответ ука­зан под но­ме­ром 3.



© 2010-2022