Autor Beitrag
xToast
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27



BeitragVerfasst: Mo 12.04.10 18:45 
So, ich habe jetzt mal etwas aus Java in C# übersetzt, womit man, nach wikipedia, einigermaßen pi berechnen kann.
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:
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)
            { // generiere Tropfen und addiere je nach Zugehörigkeit
                double dotx = Convert.ToDouble(new Random());
                double doty = Convert.ToDouble(new Random());

                if (dotx * dotx + doty * doty <= 1)
                {
                    // Punkt liegt innerhalb des Kreises
                    innerhalb++;
                }
                else
                {
                    // Punkt liegt außerhalb des Kreises
                }

                tropfenzahl--;
            }

            pi = 4 * (double)innerhalb / gesamt;
            return pi;
        }
    }
}

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 user profile iconChristian S.: Code- durch C#-Tags ersetzt


Zuletzt bearbeitet von xToast am Mo 12.04.10 19:29, insgesamt 1-mal bearbeitet
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: 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:
ausblenden C#-Quelltext
1:
2:
3:
4:
// seltsam:
int zahl = Convert.ToInt32("1");
// direkt:
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 27



BeitragVerfasst: Mo 12.04.10 19:33 
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:
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)
            { // generiere Tropfen und addiere je nach Zugehörigkeit
                Random rnd = new Random();
                int myZahl = rnd.Next(01000);
                double dotx = myZahl;
                double doty = myZahl;
                if (dotx * dotx + doty * doty <= 1)
                {
                    // Punkt liegt innerhalb des Kreises
                    innerhalb++;
                }
                else
                {
                    // Punkt liegt außerhalb des Kreises
                }

                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 user profile iconChristian S.: Code- durch C#-Tags ersetzt
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: 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 einfach viel besser und effektiver :) . Wenn trotzdem spezielle Fragen offen bleiben, sind wir natürlich zur Stelle ;) .

user profile iconxToast hat folgendes geschrieben Zum zitierten Posting springen:
//WIe mache ich hier nen C# Quelltext? xD
Du nimmst statt [code] [cs]-Tags oder benutzt direkt das "+" im Editor unter "Bereich" :) .

_________________
>λ=
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Di 13.04.10 09:08 
user profile iconxToast hat folgendes geschrieben Zum zitierten Posting springen:
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