Ввести массив a(n). Если массив содержит не больше двух нулевых элементов, то уменьшить...

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

Ввести массив a(n). Если массив содержит не больше двух нулевых элементов, то уменьшить положительные элементы массива в 2 раза, иначе - найти минимальный
по модулю элемент массива. Pascal


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

Var a:array of real;
k,i,n:integer;
min,minr:real;
begin;
min:=2147483647;
write('Введите размерность массива:');
readln(n);
setlength(a,n+1);
for i:=1 to n do
begin;
readln(a[i]);
if a[i]=0 then inc(k);
end;
if k<2 then<br>begin;
writeln('Final array:');
for i:=1 to n do
  begin;
   a[i]:=a[i]/2;
   write(a[i]:4);
  end;
end
else
begin;
  for i:=1 to n do
    if abs(a[i])     begin;
      min:=abs(a[i]);
      minr:=a[i];
     end;
write('Result:',minr);
end;
end.

(38.6k баллов)
0

что значит эта строчка: min:=2147483647;?

0

Это максимум типа integer. Чтобы не было исключений.

0

Программа уменьшает все элементы массива на 2, а нужно только положительные(

0

И в случае нахождения минимального элемента массива, 0, как я понимаю, не должен учитываться

0

var a:array of real;
k,i,n:integer;
min,minr:real;
begin;
min:=2147483647;
write('Введите размерность массива:');
readln(n);
setlength(a,n+1);
for i:=1 to n do
begin;
readln(a[i]);
if a[i]=0 then inc(k);
end;
if k<2 then<br>begin;
writeln('Final array:');
for i:=1 to n do
begin;
if a[i]>0 then a[i]:=a[i]/2;
write(a[i]:4);
end;
end
else
begin;
for i:=1 to n do
if abs(a[i]) begin;
min:=abs(a[i]);
minr:=a[i];
end;
write('Result:',minr);
end;
end.