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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.03.2010, 14:07   #1
sancheszone
Пользователь
 
Аватар для sancheszone
 
Регистрация: 11.10.2009
Сообщений: 14
Вопрос Массив в делфи

Задаем сами матрицу, любой размерности 2 едита 2 кнопки одна задает другая считает, и два стринггрида. Нужно найти сумму модулей всех отрицательных и не четных чисел в столбце.....тоесть второй стринггрид по сути имеет одну строку. Выдает ошибку, возможно где то присваивает пустое значение.
Код:
unit Unit23;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls;

type
  TForm2 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    StringGrid1: TStringGrid;
    Label1: TLabel;
    Label2: TLabel;
    StringGrid2: TStringGrid;
    Label3: TLabel;
    Label4: TLabel;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
var
w:array [1..20,1..20] of integer;
q,s,n,i,m,j:integer;


begin
m:=StrToInt(Edit1.text);
n:=StrToInt(Edit2.text);
StringGrid1.RowCount:=m;
StringGrid1.ColCount:=n;

StringGrid2.ColCount:=n;
for i:= 1 to n do

 for j:= 1 to m do
  w[j,i]:=StrToInt(StringGrid1.Cells[j,i]);

for i:= 1 to n do
 begin
  for j:= 1 to m do
   if (w[j,i] < 0) and (w[j,i] mod 2 <> 0) then
    begin
    w[j,i]:= abs(w[j,i]);
    q:= q + w[j,i];
    StringGrid2.Cells[j,1]:=IntToStr(q);
    end;
  end;
end;

procedure TForm2.Button2Click(Sender: TObject);
var
m,n:integer;
begin
m:=StrToInt(Edit1.text);
n:=StrToInt(Edit2.text);
StringGrid1.RowCount:=m;
StringGrid1.ColCount:=n;

StringGrid2.ColCount:=n;
end;

end.
Скажите если где что перемудрил, и где возможно тут ошибка, заранее спасиба
sancheszone вне форума Ответить с цитированием
Старый 15.03.2010, 14:13   #2
Nigadyai
Пользователь
 
Регистрация: 11.03.2010
Сообщений: 37
По умолчанию

1)а числа ты вручную вбиваешь?
2) есть ли в стринггриде у тебя зарезервированные поля/ряды?

проверь крайние ячейки, добавив еще одну кнопку с кодом
Код:
showmessage(StringGrid1.Cells[1,1]);
и т.д.
нумерация ячеек в гриде по-моему идет с нуля.

Последний раз редактировалось Nigadyai; 15.03.2010 в 14:22.
Nigadyai вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамический массив Делфи Asira Помощь студентам 1 07.03.2010 02:32
задача про массив в Делфи keyssi Помощь студентам 4 13.01.2010 19:36
Массив в Делфи True_girl Помощь студентам 12 07.07.2009 01:06
Делфи ругается на массив из символов spamer Общие вопросы Delphi 3 25.05.2009 23:46