Цитата:
Сообщение от poiu
var
s:= string;
.....
if (i mod 2 = 0) and (a[i] <> 0) then
begin
inc(k);
s:= s + ' ' + str(a[i]);
end;
writeln('kol-vo elementov =', k);
writeln('elementi - ', s);
|
Не, ну можно, конечно, и так - через строковую переменную, вот только стОит ли? Не слишком ли витиевато? И потом - не знаю, как в этом кретинском АВС, но в нормальном Паскале (Turbo, Free) Str - это вовсе не функция, а процедура. И потому Ваша конструкция не пройдёт.
Я бы предложил так:
Код:
const
n=15;
var
a,b: array[1..n] of integer;
i, k: integer;
begin
k:=0;
for i := 1 to n do
begin
write('a[', i:2, ']= ');
readln(a[i]);
if (i mod 2 = 0) and (a[i] <> 0) then
begin
inc(k);
b[k]:=a[i];
end;
end;
writeln('kol-vo elementov = ', k);
writeln('elementi:');
for i:=1 to k do write(b[i],' ');
Readln
end.
И еще совет
Onotole: не надо пихать это "uses CRT;" абы для просто так. Если команды этого модуля не используются (а в данном случае это так), то и незачем его подключать.
Впрочем, знаю, что некоторые препы требуют, чтобы студенты ВСЕГДА ставили "uses CRT;". По мне - таких гнать в три шеи.