c# Potenz berechnen mit einer Schleife, bitte um HILFE
Servus leute, bin am C# lernen und sollte erstmal nen normalen Taschenrechner mit + - * / erstellen.
alles kein thema.
Nun soll ich diesen Taschenrechner um eine Methode zur Potzenzberechnen erweitern.
Nehmen wir an.
x=Basis y=Exponent
2^3=8 2x2x2
Brauche nun also eine schleife , das er x*x nimmt, speichert, dann wieder *x und das eben solange wie der Exponent eingegeben wurde.
Komme aber absolut nicht drauf.
Wollte eine for schleife:
int x,y; 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 (x=1; x<y; x++)
{
x=x*x;
Console.WriteLine("{0}", x);
}
problem ist, das x hier 1 ist, kann einfach nicht x auf den Wert setzen, den ich Oben eingegeben habe.
kann man nicht irgendwie sagen als Bedingung x*x solange wie y anstatt x++
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;
}
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.
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
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);
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;
}
:o
vorgefertigte methoden verwenden (matt.pow(x, y) oder sowas).
was sollte dein code genau bezwecken ?
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.
Die Schleife ist ja so lange in Ordnung, wenn der Exponent ganzzahlig ist, aber leider gibt es auch nicht ganzzahlige Exponenten.
habs mal so geschrieben:
haut leider ned ganz hin