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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.02.2011, 22:04   #11
kotopezzz
Пользователь
 
Регистрация: 04.02.2011
Сообщений: 18
По умолчанию

Прога запускалась и работала пока я не добавил 16 строку в таблицу...тут начались беды спасибо что посмотрели на чудеса...
kotopezzz вне форума Ответить с цитированием
Старый 14.02.2011, 22:11   #12
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,430
По умолчанию

Поправил чудеса, поправил пару багов застрял вот где:
Код:
    for j := 1 to RowCount - 1 do
    begin
      if cells[1, j] = '' then
        cells[1, j] := '0';
      if cells[7, j] = '' then
        cells[7, j] := '0';
      if cells[8, j] = '' then
        cells[8, j] := '0';

      s3 := s3 + StrToFloat(Cells[7, j]);

      if s3 <= 1 then
      begin
        s1 := s1 + StrToFloat(Cells[1, j]) * StrToFloat(Cells[7, j]);
        s2 := s2 + StrToFloat(Cells[2, j]) * StrToFloat(Cells[7, j]); //проблема здесь , когда j = 17 тогда происходит ошибка, но для меня это конечный тупик
        edit1.text := Floattostr(s1);
        edit2.text := Floattostr(s2);
      end
      else
      begin
        edit1.text := '';
        edit2.text := '';
        label2.visible := true;
        label2.caption := 'Неверное значение r(i)';
      end;
    end;
Отформатировал в приличный вид код.

конечный продукт в прилепе.

p.S. сложно ориентирроваться в коде, когда нет ни единого пояснения кода и вычислений.

Последний раз редактировалось Человек_Борща; 14.02.2011 в 22:17.
Человек_Борща вне форума Ответить с цитированием
Старый 14.02.2011, 23:16   #13
asmodey1
Подтвердите свой е-майл
 
Регистрация: 19.12.2010
Сообщений: 808
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Поправил чудеса, поправил пару багов застрял вот где:
//проблема здесь , когда j = 17 тогда происходит ошибка, но для меня это конечный тупик
J не может быть равно 17, потому что StringGrid1.RowCount=17.
А J гуляет
Код:
for j := 1 to RowCount - 1 do
asmodey1 вне форума Ответить с цитированием
Старый 15.02.2011, 09:12   #14
kotopezzz
Пользователь
 
Регистрация: 04.02.2011
Сообщений: 18
По умолчанию

Такс ну вроде подправил и немного разобрался.
Код:
procedure TForm1.Button1Click(Sender: TObject);
public
    s1,s2,s3,n,m,l,p,b1,b2,b3,b4,s4,s5,s6,s7,s8,M0: real;
    end;
 
var
   j: integer;
begin
 s1 := 0;
 s2 := 0;
 s3 := 0;
 s5 := 0;
 s6 := 0;
 s7 := 0;
 s8 := 0;
 with stringgrid1 do begin
   for j := 1 to RowCount - 1 do
   begin
     if cells[1,j]='' then cells[1,j]:='0';
     if cells[7,j]='' then cells[7,j]:='0';
     if cells[8,j]='' then cells[8,j]:='0';

     s3:=s3+StrToFloat(Cells[7,j]);

     if s3<=1 then
     begin
        s1:=s1+StrToFloat(Cells[1,j])*StrToFloat(Cells[7,j]);
        s2:=s2+StrToFloat(Cells[2,j])*StrToFloat(Cells[7,j]);
        edit1.text:=Floattostr(s1);
        edit2.text:=Floattostr(s2);
     end
     else
     begin
        edit1.text:='';
        edit2.text:='';
        label2.visible:=true;
        label2.caption:='Íåâåðíîå çíà÷åíèå r(i)';
     end;
   end;

   if s2<>0 then
   begin
     for j := 1 to RowCount - 1 do
     begin
         s4:=(strtofloat(cells[2,j])*strtofloat(cells[7,j]))/s2;
         stringgrid1.cells[8,j]:=floattostr(s4);
         n:=StrToFloat(Cells[3,j]);
         m:=StrToFloat(Cells[4,j]);
         l:=StrToFloat(Cells[5,j]);
         p:=StrToFloat(Cells[6,j]);
         if 12*n+m+16*l+p*32<>0 then
         begin
            b1:=12*n/(12*n+m+16*l+p*32);
            b2:=m/(12*n+m+16*l+p*32);
            b3:=16*l/(12*n+m+16*l+p*32);
            b4:=32*p/(12*n+m+16*l+p*32);
            s5:=s5+StrToFloat(Cells[7,j])*b1;
            s6:=s6+StrToFloat(Cells[7,j])*b2;
            s7:=s7+StrToFloat(Cells[7,j])*b3;
            s8:=s8+StrToFloat(Cells[7,j])*b4;
            edit3.Text:=floattostr(s5);
            edit4.Text:=floattostr(s6);
            edit5.Text:=floattostr(s7);
            edit6.Text:=floattostr(s8);
        M0:=(1/0.209)*(s5/12+s6/4+s8/32-s7/32);
        edit7.Text:=floattostr(M0);
     end;
     end;
     end;
     end;
     end;
