Вывести номер первого столбца матрицы, содержащего равное количество положительных и отрицательных элементов - Pascal ABC

Формулировка задачи:

Дана целочисленная матрица 7х4. Вывести номер ее первого столбца содержащего равное количество положительных и отрицательных элементов (0 не учитывается). Если таких столбцов нет то вывести 0. Интервал элементов матрицы от -17 до 54 есть вот такой код (ищет строку а не столбец)
uses crt;
const
   n=6;
   m=4;
var
   arr:array[1..n,1..m] of integer;
   i,j,p,o,str:integer;
begin
str:=0;
writeln('Matrix:');
for i:=1 to n do
    begin
    p:=0;
    o:=0;
    for j:=1 to m do
        begin
        arr[i,j]:=random(20)-8;
        write(arr[i,j]:3);
        if arr[i,j]>0 then inc(p);
        if arr[i,j]<0 then inc(o);
        end;
    if (p=o) and (str=0) then
    str:=i;
    writeln;
    end;
if str<>0 then
writeln(' = ',str) else
writeln('');
end.
и вот такой он считает то что нужно (но он слишком не красивый и не полный
uses crt;
const nmax=20;
var a:array[1..nmax,1..nmax] of integer;
    m,n,i,j,k,p,q,mn,jmn:integer;
begin
randomize;
repeat
write('Количество строк до ',nmax,' m=');
read(m);
until m in [1..nmax];
repeat
write('Количество столбцов до ',nmax,' n=');
read(n);
until n in [1..nmax];
writeln('Исходная матрица:');
for i:=1 to m do
 begin
  for j:=1 to n do
   begin
    a[i,j]:=random(10);
    write(a[i,j]:3);
   end;
  writeln;
 end;
mn:=m;
jmn:=1;
for j:=1 to n do
 begin
  k:=0;
  for i:=1 to m do
   begin
    p:=1;
    for q:=1 to m do
    if(a[i,j]=a[q,j])and(i<>q) then k:=k+1
   end;
  if k<mn then
   begin
    mn:=k;
    jmn:=j
   end
 end;
writeln('Первый столбец где минимальное число повторяющихся элементов=',jmn);
end.
если можно что бы код был похож на первый то будет замечательно. зарание спасибо. Добавлено через 10 минут Извиняюсь не тот код (который второй)

Код к задаче: «Вывести номер первого столбца матрицы, содержащего равное количество положительных и отрицательных элементов - Pascal ABC»

textual
uses crt;
const
   n=7;
   m=4;
var
   arr:array[1..n,1..m] of integer;
   i,j,p,o,stb:integer;
begin
randomize;
stb:=0;
writeln('Matrix:');
for j:=1 to m do
 begin
  p:=0;
  o:=0;
  for i:=1 to n do
   begin
    arr[i,j]:=-17+random(35); //54 это много практически всегда будет 0
    if arr[i,j]>0 then inc(p);
    if arr[i,j]<0 then inc(o);
   end;
  if (p=o) and (stb=0) then stb:=j;
 end;
for i:=1 to n do
 begin
  for j:=1 to m do
  write(arr[i,j]:4);
  writeln;
 end;
writeln('stb = ',stb)
end.

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

9   голосов, оценка 3.889 из 5


СОХРАНИТЬ ССЫЛКУ