Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Przeniesienie zmiennej

Ostatnio zmodyfikowano 2013-04-20 20:08
Autor Wiadomość
Mariox
Temat założony przez niniejszego użytkownika
Przeniesienie zmiennej
» 2013-04-20 18:54:15
Witam. Mam problem ze zmiennymi. Stworzyłem sobie w builderze prosty kalkulator. W programie mam zagnieżdzoną pętle for która ma korzystać ze zmiennych zadeklarowanych w programie czyli globalnych. Niestety wyniki obliczeń zawartych w pętli nie są przenoszone poza nią. Tak samo gdy w programie głównym daję wyświetlenie wyniku w postaci tekstu to działa a z poziomu pętli już nie.  Dodam że program zrobiony w TP działa bo tam zmienne są widoczne poza pętlą. Czy to jest kwestia dodania jakiejś instrukcji czy może trzeba coś z opcjami pozmieniać?
P-80900
Hipochondryk
» 2013-04-20 18:56:14
ciezko tak gdybać bez kodu, Wstaw kod ( jeśli powyżej 50 linijek, mile by było gdyby był dobrze skomentowany).
P-80901
Mariox
Temat założony przez niniejszego użytkownika
» 2013-04-20 19:09:05
C/C++
float S, H, L, n, nn, gu, gi, gp, gt, t, t0, lamu, lami, lamp, lamt, Q, Uz, Uzz, Un, Uu, Uui, Uuir, Upt, Ui, Ut, R, F;

void __fastcall TForm1::ObliczClick( TObject * Sender )
{
    S = ZmiennaS->Text.ToDouble();
    H = ZmiennaH->Text.ToDouble();
    L = ZmiennaL->Text.ToDouble();
    gu = Zmiennagu->Text.ToDouble();
    gi = Zmiennagi->Text.ToDouble();
    gp = Zmiennagp->Text.ToDouble();
    gt = Zmiennagt->Text.ToDouble();
    n = Zmiennan->Text.ToDouble();
    lamu = Zmiennalamu->Text.ToDouble();
    lami = Zmiennalami->Text.ToDouble();
    lamp = Zmiennalamp->Text.ToDouble();
    lamt = Zmiennalamt->Text.ToDouble();
    Q = ZmiennaQ->Text.ToDouble();
    t0 = Zmiennat0->Text.ToDouble();
   
    nn = n;
   
    for( n; n == 0; n-- )
    {
        Upt =( 1 /(( gp /( lamp * gu *( 2 *( H + S *( gt + gi +( n - 1 ) *( gi + gu ) ) ) ) ) +( gt /( lamt * 2 * gu *( H + S *( gt + gi +( n - 1 ) *( gi + gu ) ) ) ) ) ) ) );
        Uu =(( lamu * gu * L ) /( 2 *( S + H *( gi + gt ) +( n - 1 ) *( gu + gi ) ) ) );
        Un = Upt + Uu;
        if( nn == n )
             Uz = Un;
        else
             Uz = 1 /( 1 / Uz + 1 / Un );
       
    }
   
    R = 1 / Uz;
    t = Q * R + t0;
   
    Re->Caption = CurrToStr( R );
    te->Caption = CurrToStr( t );
}
P-80903
Hipochondryk
» 2013-04-20 19:14:12
uzyj znaczników [ cpp] i [/cpp ] (bez spacji by wstawić kod.)
P-80904
Hipochondryk
» 2013-04-20 19:16:33
tutaj widzę błąd.
C/C++
for( n; n == 0; n-- )
robisz albo :
C/C++
for( int n = 10; n == 0; n-- )
lecz w Twoim wypadku raczej lepiej będzie się sprawoać
C/C++
for(; n == 0; n-- )

kolejna sprawa - odradza się używania zmiennych globalnych tak jak to Ty robisz, ponieważ mogą wynikać z tego pewne problemy. (przypadkowa modyfikacja itp)
P-80905
Mariox
Temat założony przez niniejszego użytkownika
for
» 2013-04-20 19:25:40
Usunąłem n z for'a ale dalej ten sam błąd. Program się niby uruchamia po kompilacji ale w momencie wciśnięcia przycisku wyrzuca mi komunikat: "Floating poin division by zero" wskazując na linijkę R=1/Uz; tak jak gdyby chciał dzielić przez zero. Myślę,że przypisuje Uz wartość default' ową 0 bo nie dostaje wyniku z pętli.
P-80907
Monika90
» 2013-04-20 19:51:59
Jeżeli n == 0 to twoja pętla
for( n; n == 0; n-- )
 się wykona raz. Jeżeli n jest różne od zera, to ani razu.
P-80909
Mariox
Temat założony przez niniejszego użytkownika
Dzięki
» 2013-04-20 20:08:09
Jeju dziękuje. Człowiek nieraz patrzy 100 razy na coś i mu się widzi że jest ok a tu taj taki szczegół. Dzięki Wszystkim za pomoc a dla Moniki w podzięce kwiatek @--,'--,'---
P-80912
« 1 »
  Strona 1 z 1