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

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

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.03.2019, 09:49   #1
Enotik_1998
Пользователь
 
Регистрация: 09.03.2018
Сообщений: 77
По умолчанию [РЕШЕНО] Работа с матрицами в delphi7

Здравствуйте. У меня есть квадратная матрица целочисленного типа, описывается как глобальная переменная. Такой вопрос: как сделать ввод-вывод матрицы в stringgrid? Вот мой исходный код, там почему-то выводится 1 число из массива в 1 ячейку:
Код:
procedure TForm1.Button3Click(Sender: TObject);
begin
StringGrid1.RowCount:=n;
StringGrid1.ColCount:=n;
For i:=1 to StringGrid1.RowCount-1 do
For j:=1 to StringGrid1.ColCount-1 do
a[i,j]:=StrToInt(StringGrid1.Cells[j,i]);
For i:=1 to StringGrid1.ColCount-1 do
For j:=1 to StringGrid1.RowCount-1 do
StringGrid1.Cells[j,i]:=IntToStr(a[i,j]);
//Form2.Show;
//Form1.Hide;
end;
Enotik_1998 вне форума Ответить с цитированием
Старый 22.03.2019, 09:58   #2
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

Цитата:
Сообщение от Enotik_1998 Посмотреть сообщение
там почему-то выводится 1 число из массива в 1 ячейку:
??
А как должно быть? Несколько чисел - в одну ячейку ?
Надо только помнить, что нумерация в StringGrid1 идет от 0. Если массив объявлен таким же макаром, то
Код:
For i:=0 to StringGrid1.RowCount-1 do

Последний раз редактировалось digitalis; 22.03.2019 в 10:03.
digitalis вне форума Ответить с цитированием
Старый 22.03.2019, 09:59   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Enotik_1998 Посмотреть сообщение
Код:
StringGrid1.RowCount:=n;
StringGrid1.ColCount:=n;
грид становится размером в одну ячейку?
Так проверяйте, чему у Вас равно n в момент нажатия на кнопку Button3
(воспользуйтесь отладчиком - поставьте точку останова и посмотрите значение в переменной).
Это раз.

второе. Вы сначала определитесь, что Вам нужно - перекинуть данные из StringGrid -> в массив a или, наоборот, из массива a -> StringGrid ?
выполнять два действия подряд - бессмысленно.

третье.
я не знаю, как у Вас сконфигурирован StringGrid (если ли зафиксированные строки/столбцы), но, в общем случае, нумерация в гриде идёт от 0
тем более, что Вы цикл выполняете до n-1 (для грида это правильно, а для массива - НЕ ВЕРНО).
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.03.2019, 10:11   #4
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
(для грида это правильно, а для массива - НЕ ВЕРНО).
Ну почему же? Массив может тоже быть определен как [0..n-1]
А StringGrid1.RowCount,StringGrid1.Co lCount, точнее, одтн из них - матрица ведь квадратная - объявить бы константами . Массив-то не динамический ?

Последний раз редактировалось digitalis; 22.03.2019 в 10:16.
digitalis вне форума Ответить с цитированием
Старый 22.03.2019, 10:16   #5
Enotik_1998
Пользователь
 
Регистрация: 09.03.2018
Сообщений: 77
По умолчанию

Что-то сильно сложно. Вы можете дать готовый пример для ввода и вывода целочисленной матрицы в stringgrid без random?

массив не динамический

Последний раз редактировалось Вадим Мошев; 23.03.2019 в 18:25.
Enotik_1998 вне форума Ответить с цитированием
Старый 22.03.2019, 10:21   #6
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

Согласен. Не просто сложно, а зупер-сложно. Цикл не от 1, а от 0 - свихнуться можно.
Serge_Bliznykov спрашивает: есть зафиксированные ячейки ? Туда обычно заголовки строк-колонок помещают.
digitalis вне форума Ответить с цитированием
Старый 22.03.2019, 10:28   #7
Enotik_1998
Пользователь
 
Регистрация: 09.03.2018
Сообщений: 77
По умолчанию

Если это суперсложно, то дайте код по вводу-выводу матрицы в stringrid без random. Фиксированных ячеек нету.
Enotik_1998 вне форума Ответить с цитированием
Старый 22.03.2019, 10:34   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Enotik_1998 Посмотреть сообщение
Если это суперсложно, то дайте код по вводу-выводу матрицы в stringrid без random. Фиксированных ячеек нету.
объявление глобальных переменных
Код:
var 
   N, M : integer;
   A : array[1..100, 1..100] of integer;
.....
запись данных из грида -> в массив
Код:
procedure TForm1.ButtonGridToArrayClick(Sender: TObject);
var i,j : integer;
begin
  N := StringGrid1.RowCount;
  M := StringGrid1.ColCount;
  For i:=0 to StringGrid1.RowCount-1 do
     For j:=0 to StringGrid1.ColCount-1 do
        a[i+1,j+1]:=StrToInt(StringGrid1.Cells[j,i]);
end;

вывод из массива -> StringGrid
Код:
procedure TForm1.ButtonArrayToGridClick(Sender: TObject);
var i,j : integer;
begin
 StringGrid1.RowCount := N;
 StringGrid1.ColCount := M;
  For i:=0 to StringGrid1.RowCount-1 do
     For j:=0 to StringGrid1.ColCount-1 do
        StringGrid1.Cells[j,i] := StrToInt(a[i+1,j+1]);
end;
всё.
есть вопросы?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.03.2019, 10:41   #9
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

Вариант для квадратной матрицы (и квадратной же StringGrid)

Код:
var 
   N : integer;
   A : array[0..100, 0..100] of integer;
.....
запись данных из грида -> в массив

Код:
procedure TForm1.ButtonGridToArrayClick(Sender: TObject);
var i,j : integer;
begin
  N := StringGrid1.RowCount;
  For i:=0 to N-1 do
     For j:=0 to N-1 do
        a[i,j]:=StrToInt(StringGrid1.Cells[j,i]);
end;
и т.д.
digitalis вне форума Ответить с цитированием
Старый 22.03.2019, 10:46   #10
Enotik_1998
Пользователь
 
Регистрация: 09.03.2018
Сообщений: 77
По умолчанию

Всё работает. Спасибо за помощь.
Enotik_1998 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[РЕШЕНО] Работа с массивами в delphi7 Enotik_1998 Компоненты Delphi 2 20.03.2019 10:14
Работа с матрицами street-walker Помощь студентам 2 12.02.2012 11:39
Работа с матрицами (норма матрицы, работа со строками) Neitrosha Помощь студентам 1 26.11.2010 20:19
Работа с матрицами на Си artem7213 Общие вопросы C/C++ 5 21.04.2009 14:37
[РЕШЕНО] Подскажите, где скачать нормальный пакет компонент TrayIcon для Delphi7... Рустам Компоненты Delphi 6 02.02.2008 21:48