c# Potenz berechnen mit einer Schleife, bitte um HILFE

2 Antworten

Das kann so nicht klappen...

Du nutzt die Variable x als Laufvariable in der for-Schleife, dann multipliziertst du diese mit sich selbst und weist sie der Laufvariable wieder zu.

z=1;
for (i=1;i<y;i++)
{
    z=z*x;
}
Shadehunter 
Fragesteller
 21.09.2013, 16:30

habs mal so geschrieben:

              int x,y,z;
               z = 1;
                Console.WriteLine("Sie haben Potenzen berechnen gewählt");
                Console.WriteLine("Geben sie nun die Basiszahl ein");
                x=Convert.ToInt32(Console.ReadLine());
                Console.WriteLine("geben sie nun den Exponenten ein");
                y = Convert.ToInt32(Console.ReadLine());
                for (int i = 1; i < y; i++)
                {
                    z = z * x;
                }
                Console.WriteLine("wert: {0}", z);  

haut leider ned ganz hin

0
WhiteGandalf  21.09.2013, 16:40
@Shadehunter

Ja, Du mußt natürlich mit dem korrekten Exponenten potenzieren. Nicht mit einem um eins zu kleinen. Gelle?

Übrigens ist es ungemein hilfreich, "Testcode" zu schreiben: Eine Tabelle aus Eingangswerten und Ergebniswerten, wobei die Ausführung Deines relevanten Codes (das ist hier ja nur die Schleife ohne den ganzen Eingabe-Kladderadatsch) mit den jeweiligen Eingabedaten jeweils ein mit den Resultatdaten übereinstimmendes Ergebnis liefern muß.

Eine kleine Rahmenfunktion für beliebige Berechnungen vereinfacht das Leben ungemein.

0
Shadehunter 
Fragesteller
 21.09.2013, 16:47
@WhiteGandalf

irgendwie

egal ob ich

                   z=x*x  oder    z=z*x    oder z=z*y

irgendwie immer Banane :D

0
Shadehunter 
Fragesteller
 21.09.2013, 16:57
@Shadehunter

so habe es hinbekommen. er rechnet nun richtig. 8^8=512

das einzige was mich noch stört, was aber sonst niemanden stören würde.

das er 25^25 nicht richtig rechnet, da anscheinend der Datentyp int32 zu klein ist.

Habe schon die convertierung in flaot oder double versucht, allerdings zeigt er dann beim rechnen +unendlich an

0
Shadehunter 
Fragesteller
 21.09.2013, 17:08
@Shadehunter

was schreib ich da eig, meinte 8^3=512

8^8 macht er 0

problem wenn ich die potenz 2 nehme gibts auch probleme.

hier mal die schleife

             for (int i = 1; i < y; i++)
            {
                z = z * x*z;
            }
            Console.WriteLine("wert: {0}", z);
0
martin7812  24.09.2013, 06:20
@Shadehunter

So wird es ebenfalls nicht funktionieren.

In der Schleife muss man das "<" durch ein "<=" ersetzen. Und das "z * x" war richtig während "z * x * z " falsch ist:

for (int i = 1; i <= y; i++)
{
    z = z * x;
}
0

:o vorgefertigte methoden verwenden (matt.pow(x, y) oder sowas).
was sollte dein code genau bezwecken ?

Shadehunter 
Fragesteller
 21.09.2013, 17:10

mein code soll bezwecken, das ich in einer schleife die potenz ausrechen kann wenn ich eine Basiszahl und einen Exponenten eingebe.

Math.Power haut zwar hin. Doch ich soll es doch bitte mit einer Schleife lösen.

0
Minihawk  21.09.2013, 17:20
@Shadehunter

Die Schleife ist ja so lange in Ordnung, wenn der Exponent ganzzahlig ist, aber leider gibt es auch nicht ganzzahlige Exponenten.

0