11.11.2012, 19:06
|
|
Профессионал
|
|
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
|
|
Цитата:
Сообщение от Diplomate
У меня тут еще один вопрос. Нужно создать программу, состоящую из двух таблиц(5x5 и 1x5) и кнопки "Расчет". Суть задания в том, чтобы все числа в строке первой таблицы складывались и их сумма отображалась в соответствующей строке второй таблицы. Я составил код, но после заполнения первой таблицы и нажатия кнопки "Расчет" во второй таблице ничего не пишется! Вот код(Tab1 и Tab2 соответственно первая и вторая таблицы):
Код:
procedure TForm1.Button1Click(Sender: TObject);
var i,j,n:integer;
c:real;
b:boolean;
begin
b:=true; //b-логическая переменная, которой присваивается значение false, если найдена пустая ячейка(проверка, что все ячейки строки
//заполнены)
c:=0; //c-переменная. в которой хранится сумма
for i:=0 to Tab1.RowCount do
begin
for j:=0 to Tab1.ColCount do
if Tab1.Cells[i,j]='' then //если ячейка пустая, то b:=0
b:=false;
if b=true then //если b=true, то все ячейки заполнены, в этом случае мы подсчитываем сумму
begin
for n:=0 to Tab1.ColCount do
c:=c+StrToFloat(Tab1.Cells[i,n]);
Tab2.Cells[i,0]:=FloatToStr(c);
end;
end;
end;
Насколько я понял программа в цикле, где идет проверка на то, что все ячейки строки заполнены, где-то присваивает переменной b значение false, поэтому подсчет и вывод значения c во вторую таблицу не происходит. Прошу найти ошибку в коде.
|
В свойстве TStringGrid.Cells первым должен идти номер колонки, вторым номер строки. У тебя же наоборот.
Ещё неправильно заданы диапазоны в циклах. Должно быть так:
Код:
for i:=0 to Tab1.RowCount - 1 do
.....
for j:=0 to Tab1.ColCount - 1 do
.....
for n:=0 to Tab1.ColCount - 1 do
Возможно есть ещё какие ошибки.
|