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ć? |
|
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). |
|
Mariox Temat założony przez niniejszego użytkownika |
» 2013-04-20 19:09:05 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 ); }
|
|
Hipochondryk |
» 2013-04-20 19:14:12 uzyj znaczników [ cpp] i [/cpp ] (bez spacji by wstawić kod.) |
|
Hipochondryk |
» 2013-04-20 19:16:33 tutaj widzę błąd. robisz albo : for( int n = 10; n == 0; n-- )
lecz w Twoim wypadku raczej lepiej będzie się sprawoać kolejna sprawa - odradza się używania zmiennych globalnych tak jak to Ty robisz, ponieważ mogą wynikać z tego pewne problemy. (przypadkowa modyfikacja itp) |
|
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. |
|
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. |
|
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 @--,'--,'--- |
|
« 1 » |