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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.11.2010, 23:22   #1
kami46
Пользователь
 
Регистрация: 30.10.2010
Сообщений: 10
По умолчанию Работа с двумерным массивом

delphi
суть задания заключается в том, что дана матрица НхМ. Требуется найти максимальный эл-т и поменять его местами с левым верхним (т.е. [1,1]). программа выдает ошибку
Цитата:
Variable 'max' might not have been initialized
Variable 'i1' might not have been initialized
Variable 'j1' might not have been initialized
Помогите, пожалуйста, разобраться, в чем же ошибка)

Код:
unit Unit1;

interface

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

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

var
  Form1: TForm1;
   n,m:integer;
implementation

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);
begin
n:=strtoint(edit1.text);
m:=strtoint(edit2.text);
stringgrid1.colcount:=n;
stringgrid1.rowcount:=m;
end;

procedure TForm1.Button1Click(Sender: TObject);
var i,j, max, i1, j1, BBuf : integer;
a:array of array of integer;
begin

setlength(a, n, m);

for i:=0 to n-1 do
for j:=0 to m-1 do
begin
a[i,j]:=strtoint(stringgrid1.Cells[i,j]);
end;

for i := 0 to n-1 do 
for j := 0 to m-1 do
if a[i,j] > max then begin max :=a[i,j]; i1 := i; j1 := j end;

BBuf := a[0,0];
a[0,0] := a[i1,j1];
a[i1,j1] := BBuf;

for i:=0 to n-1 do
for j:=0 to m-1 do
stringgrid1.cells[i,j]:=inttostr(a[i,j]);
end;

end.

Последний раз редактировалось kami46; 19.11.2010 в 23:27.
kami46 вне форума Ответить с цитированием
Старый 20.11.2010, 17:35   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

вместо кода лучше бы проект в архиве прикрепил.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.11.2010, 17:45   #3
welcomeTo
Пользователь
 
Регистрация: 27.05.2010
Сообщений: 43
По умолчанию

if a[i,j] > max
===============
max:=a[1,1];
welcomeTo вне форума Ответить с цитированием
Старый 20.11.2010, 17:51   #4
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Ну судя по ошибке... Это обращение к недоступной области памяти!
Если по коду могу подсказать что
I)
Цитата:
a:array of array of integer;
Массив массивов, зачем? Хватило бы и a:array of integer;
II)
Цитата:
setlength(a, n, m);

for i:=0 to n-1 do
for j:=0 to m-1 do
begin
a[i,j]:=strtoint(stringgrid1.Cells[i,j]);
end;
Всё бы хорошо вот только в массиве в делфи первый индекс означает номер строки, второй номер столбца. А вот в StringGrid наоборот сначало обращаешься к столбцу потом к строке! Отсюда и можно понять что при несоответствии количества строк и столбцов можно выбежать за пределы!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
паскаль, работа с двумерным массивом leraaa Паскаль, Turbo Pascal, PascalABC.NET 0 18.04.2010 21:49
Работа с двумерным массивом SaimaN Помощь студентам 0 16.03.2010 15:23
Помогите с двумерным массивом в С++ Vultar Помощь студентам 11 12.11.2009 18:28
помогите с двумерным массивом nikita33321 Помощь студентам 0 30.09.2009 22:45
Задача с двумерным массивом. svobodys Помощь студентам 3 13.12.2008 15:44