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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.01.2010, 20:24   #1
Superlotles
Пользователь
 
Аватар для Superlotles
 
Регистрация: 18.08.2009
Сообщений: 86
По умолчанию сумму положительных и отрицательных чисел матрицы

Здравствуйте !!!
Этот код считает сумму положительных и отрицательных чисел матрицы. Подскажите, почему у меня в сообщении ShowMessage сумма положительных и отрицательных чисел имеют огромные значения ?

Код:

Код:
type
  TIntMatrix = array of array of Integer;
 
function ReadMatrix(Grid: TStringGrid): TIntMatrix;
var
  r, c: Integer;
  Matrix: TIntMatrix;
begin
  SetLength(Matrix, StringGrid1.RowCount, Grid.ColCount);
  for r := 0 to StringGrid1.RowCount - 1 do
    for c := 0 to Grid.ColCount - 1 do
      Matrix[r,c] := StrToInt(StringGrid1.Cells[c,r]);
  Result := Matrix;
end;
 
procedure GetSum(Matrix: TIntMatrix; SumOtr, SumPol: Integer); 
var
  I, J: Integer;
begin
  SumOtr := 0;
  SumPol := 0;
  for I := 0 to High(Matrix) do
    for J := 0 to High(Matrix) do
      if Matrix[I,J] > 0 then
        SumPol := SumPol + Matrix[I,J]
      else
        if Matrix[I,J] < 0 then SumOtr := SumOtr + Matrix[I,J];
end;
Skype: Lotles-XXXX
Superlotles вне форума Ответить с цитированием
Старый 07.01.2010, 11:11   #2
Serebro
FORTRAN programmer
Форумчанин
 
Регистрация: 08.12.2009
Сообщений: 153
По умолчанию

Цитата:
Сообщение от Superlotles Посмотреть сообщение
Здравствуйте !!!
Этот код считает сумму положительных и отрицательных чисел матрицы. Подскажите, почему у меня в сообщении ShowMessage сумма положительных и отрицательных чисел имеют огромные значения ?

Код:

Код:
type
  TIntMatrix = array of array of Integer;
 
function ReadMatrix(Grid: TStringGrid): TIntMatrix;
var
  r, c: Integer;
  Matrix: TIntMatrix;
begin
  SetLength(Matrix, StringGrid1.RowCount, Grid.ColCount);
  for r := 0 to StringGrid1.RowCount - 1 do
    for c := 0 to Grid.ColCount - 1 do
      Matrix[r,c] := StrToInt(StringGrid1.Cells[c,r]);
  Result := Matrix;
end;
 
procedure GetSum(Matrix: TIntMatrix; SumOtr, SumPol: Integer); 
var
  I, J: Integer;
begin
  SumOtr := 0;
  SumPol := 0;
  for I := 0 to High(Matrix) do
    for J := 0 to High(Matrix) do
      if Matrix[I,J] > 0 then
        SumPol := SumPol + Matrix[I,J]
      else
        if Matrix[I,J] < 0 then SumOtr := SumOtr + Matrix[I,J];
end;


Это происходит из-за того, что многие элементы массива просто не определены: что такое High(Matrix)?

Матрица заполнялась так:
Код:
  for r := 0 to StringGrid1.RowCount - 1 do
    for c := 0 to Grid.ColCount - 1 do
       ........
Также и нужно считать требуемые суммы:
Код:
  for r := 0 to StringGrid1.RowCount - 1 do
    for c := 0 to Grid.ColCount - 1 do
       ........
И один вопрос:
Нет ли здесь ошибки? Индексы здесь правильные?
Код:
      Matrix[r,c] := StrToInt(StringGrid1.Cells[c,r]);

За помощь кликни по рекламе здесь внизу.
Serebro вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти максимальный из положительных элементов матрицы и сумму отрицательных элементов. bessonov12 Microsoft Office Excel 7 04.05.2009 05:44
программа с использованием подпрограмм, создаёт односвязный список и вычисляет сумму положительных чисел LOVELY Паскаль, Turbo Pascal, PascalABC.NET 5 13.12.2008 01:27
Найти сумму положительных нечетных чисел меньше 50 мандаринка Паскаль, Turbo Pascal, PascalABC.NET 8 22.12.2007 21:45
вычислить сумму отрицательных элементов в массиве only_win Паскаль, Turbo Pascal, PascalABC.NET 2 25.09.2007 15:22