C# Potenzrechnung mit Schleifen.

07/18/2014 15:19 #Saiirex#1
Hey, da ich derzeit C# für meine Ausbildung "vorlernen" möchte, versuche ich mit hilfe einer Schleife Potenzrechnung zu tätigen. Mir ist bewusst das es dafür die "Math" klasse gibt, die möchte ich aber nicht nutzen da ich eben schleifen nutzen möchte. Mein Code sieht derzeit so aus:

Code:
Console.WriteLine("Gib nun bitte die 1. Zahl ein: ");
zahl1 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Gib nun bitte die 2. Zahl ein: ");
zahl2 = Convert.ToInt32(Console.ReadLine());

for(int zahl3= 0; zahl3 <= zahl2; zahl3++){

ergebnis = zahl1 *= zahl2;

Console.WriteLine(ergebnis);
}
Die Ausgabe ist jedoch falsch.
Es kommt folgendes dabei raus wenn ich 2^5 rechnen möchte:
[Only registered and activated users can see links. Click Here To Register...]

E: Habs jetzt, müsste so aussehen

Code:
                    Console.WriteLine("Gib nun bitte die 1. Zahl ein: ");
                    zahl1 = Convert.ToInt32(Console.ReadLine());
                    Console.WriteLine("Gib nun bitte die 2. Zahl ein: ");
                    zahl2 = Convert.ToInt32(Console.ReadLine());

                    ergebnis = zahl1;
                    for(int i= 0; i < zahl2-1; i++){
                       
                        ergebnis = ergebnis * zahl1;

                        Console.WriteLine(ergebnis);
                    }
Es schein mir jedoch unsauber, gibt es eine möglichkeit es sauberer zu machen?
07/18/2014 15:54 Syc#2
kannst noch aus

Code:
 ergebnis = ergebnis * zahl1;
Code:
 ergebins *= zahl1;
machen.
07/18/2014 20:21 Shawak#3
Code:
Console.WriteLine("Gib nun bitte die Zahl ein: ");
var zahl = Convert.ToInt32(Console.ReadLine());

Console.WriteLine("Gib nun bitte die Potenz ein: ");
var potenz = Convert.ToInt32(Console.ReadLine());

for(int i= 1; i < potenz; i++){
	zahl *= zahl;
	Console.WriteLine(zahl);
}
07/19/2014 12:58 x]vIrus[x#4
Math.Pow(2,5);
07/19/2014 16:02 supercracker13#5
Zu lernzwecken kannste es so machen aber am besten ist wirklich Math.Pow (); weil es kürzer ist und leichter zu nutzen.
Es gibt viele so sachen zb biginteger. Man kann selbst probieren sowas zu erstellen aber es ist um einiges besser das vorgefertigte zu verwenden.
Ist meinet Meinung nach professioneller geschrieben als mein code
07/19/2014 17:19 dowhile#6
Deine Algorithmus ist für potenz = 0 falsch.

Code:
ergebnis = 1
für i = 0 < potenz: 
  ergebnis *= zahl
  i++
07/19/2014 17:49 GameZzWorld#7
Was passiert wenn du beispielsweise 5^3,5 rechnest?
07/19/2014 21:52 dowhile#8
Quote:
Originally Posted by GameZzWorld View Post
Was passiert wenn du beispielsweise 5^3,5 rechnest?
Converter.ToInt32() wird die Nachkommastelle (vermutlich) abschneiden und das Programm würde 5^3 berechnen.
07/19/2014 23:18 #Saiirex#9
Quote:
Originally Posted by dowhile View Post
Converter.ToInt32() wird die Nachkommastelle (vermutlich) abschneiden und das Programm würde 5^3 berechnen.
rundet es nicht auf und macht aus 3,5 vier? Ist ja blöd

E:
Hab das mal mit folgenden Code ausprobiert:

Code:
Console.WriteLine("Bitte gib eine Zahl ein");
int zahl = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Du hast folgende zahl geschrieben: " + zahl);
Console.ReadLine();
kam folgedens:
[Only registered and activated users can see links. Click Here To Register...]
07/19/2014 23:34 tolio#10
[Only registered and activated users can see links. Click Here To Register...]
ist dann angebracht
07/19/2014 23:41 YatoDev#11
Quote:
Originally Posted by xKoRe' View Post
rundet es nicht auf und macht aus 3,5 vier? Ist ja blöd
es gibt eine round methode.
du könntest auch einfach einen anderen datentyp verwenden oder rum konvertieren
07/20/2014 00:41 FreewayC#12
Hi xKoRe',

wie schon gesagt, einfach einen anderen Datentyp verwenden. Bei mathematischen Sachen eigentlich immer double verwenden.

[Only registered and activated users can see links. Click Here To Register...]

Beim einlesen der Zahlen dann Convert.ToDouble verwenden

grüße
07/20/2014 17:17 #Saiirex#13
Jop, ich kenne Double etc, mir war es bei diesem Taschenrechner eigtl. nur wichtig, wie es funktioniert, also das mit Schleifen etc. Die Funktion an sich war mir egal.

Mal ne Frage: Kennt ihr vlt noch ein paar dinge die ich programmieren kann um C# mehr zu lernen? Sollte schleifen, abfragen(if else, switch case) und andere Grundlagen.
07/20/2014 18:56 Black Tiger ツ#14
Quote:
Originally Posted by xKoRe' View Post
Jop, ich kenne Double etc, mir war es bei diesem Taschenrechner eigtl. nur wichtig, wie es funktioniert, also das mit Schleifen etc. Die Funktion an sich war mir egal.

Mal ne Frage: Kennt ihr vlt noch ein paar dinge die ich programmieren kann um C# mehr zu lernen? Sollte schleifen, abfragen(if else, switch case) und andere Grundlagen.
Versuch die Aufgaben mit C# zu lösen:
[Only registered and activated users can see links. Click Here To Register...]

Ansonsten irgendein Projekt starten und drauf los proggen. Wirst schon mit genügend Problemen konfrontiert.
07/21/2014 20:05 FreewayC#15
Hi,

du kannst ja mal versuchen Tic Tac Toe zu programmieren. Da sind deine if´s bestimmt gut aufgehoben :P

gruß