Вот так все работает
kotopezzz вне форума Ответить с цитированием
Старый 15.02.2011, 09:14   #15
kotopezzz
Пользователь
 
Регистрация: 04.02.2011
Сообщений: 18
По умолчанию

но мне нужно поставить вот это условие

Код:
 end;
         if 12*n+m+16*l+p*32<>0 then
          begin
     for j := 1 to 15 do
      begin
            b1:=12*n/(12*n+m+16*l+p*32);
            b2:=m/(12*n+m+16*l+p*32);
            b3:=16*l/(12*n+m+16*l+p*32);
            b4:=32*p/(12*n+m+16*l+p*32);
            s5:=s5+StrToFloat(Cells[7,j])*b1;
            s6:=s6+StrToFloat(Cells[7,j])*b2;
            s7:=s7+StrToFloat(Cells[7,j])*b3;
            s8:=s8+StrToFloat(Cells[7,j])*b4;
       end;
       begin
     for j := 16 to Rowcount -1 do
      begin
            b1 := 0.855;
            b2 := 0.145;
            b3 := 0;
            b4 := 0;
      end;
Так прога запускается но не работает должным образом..где может быть ошибка? подозреваю что где то неправильный цикл
kotopezzz вне форума Ответить с цитированием
Старый 15.02.2011, 11:43   #16
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

зачем тебе помогать если ты даже не читаеш
Код:
            s7:=s7+StrToFloat(Cells[7,j])*b3;
            s8:=s8+StrToFloat(Cells[7,j])*b4;
       end;
       begin // begin чего ето?
     for j := 16 to Rowcount -1 do
      begin
            b1 := 0.855;
VirusN13

Последний раз редактировалось ArtGrek; 15.02.2011 в 12:25.
ArtGrek вне форума Ответить с цитированием
Старый 16.02.2011, 10:26   #17
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,883
По умолчанию

Цитата:
Сообщение от kotopezzz Посмотреть сообщение
Такс ну вроде подправил и немного разобрался.
Код:
procedure TForm1.Button1Click(Sender: TObject);
public
    s1,s2,s3,n,m,l,p,b1,b2,b3,b4,s4,s5,s6,s7,s8,M0: real;
    end;
 
var
   j: integer;
begin
...
end;
Вот так все работает
как может компилироваться то, что красное ?

советую убрать все описанные там переменные в var


добавляю :

Цитата:
Сообщение от kotopezzz
но мне нужно поставить вот это условие
Код:
for j := 16 to Rowcount -1 do
      begin
            b1 := 0.855;
            b2 := 0.145;
            b3 := 0;
            b4 := 0;
      end;
ты уверен, что это надо делать циклом ???

Последний раз редактировалось phomm; 16.02.2011 в 10:31.
phomm вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В чём ошибка кода ???? GRIN Помощь студентам 1 30.08.2010 08:38
ошибка кода street-walker Общие вопросы Delphi 1 17.06.2010 22:32
В чём ошибка кода? Richard22 Общие вопросы Delphi 2 16.05.2010 00:27
Ошибка кода при компиляции rubik Общие вопросы C/C++ 0 22.03.2010 19:44
ошибка в логике кода R@Ziel Помощь студентам 2 03.01.2010 16:10