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




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

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

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

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

 

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

 

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

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

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

 

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

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

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

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

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

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

Решение.

var neg:array [1..100] of integer;

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

c,i,k,n,j:integer;

 

begin

writeln('введите количество чисел, затем введите массив');

readln(n);

i:=1;

k:=1;

while n>0 do

begin

read (c);

if c<0 then

begin neg[k]:= c; k:=k+1;

end

else

if (not(c=0)) then

begin

pos[i]:=c;

i:=i+1;

end;

n:=n-1;

end;

for j:= 1 to k-1 do

write (neg[j],' ');

for j:= 1 to i-1 do

write (pos[j],' ');

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.