ich habe ein mathematisches problem zum einem und zum anderem kann ich das nicht umsetzen ich weis aber nicht wie ich das umsetzen soll.
folgendes problem:
es soll ein parkscheinautomaten programm entstehen.
beim einwerfen eines betrags soll errechnet werden wie lange ich stehen bleiben darf.
in einer viertel stunde werden 50 cent fällig
höchst betrag ist 2€
beispiel: wenn ich 1,85 eingebe wie lange darf ich stehen
könnt ihr mir bei der umsetzung helfen ich weis net wie das gehen soll.
Hallo Talla,
Talla schrieb:
Mir war bisher nicht bekannt das dieses Konzept aus den funktionalen Sprachen stammen soll.
Die definitive Klärung überlasse ich gern den Historikern. Tatsache ist: Funktionale Sprachen sind seit einer ganzen Weile da und eines ihrer zentralen Konzepte ist die Immutabilität. Bei Microsoft wird "hands on" über eine bessere Implementierung des Konzepts nachgedacht. Leute wie Eric Lippert (Senior Developer, C#-Compiler Team) und Joe Duffy (Program Manager, CLR-Team) treiben die Diskussion voran.
Talla schrieb:
Wird dadurch vielleicht klarer warum ich auch so streng auf die Trennung von Object und Referenz geachtet hab? (Im)mutabilität ist ein Feature welches Objekte betrifft. Verweise auf diese Objekte dagegen fallen nicht in dieses Featre sondern sind ne Sache für sich. Selbst mit deinem "funktionalen Auge" versuchst du ein Feature breiter zu machen als es ist.
Ich will hier nicht für Haskell oder F# missionieren. Konrad Rudolf hat's richtig erkannt: Worauf es mir ankommt, ist zu beschreiben, warum es für C#-Anfänger so verdammt schwer zu verstehen ist, dass Strings immutabel sind. Es rührt, meiner unwichtigen Meinung nach, vom Design der Sprache C# her.
Und: Wahre Immutabilität erreicht man leider auch nicht über das Schlüsselwort const, obwohl das Wörtchen manchmal Abhilfe schafft:
const string MEINNAME = "Gantenbein";
static void Main(string[] args)
{
const string meinName = GetName(); //CS0133
}
static string GetName()
{
return MEINNAME;
}
"Der Ausdruck, der 'Variable' zugewiesen wird, muss konstant sein", bemängelt der C#-Compiler in seiner unerschütterlichen Weisheit.
Hier einige interessante Links zum Thema:
http://blogs.msdn.com/ericlippert/archive/2007/11/13/immutability-in-c-part-one-kinds-of-immutability.aspx
http://www.bluebytesoftware.com/blog/2007/11/11/ImmutableTypesForC.aspx
http://blogs.msdn.com/madst/archive/2007/01/23/is-c-becoming-a-functional-language.aspx
http://weblogs.asp.net/bleroy/archive/2008/01/16/immutability-in-c.aspx
gleiche Seite in der Doku:
"By default, the parameterless constructor of the Random class uses the system clock to generate its seed value"
Soweit ich mich erinnerer hat die System clock eine Auflösung von einer Sekunde, mit anderen Worten, der Seed ändert sich im Sekundentakt. Deine drei Instanzen werden wahrscheinlich aber insgesamt weniger als eine Sekunden brauchen um angelegt zu werden, also kriegen sie alle 3 den gleichen seed.
Daher auch die Beobachtung das es manchmal nicht der gleiche Wert war, immer dann wenn der Sekundenwechsel genau zwischen zwei Instanziierungen liegt haste "zufällig" unterschiedliche seeds
An diesem Punkt wäre es dann übrigens angebracht, statt des Strings einen StringBuilder zu verwenden (und mit der von vornherein bekannten Kapazität zu initialisieren!).
Ja, der ist ja auch ganz schön und tut auch das, was er soll, aber mir geht es um einen Dialog, der sowohl Dateien als auch Verzeichnisse auswählen kann.
Es scheint so, als ob ich den selbst machen müsste...