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

Узнай цену своей работы

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

Дана целочисленная матрица 7х4. Вывести номер ее первого столбца содержащего равное количество положительных и отрицательных элементов (0 не учитывается). Если таких столбцов нет то вывести 0. Интервал элементов матрицы от -17 до 54 есть вот такой код (ищет строку а не столбец)
Листинг программы
  1. uses crt;
  2. const
  3. n=6;
  4. m=4;
  5. var
  6. arr:array[1..n,1..m] of integer;
  7. i,j,p,o,str:integer;
  8. begin
  9. str:=0;
  10. writeln('Matrix:');
  11. for i:=1 to n do
  12. begin
  13. p:=0;
  14. o:=0;
  15. for j:=1 to m do
  16. begin
  17. arr[i,j]:=random(20)-8;
  18. write(arr[i,j]:3);
  19. if arr[i,j]>0 then inc(p);
  20. if arr[i,j]<0 then inc(o);
  21. end;
  22. if (p=o) and (str=0) then
  23. str:=i;
  24. writeln;
  25. end;
  26. if str<>0 then
  27. writeln(' = ',str) else
  28. writeln('');
  29. end.
и вот такой он считает то что нужно (но он слишком не красивый и не полный
Листинг программы
  1. uses crt;
  2. const nmax=20;
  3. var a:array[1..nmax,1..nmax] of integer;
  4. m,n,i,j,k,p,q,mn,jmn:integer;
  5. begin
  6. randomize;
  7. repeat
  8. write('Количество строк до ',nmax,' m=');
  9. read(m);
  10. until m in [1..nmax];
  11. repeat
  12. write('Количество столбцов до ',nmax,' n=');
  13. read(n);
  14. until n in [1..nmax];
  15. writeln('Исходная матрица:');
  16. for i:=1 to m do
  17. begin
  18. for j:=1 to n do
  19. begin
  20. a[i,j]:=random(10);
  21. write(a[i,j]:3);
  22. end;
  23. writeln;
  24. end;
  25. mn:=m;
  26. jmn:=1;
  27. for j:=1 to n do
  28. begin
  29. k:=0;
  30. for i:=1 to m do
  31. begin
  32. p:=1;
  33. for q:=1 to m do
  34. if(a[i,j]=a[q,j])and(i<>q) then k:=k+1
  35. end;
  36. if k<mn then
  37. begin
  38. mn:=k;
  39. jmn:=j
  40. end
  41. end;
  42. writeln('Первый столбец где минимальное число повторяющихся элементов=',jmn);
  43. end.
если можно что бы код был похож на первый то будет замечательно. зарание спасибо.
Извиняюсь не тот код (который второй)

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

textual
Листинг программы
  1. uses crt;
  2. const
  3.    n=7;
  4.    m=4;
  5. var
  6.    arr:array[1..n,1..m] of integer;
  7.    i,j,p,o,stb:integer;
  8. begin
  9. randomize;
  10. stb:=0;
  11. writeln('Matrix:');
  12. for j:=1 to m do
  13.  begin
  14.   p:=0;
  15.   o:=0;
  16.   for i:=1 to n do
  17.    begin
  18.     arr[i,j]:=-17+random(35); //54 это много практически всегда будет 0
  19.     if arr[i,j]>0 then inc(p);
  20.     if arr[i,j]<0 then inc(o);
  21.    end;
  22.   if (p=o) and (stb=0) then stb:=j;
  23.  end;
  24. for i:=1 to n do
  25.  begin
  26.   for j:=1 to m do
  27.   write(arr[i,j]:4);
  28.   writeln;
  29.  end;
  30. writeln('stb = ',stb)
  31. end.

Объяснение кода листинга программы

В данном коде используется язык программирования Pascal ABC. Он предназначен для решения задач, связанных с обработкой матриц. В начале кода объявляются необходимые переменные: n, m и arr - массив целых чисел размером n на m. Также объявляются переменные i, j, p и o, которые будут использоваться для подсчета положительных и отрицательных элементов матрицы. Затем происходит инициализация переменной stb, которая будет использоваться для определения номера столбца с равным количеством положительных и отрицательных элементов. Значение stb устанавливается равным 0. Далее происходит вывод матрицы. Для этого используется цикл for, который проходит по каждой строке матрицы. Внутри цикла происходит итерация по каждому элементу строки. Для каждого элемента выполняется следующая последовательность действий:

  • переменной p устанавливается значение 0, а переменной o - значение 0. Эти переменные будут использоваться для подсчета положительных и отрицательных элементов соответственно.
  • внутри цикла выполняется проверка: если значение элемента arr[i,j] больше 0, то значение переменной p увеличивается на 1. Аналогично, если значение элемента arr[i,j] меньше 0, то значение переменной o увеличивается на 1.
  • после завершения внутреннего цикла проверяется условие (p=o) и (stb=0). Если оно выполняется, то значение переменной stb устанавливается равным значению j.
  • после завершения внешнего цикла происходит вывод матрицы. Для этого используется еще один цикл for, который проходит по каждой строке матрицы. Внутри цикла происходит вывод каждого элемента строки с помощью функции write.
  • в конце кода выводится значение переменной stb. Таким образом, данный код решает задачу поиска номера столбца матрицы, содержащего равное количество положительных и отрицательных элементов.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

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

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

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

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы