Var ar,ar2:array[1..10] of integer; i:integer; begin randomize; writeln('First array:'); for i:=1 to 10 do begin; ar[i]:=random(10)-3; write(ar[i]:4); if ar[i]=0 then ar2[i]:=0; end; writeln; writeln('1-st Final array:'); for i:=1 to 10 do begin; write(ar2[i]:4); if ar[i]<0 then ar2[i]:=ar[i]; end; writeln; writeln('2-st Final array:'); for i:=1 to 10 do begin; write(ar2[i]:4); if ar[i]>0 then ar2[i]:=ar[i]; end; writeln; writeln('3-st Final array:'); for i:=1 to 10 do write(ar2[i]:4); end.
MrLolthe1st
ваша программа не работет по нескольким причинам: 1 функция random(n) возвращает тип word(0..65535), при этом может вернуть 0, а тип результата определяется первым слогаемым, след-но word т.е. если директива {$R+} не включена, то у вас выйдет 65532, что не влезет в inetger(-32768..32768), и результат будет не верен, а пр {$R+} программа просто вылетит, след-но заполнять надо так: a[i]:=-3 + random(10);
Gleb1Kosyrev
Спасибо за совет. Возвращайтесь когда выучите как называется целочислителный тип от -32768 до 32767, а так же узнаете что такое приведение типов. Диспут окончен.
Answers & Comments
Verified answer
Varar,ar2:array[1..10] of integer;
i:integer;
begin
randomize;
writeln('First array:');
for i:=1 to 10 do
begin;
ar[i]:=random(10)-3;
write(ar[i]:4);
if ar[i]=0 then ar2[i]:=0;
end;
writeln;
writeln('1-st Final array:');
for i:=1 to 10 do
begin;
write(ar2[i]:4);
if ar[i]<0 then ar2[i]:=ar[i];
end;
writeln;
writeln('2-st Final array:');
for i:=1 to 10 do
begin;
write(ar2[i]:4);
if ar[i]>0 then ar2[i]:=ar[i];
end;
writeln;
writeln('3-st Final array:');
for i:=1 to 10 do
write(ar2[i]:4);
end.