Показать сообщение отдельно
  #5  
Старый 11.11.2012, 19:06
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 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
Возможно есть ещё какие ошибки.
Ответить с цитированием