СДАМ ГИА: РЕШУ ЕГЭ
Образовательный портал для подготовки к экзаменам
Информатика
≡ информатика
сайты - меню - вход - новости


Задания
Версия для печати и копирования в MS Word
Задание 27 № 3130

На вход программе подается последовательность целых чисел. В первой строке сообщается количество чисел N, во второй строке идут сами числа.

Требуется написать программу, которая будет выводить на экран числа в следующем порядке:

сначала отрицательные числа, потом положительные. При этом должно сохраняться исходное взаимное положение, как среди отрицательных, так и среди положительных чисел

 

Вам предлагается два задания с похожими условиями: задание А и задание Б. Вы можете решать оба задания или одно из них по своему выбору. Задание Б более сложное, его решение оценивается выше. Итоговая оценка выставляется как максимальная из оценок за задания А и Б.

 

Задание А. Имеется набор данных, состоящий из N = 20 пар целых чисел.

Напишите программу для решения такой задачи. В этом варианте задания оценивается только правильность программы, время работы и размер использованной памяти не имеют значения.

Максимальная оценка за правильную программу – 2 балла.

 

Задание Б. Имеется набор данных, состоящий из почти произвольного количества N целых чисел, чисел не может быть больше ста, N < 100. Напишите программу для решения такой задачи.

Постарайтесь сделать программу эффективной по времени и используемой памяти (или хотя бы по одной из этих характеристик).

Программа считается эффективной по времени, если время работы программы пропорционально количеству пар чисел N, т. е. при увеличении N в k раз время работы программы должно увеличиваться не более чем в k раз.

Программа считается эффективной по памяти, если размер памяти, использованной в программе для хранения данных, не зависит от числа N и не превышает 1 килобайта.

Максимальная оценка за правильную программу, эффективную по времени и памяти, — 4 балла.

Максимальная оценка за правильную программу, эффективную по времени, но неэффективную по памяти, — 3 балла.

Решение.

var

a:array[1..100] of integer;

N,i,k,j,x: integer;

begin

readln(N);

j:=0;

k:=1;

for i:=1 to N do

begin

readln(x);

if x<0 then

begin

a[k]:=x;

k:=k+1;

end;

if x>0 then

begin

a[N-j]:=x;

j:=j+1;

end;

end;

for i:=1 to N-j do

if a[i]<>0 then

writeln(a[i]);

for i:=N downto N-j+1 do

if a[i]<>0 then

writeln(a[i]);

end.

 

Пример 2. Решение задачи А на языке Паскаль.

var

a: array[1..20] of integer; {исходные данные}

i: integer;

begin

for i := 1 to 20 do read(a[i]);

for i := 1 to 20 do

if a[i]<0 then writeln(a[i]);

for i := 1 to 20 do

if a[i]>0 then writeln(a[i]);

end.