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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2011, 22:32   #1
Студент политеха
Новичок
Джуниор
 
Регистрация: 05.06.2011
Сообщений: 3
Печаль StringGrid и массив, непонятная ошибка

Препод попался не очень.
Нужно создать таблицу размерности, размерность ты сам задаешь . А потом еще и найти строку с минимальной суммой элементов.

я сделал вариант, но преподу он не понравился...
Мой вариант:
N:=StrToInt(Kstr.Text); //количество строк
K:=StrToInt(KStol.Text); //количество столбцов
with tabl do
begin
RowCount:=N+1;
ColCount:=K+1;
SetLength(A,N+1);
for i:=1 to N do SetLength(A[i],K+1);
for i:=1 to N do
for j:=1 to K do
begin
Cells[j,i]:='0';
Cells[0,i]:=IntToStr(i);
Cells[j,0]:=IntToStr(j);
A[i,j]:=0;
end;

все работает, ввожу N,K, он строит таблицу пронумерованную.
препод сказал что от К+1 нужно избавиться ибо так делают для матриц, а для таблиц просто K.
мы с ним пришли к решению, но оно оказалось не понятным и я забыл сохраниться. После, я воссоздал решение, но выдает ошибку в строке for i:=1 to N do. Посмотрите чего не так:
N:=StrToInt(Kstr.Text); //количество строк
K:=StrToInt(KStol.Text); //количество столбцов
with tabl do
begin
RowCount:=N;
ColCount:=K;
SetLength(A,N);
for i:=1 to N do SetLength(A[i],K);
for i:=1 to N do
for j:=1 to K do
begin
Cells[j,i]:='0';
Cells[0,i]:=IntToStr(i);
Cells[j,0]:=IntToStr(j);
A[i-1,j-1]:=0;
end;

Возможно я чего то не восстановил...
Студент политеха вне форума Ответить с цитированием
Старый 05.06.2011, 23:59   #2
Студент политеха
Новичок
Джуниор
 
Регистрация: 05.06.2011
Сообщений: 3
По умолчанию

Мне бы хоть узнать, почему нельзя пользоваться моим способом...
Студент политеха вне форума Ответить с цитированием
Старый 06.06.2011, 00:03   #3
_Engine_
Форумчанин
 
Регистрация: 29.06.2008
Сообщений: 603
По умолчанию

в гриде нумерация с нуля идет
_Engine_ вне форума Ответить с цитированием
Старый 06.06.2011, 00:15   #4
Студент политеха
Новичок
Джуниор
 
Регистрация: 05.06.2011
Сообщений: 3
По умолчанию

а почему тогда во втором варианте ошибку дает? весь день сижу, не могу разобраться

Последний раз редактировалось Студент политеха; 06.06.2011 в 00:53.
Студент политеха вне форума Ответить с цитированием
Старый 06.06.2011, 08:50   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
а почему тогда во втором варианте ошибку дает?
Ответ Вам выше дали!
Нумерация в стригггриде идёт от НУЛЯ!
а N - это количество.
поэтому в гриде НЕТ ячейки с номером N
максимальный - с номером N-1

поэтому цикл должен быть
Код:
for i:=0 to N-1 do
или, если Вам нужно первую строчку игнорировать (ну там, например, заголовки), тогда
Код:
for i:=1 to N-1 do
но в любом случае до N-1
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Непонятная ошибка Shurik(c) Помощь студентам 0 01.06.2011 20:34
Непонятная ошибка Lisёноk Помощь студентам 4 19.12.2010 15:08
Непонятная ошибка. jojahti Общие вопросы C/C++ 4 05.09.2009 20:39
Непонятная ошибка Juri Помощь студентам 6 07.11.2008 19:28
Непонятная ошибка RealSHELS Общие вопросы Delphi 16 24.10.2008 20:49