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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.08.2008, 19:02   #11
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Stilet, спасибо я сделал чтобы он считал по вертикали, заменил то, что ты сказал, но пока без итоговых результатов считает). Помоги мне записать этот код:
Код:
SG2.Cells[0,26]:=   
    FloatToStr((StrToIntDef(SG2.Cells[0,1],0)+StrToIntDef(SG2.Cells[0,2],0)+   
    StrToIntDef(SG2.Cells[0,3],0)+StrToIntDef(SG2.Cells[0,4],0)+   
    StrToIntDef(SG2.Cells[0,5],0)+StrToIntDef(SG2.Cells[0,6],0)+   
    StrToIntDef(SG2.Cells[0,7],0)+StrToIntDef(SG2.Cells[0,8],0)+   
    StrToIntDef(SG2.Cells[0,9],0)+StrToIntDef(SG2.Cells[0,10],0)+   
    StrToIntDef(SG2.Cells[0,11],0)+StrToIntDef(SG2.Cells[0,12],0)+   
    StrToIntDef(SG2.Cells[0,13],0)+StrToIntDef(SG2.Cells[0,14],0)+   
    StrToIntDef(SG2.Cells[0,15],0)+StrToIntDef(SG2.Cells[0,16],0)+   
    StrToIntDef(SG2.Cells[0,17],0)+StrToIntDef(SG2.Cells[0,18],0)+   
    StrToIntDef(SG2.Cells[0,19],0)+StrToIntDef(SG2.Cells[0,20],0)+   
    StrToIntDef(SG2.Cells[0,21],0)+StrToIntDef(SG2.Cells[0,22],0)+   
    StrToIntDef(SG2.Cells[0,23],0)+StrToIntDef(SG2.Cells[0,24],0)+   
    StrToIntDef(SG2.Cells[0,25],0)));
в виде цикла, который бы сумировал. Пожалуйста))
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 19.08.2008, 19:41   #12
NikLik
Форумчанин
 
Аватар для NikLik
 
Регистрация: 22.11.2007
Сообщений: 224
По умолчанию

Мне непонятно, почему используется и FloatToStr, и StrToIntDef.
Разные типы.

Код:
var
  i: byte;
begin
  SG2.Cells[0, 26]:='0';
  for i := 1 to 25 do
    SG2.Cells[0, 26] := FloatToStr(StrToFloat(SG2.Cells[0, 26]) +
      StrToFloatDef(SG2.Cells[0, i], 0));
end;

Последний раз редактировалось NikLik; 19.08.2008 в 20:45.
NikLik вне форума Ответить с цитированием
Старый 19.08.2008, 19:43   #13
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

Код:
var s,i:integer=0;
begin
For i:=1 to 25 do s:=s+StrToIntDef(SG2.Cells[0,i],0);
SG2.Cells[0,26]:=FloatToStr(s); //здесь можно вместо FloatToStr использовать InttoStr
end;
zetrix вне форума Ответить с цитированием
Старый 20.08.2008, 07:03   #14
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Теперь стала задача у меня деления .
Цикл:
Код:
for i:=1 to 25 do
  begin
  g:=g+StrToIntDef(SG3.Cells[0,i],0);
  SG3.Cells[0,26]:=FloatToStr(g);
Он считает сумму ячеек в столбце. Как я и хотел. Все правильно. Не жалуюсь на его работу).
Но вот для рассчета этого цикла:
Код:
for i:=1 to 25 do
  begin
  p:=p+StrToIntDef(SG3.Cells[2,i],0);
  SG3.Cells[2,26]:=FloatToStr(p);
нужно ответ в SG3.Cells[2,26] разделить на число в SG3.Cells[0,26].
Например, если в таблице заполонены все 25 строк единицами и в третьей таблице получается 50, то в сумме у меня он щас выводит 1250. Так то оно так, но в ответе (SG3.Cells[2,26]) должно быть не 1250, а 50, потому что при рассчете 1250 должно делится на кол-во заполненых строк, т.е на 25 в данном случае.
Я пробовал писать так:
Код:
for i:=1 to 25 do
  begin
  p:=p+StrToIntDef(SG3.Cells[2,i],0);
  SG3.Cells[2,26]:=FloatToStr(p/StrToIntDef(SG3.Cells[2,i],0));
То получается в SG3.Cells[2,26] ответ 25, а должно быть 50!.
Пока что сейчас не получается решить этот вопрос с делением((. Плиз помогите. Кроме вас спросить не у кого(
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 20.08.2008, 08:44   #15
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Чет я недоперепонял твои мысли (твои скакуны)...
Тебе нужно :
Цитата:
при рассчете ... должно делится на кол-во заполненых строк
Ну так в чем проблема? :
Код:
NotNulCount:=0;
for i:=1 to 25 do     begin   
  p:=p+StrToIntDef(SG3.Cells[2,i],0);   
  if SG3.Cells[2,i]<>'' then inc(NotNulCount);
end;
if NotNulCount>0 then  SG3.Cells[2,26]:=FloatToStr(p/NotNulCount);
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.08.2008, 09:27   #16
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Stileeeeeeeet!!!!!!!!!!)))))))))))) Красавчик! Молодец! Теперь все делит правильно и считает! Отлично!)). Токо у меня не получается сделать
для этого цикла (тут числа не целые, а дроби 100%):
Код:
for i:=1 to 25 do
 begin
  v:=v+StrToIntDef(SG3.Cells[1,i],0);
  SG3.Cells[1,26]:=FloatToStrF(v,ffFixed,0,1);
 end;
Я пробовал так:
Код:
NotNulCount:=0;
for i:=1 to 25 do
 begin
  v:=v+StrToIntDef(SG3.Cells[1,i],0);
    if SG3.Cells[1,i]<>'' then inc(NotNulCount);
 end;
  if NotNulCount>0 then SG3.Cells[1,26]:=FloatToStrF((v/NotNulCount),ffFixed,0,1);
Но это ничего не изменило. Такой же ответ и выводит. Число должно быть обязательно дробным! Для остальных циклов я сделал)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 20.08.2008, 09:40   #17
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
тут числа не целые, а дроби
Че прям вот так дробь??? с палочкой посередине?
Замени StrToIntDef на StrToFloatDef
И убедись что разделитель в твоих "дробях" соответствующий
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.08.2008, 10:27   #18
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
И убедись что разделитель в твоих "дробях" соответствующий
Хорошо))
А можешь напомнить как сделать так чтобы программа не реагировала на то, что данные введены не во все ячейки?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 20.08.2008, 10:51   #19
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
 if SG3.Cells[x,y]<>'' then //
или
Код:
  if trystrtofloat(SG3.Cells[1,i],perem) then // perem содержит число
 else // в ячейке не число а чушь на палочке
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Несколько вопросов Зубоскалик Общие вопросы Delphi 14 20.11.2008 14:28
Несколько вопросов по VBA Graveyard Microsoft Office Excel 6 27.08.2008 08:50
несколько вопросов по RichEdit TaTT DoGG Компоненты Delphi 4 27.05.2008 10:57
Несколько Вопросов Дорст Общие вопросы Delphi 3 12.11.2007 09:18
Несколько вопросов по Delphi 2005 Nez Общие вопросы Delphi 53 21.02.2007 05:49