Free Pascal. Задать массив, и из массива А в Б переписать сначала все нули, потом...

0 голосов
32 просмотров

Free Pascal. Задать массив, и из массива А в Б переписать сначала все нули, потом отрицательные числа и потом все положительные. Числа рандомные.


Информатика (31.7k баллов) | 32 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

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];<br>   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.    

(38.6k баллов)
0

Большое спасибо!

0

ваша программа не работет по нескольким причинам: 1 функция random(n) возвращает тип word(0..65535), при этом может вернуть 0, а тип результата определяется первым слогаемым, след-но word т.е. если директива {$R+} не включена, то у вас выйдет 65532, что не влезет в inetger(-32768..32768), и результат будет не верен, а пр {$R+} программа просто вылетит, след-но заполнять надо так: a[i]:=-3 + random(10);

0

Спасибо за совет. Возвращайтесь когда выучите как называется целочислителный тип от -32768 до 32767, а так же узнаете что такое приведение типов. Диспут окончен.

0

Integer