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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2015, 18:27   #1
krasy
Пользователь
 
Регистрация: 14.04.2015
Сообщений: 40
Подмигивание StringGrid

В общем задача такая: в двумерном массиве, заполненном числами случайным образом, найти максимальный и минимальный элементы и записать их в левом верхнем углу и в правом нижнем углу соответственно. Я поставила два стринггрида и в первый у меня заполняется числами рандомно, а второй как-бы конечный результат после нахождения макс и мин и вот с этим-то и проблемы
Код:
var
  Form1: TForm1;
  a:array[1..5,1..5] of integer;
  i,j,max,min:integer;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin
   randomize;
   for i:=1 to 5 do
    for j:=1 to 5 do
    stringgrid1.cells[i-1,j-1]:=IntToStr(Randomrange(-10,10));

min:=strtoint(stringgrid1.cells[0,0]);
max:=strtoint(stringgrid1.cells[5,5]);;
for i:=1 to stringgrid1.RowCount-1 do
 for j:=1 to stringgrid1.ColCount-1 do
  begin
   if strtoint(stringgrid1.cells[i,j])<min then begin
                                                min:=strtoint(stringgrid1.cells[i,j]);
                                                stringgrid2.Cells[5,5]:=inttostr(min);
                                                end;
   if strtoint(stringgrid1.cells[i,j])>max then begin
                                                max:=strtoint(stringgrid1.cells[i,j]);
                                                stringgrid2.Cells[1,1]:=inttostr(max);
                                                end;
  end;

 for i:=1 to 5 do
 for j:=1 to 5 do
 stringgrid2.Cells[i-1,j-1]:=IntToStr(a[i,j]);

end;

end.
krasy вне форума Ответить с цитированием
Старый 17.05.2015, 18:28   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Какого рода проблемы?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.05.2015, 18:34   #3
krasy
Пользователь
 
Регистрация: 14.04.2015
Сообщений: 40
По умолчанию

не хочет писать в стринггрид 2 вообще числа. выдает ошибку, когда нажимаю на кнопочку: " is not a valid integer value. как ее исправить?
krasy вне форума Ответить с цитированием
Старый 17.05.2015, 18:40   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Для начала прекрати работать с гридом в вычислении.
Наполни массив, у тебя есть для него переменка, в нем вычисляй и его корректируй, а потом уже его в грид и выводи. Не надо вычислять экстремумы прямо в гриде.
По поводу ошибки: Ее дает strtoint, сообщая что в ячейке грида не число. Значит либо использовать вместо нее strtointDEF либо как я выше сказал - все вычисления делать в заранее определенном массиве, который у тебя предусмотрен.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.05.2015, 18:41   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Стрингрид заполняешь с индексами от 0 до 4 по строкам и столбцам. Как думаешь, что в ячейке [5,5] после заполнения? Правильно, пусто. То пусто и даст is not a valid integer value при попытке выполнить StrToInt
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 17.05.2015, 19:01   #6
krasy
Пользователь
 
Регистрация: 14.04.2015
Сообщений: 40
По умолчанию

Я так изначально и делала, но у меня во втором стрингриде все нули выходили. в общем еще раз сделала, поняла, где ошибку допустила и все нормально теперь работает
krasy вне форума Ответить с цитированием
Старый 17.05.2015, 19:34   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Ты на будущее запомни: Не нужно в гридах делать циклы вычислений. Они для отображения на экране предназначены, и плохо подходят (по крайней мере этот) для обработки массивов. Всетки это не Экзел.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Excel to StringGrid and StringGrid to Exel Євгеній Бєлік Общие вопросы Delphi 3 24.11.2013 00:20
StringGrid Марийка92 Помощь студентам 6 24.12.2011 20:34
stringgrid+колесо мыши=>stringgrid.onclick aalleexxaa Общие вопросы Delphi 5 16.02.2011 16:58
stringgrid UROKSAN Общие вопросы Delphi 1 08.04.2008 13:28