здрасьте) вы даете советы по оконному режиму delphi? вопрос такой нужно сложить две матрицы сложность заключается в том как это все реализовать через стринггриды, как сделать обращение к ним по идее должно быть три окна stringgrid( 1ая матрица , 2ая матрица, результат сложения) так же хотелось бы узнать как осуществить ввод в эти самые стринггриды
BananaMan
28.05.2006 4:01
короче в drkb того что мне нужно нету((( надо сложить две матрицы используя stringgrid а ничего в голову не приходит... =(
volvo
28.05.2006 4:06
Чего тебе не приходит? Как заполнять StringGrid-ы, знаешь? Заполняй... Две штуки... Заполнил - проходи в цикле по строкам и столбцам по обоим заполненным StringGrid-ам, и складывай соотв. элементы. Результат сложения пишешь в третий StringGrid... Вот и вся программа.
BananaMan
29.05.2006 3:01
посмотрите пжлст я чего то делаю не так или я все делаю не так?
мисс_граффити
30.05.2006 23:47
вообще-то мог бы exe-файл не прикреплять....
по программе. что сразу не понравилось: размер изменяется только при нажатии на кнопку, то есть когда стринггриды должны быть уже заполнены. кроме того, для задания кол-ва строк и столбцов лучше использовать spinedit (закладка samples).
ну и основная ошибка - циклов должно быть не так до фига, а два вложенных. вот все, что должно быть в процедуре Button1Click
for i:=1 to StringGrid1.ColCount-1 do for j:=1 to StringGrid1.RowCount-1 do begin i1:=StrToInt(StringGrid1.Cells[i,j]); i2:=StrToInt(StringGrid2.Cells[i,j]); i3:=i1+i2; StringGrid3.Cells[i,j]:=IntToStr(i3); end;
зачем нужны строковые переменные - я не поняла...
BananaMan
31.05.2006 0:32
так ок строковые переменные я выбросил сделал все так как ты сказала НО не пойму почему, не складываются матрицы 2*3, 3*2 и тд... почему? :-( в чем подвох то
volvo
31.05.2006 0:57
Ну, а процедуру, которая у тебя ТЕПЕРЬ получилась, показать нельзя? Тогда ошибка в 17-ой строке...
BananaMan
31.05.2006 4:01
программу прикрепляю (интерфейс немного переделан) (пока там только сложение, в разделе действия)
мисс_граффити
31.05.2006 4:12
не прикрепляй ты exe-шники! ну сколько раз повторять?! просто выкладывай код!!!
итак, чтобы не пришлось скачивать... что имеется в программе:
procedure TForm2.Button2Click(Sender: TObject); var i,j,i1,i2,i3,m,n:integer; begin for m:=1 to StringGrid1.RowCount-1 do if (StringGrid1.Cells[i,j]='') or (StringGrid2.Cells[i,j]='') then begin ShowMessage('Матрицы имеют незаполненные ячейки'); break; end else for n:=1 to StringGrid1.ColCount-1 do begin if (StringGrid1.Cells[i,j]='') or (StringGrid2.Cells[i,j]='') then begin ShowMessage('Матрицы имеют незаполненные ячейки'); break; end else begin i1:=StrToInt(StringGrid1.Cells[i,j]); i2:=StrToInt(StringGrid2.Cells[i,j]); i3:=i1+i2; StringGrid3.Cells[i,j]:=IntToStr(i3); StringGrid3.Visible:=True; end; end;
очень логично запустить циклы по m и n, а обращаться к ячейкам i и j.
BananaMan
31.05.2006 20:32
может и не логично, но ошибка не в этом =(
for j:=1 to StringGrid1.RowCount-1 do if (StringGrid1.Cells[i,j]='') or (StringGrid2.Cells[i,j]='') then begin ShowMessage('Матрицы имеют незаполненные ячейки'); break; end else for i:=1 to StringGrid1.ColCount-1 do begin if (StringGrid1.Cells[i,j]='') or (StringGrid2.Cells[i,j]='') then begin ShowMessage('Матрицы имеют незаполненные ячейки'); break; end else begin i1:=StrToInt(StringGrid1.Cells[i,j]); i2:=StrToInt(StringGrid2.Cells[i,j]); i3:=i1+i2; StringGrid3.Cells[i,j]:=IntToStr(i3); StringGrid3.Visible:=True; end;
эффект тот же в чем же ошибка?
мисс_граффити
31.05.2006 22:52
for j:=1 to StringGrid1.RowCount-1 do if (StringGrid1.Cells[i,j]='') or (StringGrid2.Cells[i,j]='') then
чему, молодой человек, по Вашему мнению в этом месте равно i?
BananaMan
31.05.2006 23:42
4381712 ???
я это число не с потолка взял, через watches посмотрел... или может я что то неправильно сделал?
мисс_граффити
31.05.2006 23:59
да уж наверное.... а вот теперь подумайте, какие ячейки здесь будут проверяться:
if (StringGrid1.Cells[i,j]='') or (StringGrid2.Cells[i,j]='') then
и тогда ли, когда надо, будет выдаваться сообщение об ошибке.
если говорить честно - нефиг страдать ерундой. я привела работающую процедуру. почему надо делать из нее что-то невообразимое? ну добавил проверку - и все!
BananaMan
1.06.2006 1:09
гм странно а откуда берется это число? просто я пытаюсь сделать курсовую и эта проверка это что то вроде защиты от дурака) ну если там кто нить забудет ввести матрицу, чтобы фатал ерор не вылетал вот :-[
мисс_граффити
1.06.2006 1:27
ну ты же не задаешь, чему i равно. задашь - оно не будет браться с потолка.
BananaMan
1.06.2006 1:50
ок спасибо
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.