Autor Beitrag
Ritzeratze
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 101



BeitragVerfasst: Mo 23.09.13 20:05 
Moin,

ich habe da vielleicht ein Verständnisproblem. Beim Potenzieren Basis ^ Exponent wird doch die Basis * Basis errechnet, also z.B. 2 ^ 3 = 2*2*2 = 8.
Wenn ich nun die Basis in die Variable d_BasisWert und den Exponent in die Variable d_ExpoWert stecke, müsste ich mit der folgenden Schleife den Wert errechnen können

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
static double Ergebnis=1;

 for (int i = 1; i <= d_ExpoWert; i++)
     {
      Ergebnis *= d_BasisWert;
     }

Das Ergebnis habe ich mit 1 initialisiert, sonst kommt in der Berechnung immer 0 heraus.
Aber warum kommt bei mir immer 0 heraus. Kann mir jemand einen Tipp geben denn ich glaube ich habe da ein Mathematisches Loch.


Gruss Ritze
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4701
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mo 23.09.13 20:13 
Dir fehlen grundlegende Debuggingfähigkeiten. Damit würdest du wahrscheinlich in null komma nix das Problem selber sehen.
Für den Anfang starte dein Programm doch mal einfach mit F10 (ich gehe davon aus du benutzt Visual Studio) und sieh dir während du schrittweise durch dein Programm springst den Inhalt der benutzten Variablen an. Im Normalfall solltest dir ein Licht aufgehen wenn der Inhalt einer Variablen von deiner Erwartung abweicht.

Ansonsten kann man aus deinem Codeschnipsel rein gar nix ableiten. Wie bräuchten mehr Context.
Ritzeratze Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 101



BeitragVerfasst: Mo 23.09.13 20:26 
Nabend Ralf,

Ne Debugging Erfahrungen sind schon da. ich sehe ja auch das Ergebnis immer 0 bleibt. Aber warum.
Nach dem ersten Lauf müsste Ergebnis den Wert von der Basis haben, da ich Ergebnis mit 1 vorbelegt habe.
Also 1 * 2 = 2; Im nächsten Lauf wird der Zähler erhöht und Ergebnis mit der Basis multipliziert. Dann wird das Ergebnis zugewiesen, also 4.
im dritten Lauf dann 8. Ich sehe den Fehler nicht. Verstanden habe ich das schon.

Gruss Ritze
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4701
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mo 23.09.13 20:36 
Zitat:
ich sehe ja auch das Ergebnis immer 0 bleibt.


Also zummindest am Anfang sollte es ja 1 sein du hast es ja explizit so initialisiert. Wenn du nicht mal das siehst dann sollte das auch ein Hinweis sein.
Ansonsten fehlt uns immer noch der Context.
Delphi-Laie
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1600
Erhaltene Danke: 232


Delphi 2 - RAD-Studio 10.1 Berlin
BeitragVerfasst: Mo 23.09.13 20:41 
Das sehe sogar ich ohne nenneswerte C#-Erfahrung: Ergebnis:=Basis*Basis wird hier berechnet.

Es muß aber Ergebnis:=Ergebnis*Basis heißen.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19274
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 23.09.13 20:44 
user profile iconDelphi-Laie hat folgendes geschrieben Zum zitierten Posting springen:
Das sehe sogar ich ohne nenneswerte C#-Erfahrung: Ergebnis:=Basis*Basis wird hier berechnet.

Es muß aber Ergebnis:=Ergebnis*Basis heißen.
Die fehlt dir hier aber, denn dort in der Zeile steht bereits Ergebnis := Ergebnis * Basis, das *= macht genau das...

Wie d_BasisWert und d_ExpoWert initialisiert sind, ist aus dem Quelltext aber nicht zu ersehen.

Für diesen Beitrag haben gedankt: Delphi-Laie
Ritzeratze Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 101



BeitragVerfasst: Mo 23.09.13 21:32 
ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
 static double Basiswert, Expowert, Ergebnis = 1, ;

 static void Potenzieren()
        {
           
            for (int i = 1; i <= Expowert; i++)
            {
                        
                Ergebnis *= Basiswert;

            }
            
        }


 static void Rechneoperationen (out double ergebnis)
        {

            ergebnis = 0;

            
        switch (wahl)
            {
               
                case "P":

                    Potenzieren();

                Console.WriteLine("Das Ergebnis der Potenzierung ist: {0}", ergebnis);

                    break;


......
Ritzeratze Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 101



BeitragVerfasst: Mo 23.09.13 22:04 
Ok gecheckt. Ich hab jetzt nur noch einen kleinen kosmetischen Fehler.
Die Berechnung stimmt.
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Di 24.09.13 09:53 
Hallo Ritzeratze,

wie du wohl selber erkannt hast, sind static-Variablen keine gute Wahl. Verwende besser lokale Variablen und Rückgabewerte von Methoden. Dann passiert dir beim nächsten Mal nicht nochmal so ein Fehler.