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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2012, 18:37   #1
toha_master
Пользователь
 
Регистрация: 05.05.2012
Сообщений: 22
Сообщение сумма каждой строки в stringgrid

Есть таблица заполнена числами (размеры таблицы изменяются программно) нужно найти сумму каждой строки таблицы. есть некоторые наработки но не рабочая((( Помогите...
toha_master вне форума Ответить с цитированием
Старый 23.10.2012, 18:39   #2
toha_master
Пользователь
 
Регистрация: 05.05.2012
Сообщений: 22
По умолчанию

Код:
procedure TForm3.ComboBox1Click(Sender: TObject);
var sum,s1:real;
begin
if combobox1.ItemIndex=0 then begin
for i:=0 to x do
 for j:=0 to y  do
 Sum := Sum + StrTofloat(stringgrid1.Cells[i,j]);
 label8.Caption:=floattostr(Sum);

 if combobox1.ItemIndex=1 then begin
 for i:=0 to y do
 s1:=s1+strtofloat(stringgrid1.Cells[0,y]);
 label8.Caption:=floattostr(s1);
 end;
end;
end;
toha_master вне форума Ответить с цитированием
Старый 23.10.2012, 18:42   #3
toha_master
Пользователь
 
Регистрация: 05.05.2012
Сообщений: 22
По умолчанию

там где индекс о то сумма всех элементов таблицы (x-колличество строчек, у-колличество столбцов)
toha_master вне форума Ответить с цитированием
Старый 23.10.2012, 19:54   #4
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,899
По умолчанию

begin-end расставьте правильно. судя по всему у Вас в них запутана логика.
Вроде как после
Код:
 label8.Caption:=floattostr(Sum);
надо поставить end; а снизу один убрать.
phomm вне форума Ответить с цитированием
Старый 23.10.2012, 20:28   #5
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Рискну предложить свой вариант:

Код:
Case combobox1.ItemIndex of
  0: begin 
        for i:=0 to x do
          for j:=0 to y  do
            Sum := Sum + StrTofloat(stringgrid1.Cells[i,j]);
        label8.Caption:=floattostr(Sum);
     end;
  1: begin  
        for i:=0 to y do
          s1:=s1+strtofloat(stringgrid1.Cells[0,y]);
        label8.Caption:=floattostr(s1);
     end;
end;
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...

Последний раз редактировалось Sciv; 23.10.2012 в 20:31.
Sciv вне форума Ответить с цитированием
Старый 24.10.2012, 01:09   #6
toha_master
Пользователь
 
Регистрация: 05.05.2012
Сообщений: 22
По умолчанию

Цитата:
Сообщение от Sciv Посмотреть сообщение
Рискну предложить свой вариант:

Код:
Case combobox1.ItemIndex of
  0: begin 
        for i:=0 to x do
          for j:=0 to y  do
            Sum := Sum + StrTofloat(stringgrid1.Cells[i,j]);
        label8.Caption:=floattostr(Sum);
     end;
  1: begin  
        for i:=0 to y do
          s1:=s1+strtofloat(stringgrid1.Cells[0,y]);
        label8.Caption:=floattostr(s1);
     end;
end;
Все бы хорошо только ошибку выдает
toha_master вне форума Ответить с цитированием
Старый 24.10.2012, 01:11   #7
toha_master
Пользователь
 
Регистрация: 05.05.2012
Сообщений: 22
По умолчанию

Project1.exe raised exception class EConvertError with message ''' is not a valid floating point value'. Process stopped. Use Step or Run ro continue. (Что это обозначает?)

Последний раз редактировалось toha_master; 24.10.2012 в 01:18.
toha_master вне форума Ответить с цитированием
Старый 24.10.2012, 01:29   #8
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

http://translate.google.com/#en/ru/P...0ro%20continue
eval вне форума Ответить с цитированием
Старый 24.10.2012, 01:33   #9
DIMASIKXXX32
Пользователь
 
Регистрация: 26.01.2010
Сообщений: 72
По умолчанию

Код:
var
  Form1: TForm1;
  i,j:Integer;
implementation

{$R *.dfm}


//При создании формы таблица заполняется рандомно 
procedure TForm1.FormCreate(Sender: TObject);


begin
for i := 1 to 5 do
  for j := 1 to 5 do
    begin
      StringGrid1.Cells[i,j]:=IntToStr(Random(10));
    end;

end;

procedure TForm1.Button1Click(Sender: TObject);
  var
    sum:Integer;
  begin
    sum:=0;
    //Подсчет по 2 столбцу
    for j := 1 to StringGrid1.RowCount-1 do
      begin
        sum:= sum+StrToint(StringGrid1.Cells[1,j]);
      end;
    ShowMessage(IntToStr(sum));
  end;
end.

Примечние если подшаманить то можно и строки и что бы всех строк




___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 24.10.2012 в 08:46.
DIMASIKXXX32 вне форума Ответить с цитированием
Старый 24.10.2012, 02:03   #10
DIMASIKXXX32
Пользователь
 
Регистрация: 26.01.2010
Сообщений: 72
По умолчанию

Цитата:
Сообщение от toha_master Посмотреть сообщение
Есть таблица заполнена числами (размеры таблицы изменяются программно) нужно найти сумму каждой строки таблицы. есть некоторые наработки но не рабочая((( Помогите...
Код:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Grids;
Если используешь delphi 7 здесь сгенерируются подругому так что не все копи-пасти
type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  i,j:Integer;
implementation

{$R *.dfm}
//Событие на создание формы
procedure TForm1.FormCreate(Sender: TObject);
  begin
    for i := 1 to 5 do
      for j := 1 to 5 do
        begin
          StringGrid1.Cells[i,j]:=IntToStr(Random(10));//Заполняем ячееки
        end;
  end;
//Собыие по кнопке подсчета суммы строк
procedure TForm1.Button1Click(Sender: TObject);
  var
    sum:Integer;
  begin
    sum:=0; //Обнуляем сумму
    //Подсчет суммы
    for j := 1 to StringGrid1.RowCount-1 do
      begin
        //Цикл по столбцам начинаем с первого и до последнего столбца последний
        //Определяется автоматически плюс вычитаем 2 так как в последний будем
        //Вывоить сумму
        for i := 1 to StringGrid1.ColCount-2 do
          begin
            //Подсчет суммы
            sum:= sum+StrToint(StringGrid1.Cells[i,j]);
            //Выводим сумму в последний столбец
            StringGrid1.Cells[StringGrid1.ColCount-1,j]:=IntToStr(sum);
          end;
        sum:=0;//Обнуляем сумму перед переходм к новой срочке в цикле
      end;
  end;
end.
Примечание: размер StringGrida ColCount=7 RowCount=5





___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 24.10.2012 в 08:46.
DIMASIKXXX32 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сумма элементов каждой строки матрицы и перестановка их в порядке возростание Nickos Помощь студентам 2 30.05.2011 23:38
Hint на каждой ячейке StringGrid-a Sanprof Общие вопросы Delphi 6 04.11.2010 19:55
Сумма каждой строки матрицы и вывод сумм в порядке возрастания (помогите доработать) tipilat Помощь студентам 9 05.07.2009 12:46
Удаление отступов в последней ячейке каждой строки в каждой таблице Busine2009 Microsoft Office Word 7 06.06.2009 12:27
Первый нечетный элемент каждой строки удвоить (предполагается, что в каждой строке есть нечетный элемент Галина002 Помощь студентам 1 18.03.2009 06:30