3. Берілген блок-сызбадағы алгоритмнің псевдокоды мен программасын жазыңыз. Блок-сызба Псевдокод Python программалау тілінде Басы S = 0 Иа. Жоқ 1<s 10 Сода 3.1 Программаның орындалу нәтижесінде шыккан S-тің мәнін жазыңыз 8 сынып ивт көмектесіңіздершы
За у пользователя количество шагов сдвига и направление. Условиться, что если вводится отрицательное целое, то сдвиг выполняется влево на указанное абсолютное значение, если вводится положительное число, то сдвиг вправо.
Заполнить исходный массив и вывести его на экран.
Выполнять внешний цикл столько раз, сколько шагов было указано.
Если было введено отрицательное число, то выполнить цикл от первого элемента до предпоследнего, перезаписав в нем значение каждой очередной ячейки на значение последующей. Записать в последнюю ячейку 0.
Иначе, выполнить цикл от последнего элемента до второго, записывая в каждую текущую ячейку значение предыдущей. В первую ячейку записать 0.
Замечание. Так как количество вводимых чисел заранее не известно, то откроем бесконечный цикл со всегда верным условием True, но как только будет введено число 0, остановим цикл командой break.
Программа:
program z; var k,s,x:integer; begin k:=0; {начальное значение количества двузначных чисел} s:=0; {начальное значение суммы двузначных чисел} while True do {открываем бесконечный цикл} begin readln(x); {вводим число х} if x=0 then break; {если введенное число равно 0, то остановить цикл} if (x>9)and(x<100) then {если число двузначное, т.е. от 10 до 99} begin k:=k+1; {количество увеличиваем на 1} s:=s+x; {увеличиваем предыдущее значение суммы на число х} end; end; if k=0 then writeln('NO') {если двузначных чисел не было, то вывод NO} else writeln(s/k); {иначе вывод ср.арифметического} end.
Объяснение:
Алгоритм решения данной задачи можно описать так:
За у пользователя количество шагов сдвига и направление. Условиться, что если вводится отрицательное целое, то сдвиг выполняется влево на указанное абсолютное значение, если вводится положительное число, то сдвиг вправо.
Заполнить исходный массив и вывести его на экран.
Выполнять внешний цикл столько раз, сколько шагов было указано.
Если было введено отрицательное число, то выполнить цикл от первого элемента до предпоследнего, перезаписав в нем значение каждой очередной ячейки на значение последующей. Записать в последнюю ячейку 0.
Иначе, выполнить цикл от последнего элемента до второго, записывая в каждую текущую ячейку значение предыдущей. В первую ячейку записать 0.
Вывести на экран текущий массив.
Сдвиг Влево
-4
111 222 333 444 555 666 777 888 999
222 333 444 555 666 777 888 999 0
333 444 555 666 777 888 999 0 0
444 555 666 777 888 999 0 0 0
555 666 777 888 999 0 0 0 0
Сдвиг в Право
5
111 222 333 444 555 666 777 888 999
0 111 222 333 444 555 666 777 888
0 0 111 222 333 444 555 666 777
0 0 0 111 222 333 444 555 666
0 0 0 0 111 222 333 444 555
0 0 0 0 0 111 222 333 444
Программа:
program z;
var k,s,x:integer;
begin
k:=0; {начальное значение количества двузначных чисел}
s:=0; {начальное значение суммы двузначных чисел}
while True do {открываем бесконечный цикл}
begin
readln(x); {вводим число х}
if x=0 then break; {если введенное число равно 0, то остановить цикл}
if (x>9)and(x<100) then {если число двузначное, т.е. от 10 до 99}
begin
k:=k+1; {количество увеличиваем на 1}
s:=s+x; {увеличиваем предыдущее значение суммы на число х}
end;
end;
if k=0 then writeln('NO') {если двузначных чисел не было, то вывод NO}
else writeln(s/k); {иначе вывод ср.арифметического}
end.