Entwickler-Ecke
C# - Die Sprache - Pi-berechnen
xToast - Mo 12.04.10 18:45
Titel: Pi-berechnen
So, ich habe jetzt mal etwas aus Java in C# übersetzt, womit man, nach wikipedia, einigermaßen pi berechnen kann.
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: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44:
| using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace ConsoleApplication1 { class Program { static void Main(string[] args) { int zahl = Convert.ToInt32("1"); berechne_pi(zahl); Console.ReadLine(); } public static double berechne_pi(int tropfenzahl) { double pi = 0; int innerhalb = 0; int gesamt = tropfenzahl;
while (tropfenzahl > 0) { double dotx = Convert.ToDouble(new Random()); double doty = Convert.ToDouble(new Random());
if (dotx * dotx + doty * doty <= 1) { innerhalb++; } else { }
tropfenzahl--; }
pi = 4 * (double)innerhalb / gesamt; return pi; } } } |
http://de.wikipedia.org/wiki/Kreiszahl <--- statische Bestimmungen
"Das Objekt des Typs "System.Random" kann nicht in Typ "System.IConvertible" umgewandelt werden."
Eine Fehlermeldung. Erscheint beim Compilern...
Moderiert von
Christian S.: Code- durch C#-Tags ersetzt
JüTho - Mo 12.04.10 19:14
Hallo und :welcome:
Unter .NET musst du ganz genau auf die verwendeten Datentypen achten. Random ist eine Klasse, die Zufallszahlen generiert; es ist selbst keine Zahl. Deshalb kann Convert.ToDouble(new Random()) nicht funktionieren.
Du solltest in der
SDK-Doku/MSDN/Hilfe nachlesen, wie mit
Random gearbeitet werden soll. Vor allem sollte nur eine Instanz für das ganze Programm erzeugt werden; die nächste Zufallszahl wird (was für 'ne Überraschung) mit
Next abgerufen. Dazu musst du noch nachlesen, welche Variante für dich am sinnvollsten ist.
Übrigens:
1. Warum schreibst du so und nicht einfacher:
C#-Quelltext
1: 2: 3: 4:
| int zahl = Convert.ToInt32("1"); int zahl = 1; |
2. Statt Convert.ToIrgendwas ist meistens
TryParse oder
Parse sinnvoller (je nach Situation).
3. Laut Überschrift hast du mehrere Fragen. Ich lese nur eine (aber das ist auch sinnvoll: jede Frage gehört in eine eigene Diskussion, aber bitte mit einer richtigen Überschrift und nicht so allgemeinem Bla-bla).
Gruß Jürgen
xToast - Mo 12.04.10 19:33
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: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45:
| using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace ConsoleApplication1 { class Program { static void Main(string[] args) { int zahl = 1; berechne_pi(zahl); Console.ReadLine(); } public static double berechne_pi(int tropfenzahl) { double pi = 0; int innerhalb = 0; int gesamt = tropfenzahl;
while (tropfenzahl > 0) { Random rnd = new Random(); int myZahl = rnd.Next(0, 1000); double dotx = myZahl; double doty = myZahl; if (dotx * dotx + doty * doty <= 1) { innerhalb++; } else { }
tropfenzahl--; }
pi = 4 * (double)innerhalb / gesamt; return pi; } } } |
Keine Fehlermeldung mehr :)
Wenn ich jetzt in die Methode "Main" "Console.WriteLine(pi);" einfüge, kommt die meldung, das "pi" im aktuellen Kontext nicht eysistiert. Was soll ich machen?
//WIe mache ich hier nen C# Quelltext? xD
Moderiert von
Christian S.: Code- durch C#-Tags ersetzt
Kha - Mo 12.04.10 19:51
Sorry, aber so kommen wir wahrscheinlich nicht weiter. Foren sind nicht dazu geeignet, einem die absoluten Grundlagen wie das Auswerten eines Rückgabewertes beizubringen; das können
Bücher [
http://openbook.galileocomputing.de/visual_csharp/] einfach viel besser und effektiver :) . Wenn trotzdem
spezielle Fragen offen bleiben, sind wir natürlich zur Stelle ;) .
xToast hat folgendes geschrieben : |
//WIe mache ich hier nen C# Quelltext? xD |
Du nimmst statt [code] [cs]-Tags oder benutzt direkt das "+" im Editor unter "Bereich" :) .
JüTho - Di 13.04.10 09:08
xToast hat folgendes geschrieben : |
Wenn ich jetzt in die Methode "Main" "Console.WriteLine(pi);" einfüge, kommt die meldung, das "pi" im aktuellen Kontext nicht eysistiert. Was soll ich machen? |
Ich gebe Sebastian recht: Eigne dir die Grundlagen der Programmierung, vor allem mit .NET und C#, zielgerichtet an. Du brauchst vor allem die folgenden Kenntnisse:
* Was sind Datentypen?
* Was sind Variable? Wo und wie werden sie deklariert, initialisiert und verwendet?
* Was ist der Rückgabetyp einer Methode? Wo und wie wird er benutzt?
Jürgen
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!