Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2010, 12:35   #1
Student_1
Новичок
Джуниор
 
Регистрация: 25.12.2010
Сообщений: 2
По умолчанию Сумма положительных эл-тов в матрице

Задана матрица А(10, 9). Вычислить и запомнить сумму и число положительных элементов каждого столбца матрицы. Результаты получить в виде двумерного массива. Диапазон [-20; 20].

У меня возникла сложность в последней части:
"Результаты получить в виде двумерного массива"

Кто подскажет, как это сделать. Вот набросок программы, то что уже написал:
Код:
uses
  CRT;
 
const
  n = 10;
  m = 9;
 
type
  mas = array [1..n, 1..m] of integer;
 
var
  a: mas;
  i, j: byte;
  sum, sum2: integer;
 
procedure summa(var b: mas; l: integer);
begin
  sum := 0;
  sum2 := 0;
  for i := 1 to n do
    for j := 1 to m do
    begin
      if b[i, j] > 0 then
      begin
        inc(sum2);
        sum := sum + b[i, j];
      end;
    end;
end;
 
begin
  ClrScr;
  randomize;
  for i := 1 to n do
  begin
    for j := 1 to m do
    begin
      a[i, j] := random(40)-20;
      write(a[i, j]:5);
    end;
    writeln;
  end;
 
  readkey
end.

Последний раз редактировалось Stilet; 25.12.2010 в 13:07.
Student_1 вне форума Ответить с цитированием
Старый 25.12.2010, 13:43   #2
andrewpalkin
Форумчанин
 
Аватар для andrewpalkin
 
Регистрация: 23.11.2010
Сообщений: 458
По умолчанию

Код:
const
  n = 10;
  m = 9;
 
type
  mas = array [1..n, 1..m] of integer;
  mas1 = array [1..m, 1..2] of integer;
var
  a: mas;
  b: mas1;
  i, j: byte;
 
begin
  randomize;
  
  for i := 1 to m do
  begin
    b[i,1] := 0;
    b[i,2] := 0;
  end;
  
  for i := 1 to n do
  begin
    for j := 1 to m do
    begin
      a[i, j] := random(40)-20;
      write(a[i, j]:5);
      if(a[i, j] >= 0) then
        b[j,2] := b[j,2]+1;
      b[j,1] := b[j,1] + a[i, j];
    end;
    writeln;
  end;
  
  writeln;
  for i := 1 to m do  
  begin
    write('Sum of the ',i,' collumn = ',b[i,1]);
    writeln(' ; Number of positive numbers = ',b[i,2]);
  end;
 
end.
--- Если я вам помог , то помогите и вы мне . Не просто просите решить задачу , а пробуйте ее сами решить ! Я не пишу программы с нуля , я помогаю поправить код ! ---
andrewpalkin вне форума Ответить с цитированием
Старый 25.12.2010, 19:37   #3
Student_1
Новичок
Джуниор
 
Регистрация: 25.12.2010
Сообщений: 2
По умолчанию

andrewpalkin, спасибо за помощь, но забыл написать, что было условие:Обработка массива должна быть реализована в подпрограмме.
Если вам не сложно, не могли бы вы еще раз подредактировать код.
Попробовал переделать сам, пока получилось это:
Код:
uses
  CRT;

const
  n = 10;
  m = 9;

type
  mas = array [1..n, 1..m] of integer;
  mas1 = array [1..m, 1..2] of integer;
var
  a: mas;
  b: mas1;
  i, j: byte;
  
procedure summa(var a: mas; b: mas1);
begin
for i := 1 to n do
  begin
    for j := 1 to m do
    begin
      if(a[i, j] >= 0) then
        b[j,2] := b[j,2]+1;
      b[j,1] := b[j,1] + a[i, j];
   end;
    end;
end;
  
begin
clrscr;
  randomize;
   for i := 1 to n do
  begin
    for j := 1 to m do
    begin
      a[i, j] := random(40)-20;
      write(a[i, j]:5);
    end;
    writeln;
  end;

  writeln;
  for i := 1 to m do
  begin
    write('Sum of the ',i,' collumn = ',b[i,1]);
    writeln(' ; Number of positive numbers = ',b[i,2]);
  end;

end.
Видимо, я уже пишу глупость, а не код, но что то тема массивов для меня оказалась трудно усвояемая.
Student_1 вне форума Ответить с цитированием
Старый 25.12.2010, 20:03   #4
andrewpalkin
Форумчанин
 
Аватар для andrewpalkin
 
Регистрация: 23.11.2010
Сообщений: 458
По умолчанию

Не забываем нажимать на весы

Код:

const
  n = 10;
  m = 9;

type
  mas = array [1..n, 1..m] of integer;
  mas1 = array [1..m, 1..2] of integer;
var
  a: mas;
  b: mas1;
  i, j: integer;
  
function summa(var a: mas):mas1;
var i, j: integer;
  b: mas1;
begin;

for i := 1 to n do
  begin
    for j := 1 to m do
    begin
      if(a[i, j] >= 0) then
        b[j,2] := b[j,2]+1;
      b[j,1] := b[j,1] + a[i, j];
   end;
   end;
   summa:=b;
end;
  
begin
  randomize;
   for i := 1 to n do
  begin
    for j := 1 to m do
    begin
      a[i, j] := random(40)-20;
      write(a[i, j]:5);
    end;
    writeln;
  end;
  b:=summa(a);
  writeln;
  for i := 1 to m do
  begin
    write('Sum of the ',i,' collumn = ',b[i,1]);
    writeln(' ; Number of positive numbers = ',b[i,2]);
  end;
  
end.
--- Если я вам помог , то помогите и вы мне . Не просто просите решить задачу , а пробуйте ее сами решить ! Я не пишу программы с нуля , я помогаю поправить код ! ---
andrewpalkin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сумма столбца и строки в матрице Lordigan Помощь студентам 2 18.03.2010 18:24
умножение эл-тов верхнетреугольной подматрицы на максимальный эл-т нижнетреугольной, Си Kastet14 Помощь студентам 12 20.01.2010 15:25
Turbo C. Сумма квадратов положительных элементов массива ТАМ Помощь студентам 2 09.12.2009 14:53
В прямоугольной матрице переставить столбцы так, чтобы сумма элементов столбца росла от первого столбца Aleo13 Помощь студентам 5 15.10.2008 18:34
HELP!Си - программа для работы со строками + сумма строк в матрице! DUPLET Помощь студентам 1 20.12.2007 21:16