Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Отнятие ? где ошибка в StingGrid


Автор: PsiHo 29.11.2006, 09:30
Доброго дня !!! 
вопросик почему пи отнемании в таблице типа StringGrid 
отнемает не правильно 
в 3,4,5,6 цифры 
в 7 результат 

значение 
в 3-й ячейке = 293380
в 4-й = 0 
в 5-й = 0
в 6-й = 383908 

в 7 получает результат 767816  а должно получится 90528


Код

 for(int x = 1; x < sg3->RowCount; x++)
  for(int z = 4; z < 7; z++)
   {
    sg4->Cells[7][x]= FloatToStr(StrToInt(sg4->Cells[z][x]) + StrToInt(sg4->Cells[z][x]));
   }

Автор: pandrew 29.11.2006, 09:54
На Руси принято говорить "вычитание". В математике это действие обозначается знаком "-" (читается "минус").

Автор: RatHat 29.11.2006, 10:00
Код
sg4->Cells[7][x]= FloatToStr(StrToInt(sg4->Cells[z][x]) + StrToInt(sg4->Cells[z][x]));

 У тебя получается сложение двух одинаковых величин)
тебе надо:
Код
sg4->Cells[7][x]= FloatToStr(StrToInt(sg4->Cells[6][x]) - StrToInt(sg4->Cells[3][x]));

Автор: PsiHo 29.11.2006, 12:05
RatHat, ты хочешь сказать надо конкретно прописывать ?
а как сделать автоматом ?
если число ячее больше не будешь же  прописывать все ?

pandrew, да  это минус !!!


Автор: Reptile 29.11.2006, 12:27
Цитата(PsiHo @  29.11.2006,  09:30 Найти цитируемый пост)

 
Код

for(int x = 1; x < sg3->RowCount; x++)
  for(int z = 4; z < 7; z++)
   {
    sg4->Cells[7][x]= FloatToStr(StrToInt(sg4->Cells[z][x]) + StrToInt(sg4->Cells[z][x]));
   }



Ты посмотри что Ты делаеш!  RatHat прав  
Цитата(RatHat @  29.11.2006,  10:00 Найти цитируемый пост)
У тебя получается сложение двух одинаковых величин

Ты заносиш(при первом прошоде цыкла)
 Cells[7][1] = Cells[4][1]+Cells[4][1]

Ты слаживаеш два одинаковых значения.

Автор: PsiHo 29.11.2006, 12:48
Цитата(PsiHo @  29.11.2006,  12:05 Найти цитируемый пост)
RatHat, ты хочешь сказать надо конкретно прописывать ?а как сделать автоматом ?если число ячее больше не будешь же  прописывать все ?

 smile 

Автор: Reptile 29.11.2006, 13:30
Цитата(PsiHo @  29.11.2006,  12:05 Найти цитируемый пост)
а как сделать автоматом ?

Попробуй так:
Код

int num := StrToInt(sg4->Cells[3][1]);
for(int x = 1; x < sg3->RowCount; x++)
  {
    for(int z = 4; z < 7; z++)
     {
          num -=   StrToInt(sg4->Cells[z][x]);
     }
  sg4->Cells[7][x]= IntToStr(num);
  }


Если в я чейках могут быть дробные числа, то вместо StrToInt(IntToStr) используй StrToFloat(FloatToStr) и num соответственно объяви как float.

Автор: PsiHo 29.11.2006, 14:48
Reptile, гы спасибо уже пробовал такой вариант и твой тоже 
также пишет -383908 
"пи" что заааа такой....
 smile 

Автор: Reptile 29.11.2006, 15:00
Покажи какие числа в StringGrid и код которым считаеш.
Извеняюсь нашел ошибку(у себя):
Код

num -=   StrToInt(sg3->Cells[z][x]);//не sg4 а sg3

Автор: PsiHo 30.11.2006, 10:29
ВСЕМ СПАСИБО ЗА УЧАСТИЕ 
вопрос решен

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)