Laden...
W
Weyoun myCSharp.de - Member
Dipl.-Ing. für Elektrotechnik Chemnitz Dabei seit 18.02.2006 71 Beiträge
Benutzerbeschreibung

Forenbeiträge von Weyoun Ingesamt 71 Beiträge

29.04.2006 - 22:16 Uhr

Danke für den Tipp! Werde ich für die Zukunft beherzigen!

Gruß, Martin

PS: Die Lösung lautet übrigens "328245326" -> a = 3; b = 9; c = 8

29.04.2006 - 21:50 Uhr

Danke!

Ist schon schlimm, wenn man mehrmals die Woche unterschiedliche Programmiersprachen benutzt. Da haut man dann irgendwann alles durcheinander. 😁

Leider gibt das Programm keine Lösung heraus (irgendwann bricht es mit einer Fehlermeldung ab "Der Index war außerhalb des Arraybereiches")

Kann es daran liegen, dass, wenn der String mal nur 7 oder 8 Zeichen lang ist (kommt vor, wenn relativ kleine 3-stellige Zahlen miteinander multipilizert werden), kein Vergleich der 9-ten Stelle vorgenommen werden kann?
Das wäre sehr schade, da dann das komplette Programm für die Katz' wäre.

Gruß, Martin

29.04.2006 - 21:24 Uhr
static void Main()
        {
            int a = 0;
            int b = 0;
            int c = 0;
            int d = 0;
            int quersumme = 0;
            string e = "000000000";
            

            while (quersumme != 35 | e[8]!="6")
            {
                if (c < 9)
                {
                    c++;
                }
                else
                {
                    if (b < 9)
                    {
                        b++; c = 0;
                    }
                    else
                    {
                        if (a < 9)
                        {
                            a++; b = 0; c = 0;
                        }
                        
                    }
                }
                d = (100 * a + 10 * b + c) * (100 * b + 10 * c + a) * (100 * c + 10 * a + b);
                e = d.ToString();
                quersumme = 0;
                foreach (char ch in e)
                {
                    quersumme += ch - '0';
                }
                }
            Console.WriteLine("a = " + a + " b = " + b + " c = " + c + "--> abc * bca * cab = " + (100*a+10*b+c)*(100*b+10*c+a)*(100*c+10*a+b));
            Console.ReadKey();
        }

Hmh, ich habe jetzt, da es zu viele Einzellösungen gibt, versucht, in die While-Schleife eine zweite Bedingung einzuarbeiten, nämlich, dass die letzte Stelle des Strings e genau 6 sein muss -> leider gibt es einen Compilierungsfehler, nämlich das der Operator != nicht auf strings angewendet werden kann.

Kann man das trotzdem irgendwie hinkriegen?

Gruß, Martin

29.04.2006 - 21:01 Uhr

Alles klar! 🙂

Zum Zweck des Algorithmusses:
Ich bin gerade dabei, ein Rätsel im Knobelforum zu lösen und habe (damit meine Programmierkenntnisse nicht einrosten) ein Programm geschrieben, dass, wenn ich richtig liege, gleich auf Anhieb die korrekte Lösung ermittelt.

Hier der Originaltext des Rätsels:
Eine Sekretärin sollte eine Aufgabe tippen. In der Aufgabe wurde das Produkt von drei dreistelligen Zahlen gebildet, von denen jede die gleichen Ziffern a, b, c enthielten, nur in anderer Reihenfolge: abc, bca, cab. Beim Schreiben des Produkt-Resultats 234532286 unterlief der Fehler, nur die Endziffer 6 ist korrekt, die anderen Ziffern sind durcheinander geraten. Wie lautet das richtige Resultat?

Ich hoffe, ihr haltet mich jetzt nicht für verrückt. 😁

Gruß, Martin

29.04.2006 - 20:43 Uhr
static void Main()
        {
            int a = 0;
            int b = 0;
            int c = 0;
            int d = 0;
            int quersumme = 0;
            string e = "000000000";
            

            while ((a*b*c < 504) | (a==b) | (b==c) | quersumme != 35)
            {
                if (c < 9)
                {
                    c++;
                }
                else
                {
                    if (b < 9)
                    {
                        b++; c = 0;
                    }
                    else
                    {
                        if (a < 9)
                        {
                            a++; b = 0; c = 0;
                        }
                        
                    }
                }
                d = (100 * a + 10 * b + c) * (100 * b + 10 * c + a) * (100 * c + 10 * a + b);
                e = d.ToString();
                foreach (char ch in e)
                {
                    quersumme += ch - '0';
                }
                }
            Console.WriteLine("a = " + a + " b = " + b + " c = " + c + "--> abc * bca * cab = " + (100*a+10*b+c)*(100*b+10*c+a)*(100*c+10*a+b));
            Console.ReadKey();
        }

So ist mein bisheriges Programm und bereits beim zweiten Durchlauf der While-Schleife stimmt der Wert für "quersumme" nicht mehr.

Gruß, Martin

29.04.2006 - 20:29 Uhr

Mal noch 'ne Frage:

Ich habe diese foreach-Schleife nun innerhalb einer While-Schleife eingebettet.
In kurzen Worten: Es soll so lange die Quersumme berechnet werden, bis der Wert "35" erreicht ist.
Leider wird die Variable "ch" nicht bei jedem Durchlauf "genullt", sondern behält den Wert des letzten Schleifendurchlaufes.

Wie kann ich "ch" am besten vor jedem Durchlauf der While-Schleife auf "0" zurücksetzen? Es ist ja eine lokale Variable, die nur innerhalb der foreach-Schleife exisiteirt, doch innerhalb der foreach-Schleife kann ich ja schlecht >>ch = "0"<< schreiben.

Wie mache ich das am besten?

Gruß, Martin

29.04.2006 - 19:47 Uhr

Original von kiar
moin,

setze einfach einen Breakpunkt und schaue dann mit F11 was passiert.

raik

Genau das habe ich vor 30 Sekunden gemacht und somit herausgefunden, wie das ganze funktioniert. 😁

29.04.2006 - 19:45 Uhr

Probiert habe ich es und die Quersumme klappt auch, doch verstehe ich wie gesagt den Quellcode nicht ganz (wie die foreach-Schleife genau funktioniert).

Gruß, Martin

PS: Jetzt habe ich etwas mehr verstanden. 😁

29.04.2006 - 19:32 Uhr

Original von herbivore
Hallo

hatte nicht richtig geguckt. Quersumme ist so besser:

  
int quersumme = 0;  
foreach (char ch in a) {  
   quersumme += ch - '0';  
}  
  

herbivore

Oh Gott, mit "foreach" habe ich noch nie zu tun gehabt.
Zudem leuchtet mir der Quellcode nicht voll ein.

Dehalb noch mal die Frage, ob meine Programmzeile weiter oben stimmt (mit den fünf int.parse Wandlungen).

Gruß, Martin

29.04.2006 - 19:13 Uhr

Danke!

Also so?

Quersumme = int.parse(a[0]). + int.parse(a[1]) + int.parse(a[2]) + int.parse(a[3]) + int.parse(a[4]);

Sorry, falls ich jetzt "totalen Müll" verzapft haben sollte. 😁

29.04.2006 - 19:05 Uhr

Hallöchen!

Ich habe in der Hilfe von Visual Studio 2005 keine Möglichkeit gefunden, einen String wieder in einen Integer zu wandeln.
Folgendes möchte ich in einem Unterprogramm machen:
Aus dem String, der nur Ziffern enthält die Quersumme berechnen!
Bsp.:

string a ="12345";
Quersumme = a[0].ToInt() + a[1].ToInt() + a[2].ToInt() + a[3].ToInt() + a[4].ToInt();

Leider gibt es den Befehl char.ToInt() nicht (oder ich finde ihn nicht).

Wie kann man das also am einfachsten machen?

Vielen Dank schon mal im Voraus!

Gruß, Martin

21.03.2006 - 20:51 Uhr

Danke für dem Hinweis!

Mal sehen, ob ich es so mache oder doch die 75 if-Fragen stelle (die Fragen habe ich ja bereits als Methoden definiert -> da müsste ich jede Menge löschen und neu tippen). 😁

Hauptsache ist ja am Ende, dass es läuft und bekanntlich führen viele Straßen nach Rom. =)

Schade, dass man Methoden nicht wie Variablen in Arrays stopfen kann. 🙁

Wenn ich das früher gewusst hätte, hätte ich mir einiges schenken können.

Gruß, Martin

21.03.2006 - 20:26 Uhr

So was in der Art will ja machen, aber wie soll ich die Fragen in ein Array stecken?

Eine Frage sieht bei mir so aus (deshalb dachte ich, dass solche Ausdrücke in Methoden hinein müssen):

private void FrageLeicht01()
        {
            Hauptfenster.Text = "Hier wird die erste Frage gestellt";
            AntwortA.Text = "AntwortA";
            AntwortB.Text = "AntwortB";
            AntwortC.Text = "AntwortC";
            AntwortD.Text = "AntwortD";
        }

Wie kann ich denn nun diese Fragen in ein Array stecken?

Gruß, Martin

21.03.2006 - 20:14 Uhr

Mist, dann werde ich mir mal alle Mühe geben, verständlicher zu klingen. 😁

  1. Die drei Int Arrays lasse ich erst mal stehen (sehe momentan keinen Grund, sie in bool umzuändern).

  2. Zu den Methoden:
    Ich habe 75 Methoden, die sich auf die 75 unterschiedlichen Fragen beziehen, ganz am Schluss des Programms untereinander geschrieben, damit ich als Programmierer eher die Übersicht behalte, wenn ich die Fragen mal gegen andere Austauschen will.
    Mein Problem ist das Aufrufen dieser 75 Methoden:
    Je nachdem, ob gerade leichte, mittlere oder schwere Fragen an der Reihe sind, muss ich (so habe ich es im Moment) je 3 mal 25 if Anfragen hinschreiben, und das bei allen 4 "Antwort-Buttons"
    Das sieht dann in etwa so aus:

if (ZufallVariable01 == 0){Methode01();}//01-ste leichte Frage soll gestellt werden
...
ZufallVariable02 == 24) {Methode25();}//25-ste leichte Frage soll gestellt werden

Das ganze dann noch für die mittleren und schweren Fragen.

Was ich mir nun vorgestellt habe, ist es, alle 75 Methoden in einer Art Array zu stecken, so dass man beim direkten Aufruf der x-ten Position (diese Position ist gleich der ZufallsVariable) dieses Arrays automatisch die x-te Methode ausführt.
Somit könnte man sich die ganzen If-Anweisungen sparen.

Ist so was möglich oder nicht?

Gruß, Martin

21.03.2006 - 19:30 Uhr

Hallöchen!

Ich habe heute (ohne ins Forum zu schauen) folgende Lösung gebastelt:

int [] leicht = new int [25] {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
int [] mittel = new int [25] {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
 int [] schwer = new int [25] {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}; 

Also drei Arrays, bestehend aus jeweils 25 integer Werten.
Nun kann man ganz einfach die Werte abragen UND gegenenfalls verändern.

Nun habe ich noch 'ne Frage:
Ist es möglich, ein Array (oder etwas vergleichbares) zu definieren, indem keine Variablen enthalten sind, sondern mehrere Methoden? Folgende Idee ist mir nämlich heute Nacht gekommen:
Man definiert drei Zufallsvariablen, die den Wert zwischen 0 und 24 annehmen. Dann drei Arrays mit je 25 int-Werten, um den Status der Fragen abzuklären ("0" = verbraucht; "1" = unverbraucht (soweit bin ich ja bereits). Nun noch ein Array, indem die 75 Methoden enthalten sind, die die 75 Fragen beinhalten.
Anschließend kann man genau die Methode aufrufen, die an der Stelle des Array exisitiert, wie der Wert der Zufallsvariable ist. Die Methoden an sich werden dann erst weiter unten definiert.
Beispiel für den Aufruf:

Methoden01bis75[ZufallVariable01];//bei Zufallsvariable ==4 wird dann z.B. die 5-te Methode des Arrays aufgerufen

Wenn sowas möglich ist, wie muss man dann solch ein Array, bestehend aus Methoden, definieren? So in etwa? Was kommt dann an die Stelle der "???"?

??? [] Methoden01bis75 = new ??? [25] {Methode01(),Methode02(),Methode03(),...,Methode75()};

Vielen Dank und einen schönen Abend noch, Martin!

20.03.2006 - 19:54 Uhr

Ich glaube, ich brauche mal wieder eine "Holzhammer-Therapie".

Wie meinst du das mit "nimm die ersten 5 Fragen" Ich gaube, dich gründlich missverstanden zu haben. Die Fragen sollen doch zufällig kommen (5 aus 25) und nicht in einer Reihenfolge.
Oder wie hast du das gemeint?

Sorry, ist schon ein bischen spät (wusste heute schon um 4 Uhr aufstehen).

Gruß, Martin

20.03.2006 - 19:42 Uhr

Keine gute Idee gegen Ende?

Es sollen doch von den 25 möglichen nur 5 ausgesucht werden, danach wird abgebrochen.
Es kommen doch zuerst 5/25 leichte, dann 5/25 mittlere und zum Schluss 5/25 schwere Fragen.

Also irgendwie schaue ich wie eine Kuh ins Uhrwerk. 😭

Strings darf man nicht verändern (auf Bitebene) -> ich glaube mich zu erinnern, dass soetwas bei C erlaubt ist -> bin mir aber nicht 100 prozentig sicher.
Dann wollte ich folgendes probieren: statt eines 15-stelligen Strings eine uint Variable definieren, die aus lauter "1" besteht (zumindest die ersten 25 von 32 Bit).

Leider kann man auf eine int Variable ja nicht à la "variable[6] = 0" zugreifen, sondern nur über äußerst komplizierte Operationen, bei denen man zuhauf ">>", ">>", "&", "|" und "~" benutzen muss -> Leider sehe ich da nicht so ganz durch.

Gibt es denn keine elegantere Alternative, auf spezielle Bits von int-Zahlen zuzugreifen (sowohl Abfrage als auch Manipulation)?

Gruß, Martin

20.03.2006 - 17:24 Uhr

OK, danke!

Logische Bitoperationen habe ich ganz vergessen.

Mal sehen, ich werde mal ein bischen nachgrübeln und melde mich dann wieder.

Tschau, Martin (ich muss jetzt leider weg)

20.03.2006 - 17:18 Uhr

Original von talla
75x ne feste Bedingung? Da scheint aber was extrem redundant zu sein. Kenn den Code natürlich nicht aber glaube da kannst du noch mehr in Funktionen auslagern, so dass du weniger oft gleichen Code schreiben musst.

Na, ich habe mir das so vorgestellt:
bezieht sich erstmal nur auf die leichten 25 Fragen, die mittleren und schwere kommen dann noch hinzu

if (Zufallsvariable == 1) {Fragestellung01();}
if (Zufallsvariable == 2) {Fragestellung02();}
if (Zufallsvariable == 3) {Fragestellung03();}
...................................................................
if (Zufallsvariable == 25) {Fragestellung25();}

Unten stehen dann die einzelnen Fragestellungen.

Gruß, Martin

20.03.2006 - 17:15 Uhr

_Original von talla_Ich denke die Aussage ist eindeutig, du kannst keine einzelnen Zeichen eines Strings über den Indexer ändern(weil ein Stringobjekt nicht änderbar ist). Wobei natürlich klar sein muss, dass das hier

leicht[ZufallVariabe01]  

der Indexerzugriff ist.

Wenn ein String nicht änderbar ist, soll das etwa heißen, dass man die einzelnen Stellen des Strings nicht manipulieren kann?
Das muss aber irgendwie passieren! Nachdem die x-te Frage gestellt wurde, muss die x-te Stelle des String von "1" auf "0" gesetzt werden, damit sie nicht doppelt aufgerufen werden kann.

Soll das jetzt heißen, dass das gar nicht möglich ist? Ich bin verwirrt.

Gruß, Martin

20.03.2006 - 17:07 Uhr

Ja, eine Zufallszahl von 0 bis 24 geht auch. 😉

Dann müsste ich aber einiges wieder umschreiben, weil ich bereits die 3 mal 25 Fragen als Methoden definiert habe (die Fragen an sich fehlen noch) und auch die Bedingungen, wann welche Frage erscheinen soll.

Wenn also die Zufallsvariable gleich 25 ist, dann soll eben genau die Frage 25 genommen werden. Wenn ich das jetzt auf den Bereich von 0 bis 24 umstelle, muss ich die ganzen Bedingungen wieder ändern (75 mal!!!)
Da ist es einfacher, den String um eine Stelle zu verlängern. Es schadet ja nix! 😉

Gruß, Martin

20.03.2006 - 16:40 Uhr

Ei! Ich sehe gerade, dass z.B. leicht[24] in Wirklichkeit auf die 25-ste Stelle zufreift! Dann ist die erste Stelle wahrscheinich leicht[0].

Also muss ich den String auf 26 Stellen erweitern -> das dürfte keine Probleme geben, da nur auf die 2-te bis 26-ste Stelle des Strings zugegriffen wird, was ja dann den Zufallszahlen 1 bis 25 entspricht, gelle!?!

Gruß, Martin

20.03.2006 - 16:16 Uhr

Ich Hirni!!! 😁 So ein Anfängerfehler kann aber auch nur mir passieren.

Dann hätte der Compiler aber gleich sagen können, dass an dem "=" was faul ist und nicht zwei unverständliche Fehlermeldungen ausspucken müssen.

Na jetzt klappt es erst mal und ich kann mit dem Programm forfahren. =)

Gruß, Martin

20.03.2006 - 16:00 Uhr

Danke, wieder was dazugelernt!

1 Problem gelöst, 2 neue (die vorher nicht da waren) hinzugekommen:

Fehler 1 Einer Eigenschaft oder einem Indexer "string.this[int]" kann nichts zugewiesen werden -- sie sind schreibgeschützt.
Fehler 2 Eine implizite Konvertierung vom Typ "char" in "bool" ist nicht möglich.

Das ist doch zum Haareausraufen. 😉

Gruß, Martin

20.03.2006 - 15:48 Uhr
string schwer = "1111111111111111111111111";
char Zufallspruefer = '0';

......................................................................................................

private void Zufall01()
        {
            do
            {
                Random random01 = new Random();
                int ZufallVariable01 = random01.Next(1, 25);
                Meldungsfenster.Text = ZufallVariable01.ToString();
            }
            while (leicht[ZufallVariabe01] = Zufallspruefer);

Hallöchen! Ich bin gerade dabei, mein "Millionärs-Programm" zu tunen.
Dabei soll es unter anderem Zufallsabfragen geben, damit nicht immer die selben Fragen gestellt werden.

In obiger Methode erzeuge ich zuerst eine Variable namens "ZufallVariable01" zwischen 1 und 25. Anschließend soll überprüft werden, ob die Stelle des Strings "leicht" (25 Zeichen lang für 25 Fragen vom Typ Leicht), die vom Zufallsgenerator generiert wurde, den char-Wert "0" besitzt.
Wenn ja (das bedeutet im fertigen Programm, dass die Frage bereits gestellt wurde), dann soll der Zufallsgenerator eine neue Zahl ausspucken und zwar so lange, bis eine noch nicht gestellte Frage ausgewählt wird.

Leider bekomme ich beim Kompilieren folgende Fehlermeldung:
"Der Name "ZufallVariabe01" ist im aktuellen Kontext nicht vorhanden."

Woran kann es liegen? Kann es sein, dass man den String nicht auf diese Art und Weise abfragen darf? Wie denn sonst?

Danke und Gruß, Martin

PS: Sorry, ich habe in der letzten Programmzeile einen Buchstaben vergessen (ZufallVariabe01 statt ZufallVariable01) -> doch die Fehlermeldung kommt noch immer.

18.03.2006 - 14:12 Uhr

Ne, ne, ich werde niemals einen "echten Song" in das Programm nehmen (ist eh selbst mit MP3 Komprimierung viel zu groß, vor allem, wenn man derer 30 hat. -> Wer will schon 100 MB an Daten saugen, nur um das kleine Programm zu starten?). 😉
Eher möchte ich den Song oder was auch immer als Midi (z.B. 16 Spuren) selber "komponieren". Wozu gibt es schließlich Midi-Composer? 😉

Das düfrte dann wohl keine GEMA-Probleme geben, oder?

Gruß, Martin

18.03.2006 - 13:42 Uhr

Alles klar und dankeschön!

Ich bin gerade am Grübeln, das Projekt um folgende Schritte zu erweitern:

  1. Statt 15 Fragen, die immer wieder gestellt werden (mit der Zeit sehr langweilig) lieber 75 Fragen (je 25 der 3 Kategorien leicht, mittel, schwer), von denen jeweils 5 per Zufallsgenerator generiert werden.
  2. Erweiterung um multimediale Effekte -> z.B. das Starten von Musik (interessant bei Rätseln der Art "Wer sang das?" oder "Wer komponierte das".

Bei Tei 1 habe ich schon konkrete Vorstellungen, nur bei Teil 2 bin ich mir noch unsicher (z.B. bin ich mir unsicher, ob zum Abspielen der Musik auf dem Zielcomputer dann ein entsprechender Media Player installiert sein muss, oder ob die Musik automatisch vom Programm gestartet wird (so wie manchen Websites, wo der Webbrowser die Musik ohne extra Mediaplayer abspielen kann [zumindest bei Midi-Melodien]).

Gruß, Martin

18.03.2006 - 06:34 Uhr

OK, Danke!

Also werde ich mal mit Delphi 6.0 ein bisschen arbeiten (wozu hat nat man denn die Software damals als Student von der Hochschule bekommen, wenn man sie nicht nutzt?) 😉

Natürlich werde ich auch versuchen, in C# weiter voranzukommen.

PS: Noch eine Frage:
Im Buch "C# 2005 - Schritt für Schritt" von Microsoft Press ist eine 180 Tages-(Voll-)Version von Visual Studio 2005 Professional. Kann man diese Software parallel zur Visual C# 2005 Express laufen lassen, oder muss die Express-Version erst deinstalliert werden?

Gruß, Martin

17.03.2006 - 21:06 Uhr

@ Waschbecken

Delphi 6.0 habe ich noch aus Studienzeiten und mit Pascal kann ich einigermaßen umgehen (hatten wir bereits in der 7-ten Klasse in Informatik) 😉

Und du denkst, dass die mit Delphi erstellten Programme auf jedem Rechner (zumindest jedem Windows Rechner) laufen, oder gibt es da auch Einschränkungen in der Form, dass auf dem Zielrechner etwas installiert sein muss?

Wenn dass klappen würde, wäre es ja echt super!

PS: Ich habe das Rätsel jetzt im Knobelforum so eingestellt wie es ist (C#)
Vielleicht ist ja der Eine oder Andere ein Knobelfan! Neuzugänge sind stets willkommen! So, nun aber genug der Schleichwerbung! 😉

Gruß, Martin

17.03.2006 - 20:24 Uhr

OK, mal sehen, wie es im Knobelforum ankommt. 😉

Vielleicht haben wir in einigen Jahren das Problem nicht mehr, wenn in Windows Vista alles schon von Beginn an integriert ist. 😉

17.03.2006 - 20:14 Uhr

Zwischen "man kann es tun" und "man weiß, wie das geht" ist aber ein Unterschied. 😉

17.03.2006 - 20:08 Uhr

Schade!

Also wird es wohl so aussehen:

  1. Ich muss alle im Knobelforum bitten, sich NET2.0 zu installieren oder
  2. Ich muss das Programm in Java noch mal schreiben, in der Hoffnung, dass alle Java-Runtime (stellt sich auch dort wieder die Frage nach der Version) installiert haben.

Perfekt wäre es, wenn man einfach so ein Win32-Anwendung programmieren könnte, die auf jedem 32-Bit-Windows lauffähig wäre (schön wär's). 😉

Gruß, Martin

17.03.2006 - 19:55 Uhr

OK, keine Diskusion mehr zu diesem Thema! 😉

Andere Frage: @ x86fanboy

Du sagst, dass im SP2 das Net1.1 enthalten ist?
Sehr seltsam, denn mein Rechner hat SP2 plus Net2.0 und beim Windows-Update steht bei mir immer zusätzlich Net1.1 zur Verfügung. Also kann im SP2 doch gar kein Net1.1 enthalten sein, oder doch?

Gruß, Martin

17.03.2006 - 19:25 Uhr

Danke für den gutgemeinten Ratschlag, aber was würdest du tun, wenn du im Knobelforum wärst und plötzlich müsstest du 30 MB oder mehr downloaden, nur damit das Programm funktioniert? Es gibt noch Leute wie mich, die mit ISDN im Internet sind (Glasfaser sei dank).

Ich glaube, dass kann ich den armen Seelen nicht zumuten.😉

Zu dem anderen Punkt: Du meinst also, dass es prinzipiell möglich ist?

Gruß, Martin

17.03.2006 - 19:16 Uhr

Danke für die Bemühungen! Doch ich habe ein viel größeres Problem:

Dazu möchte ich mal die Karten offen auf den Tisch legen (bitte nicht auslachen):

Zu C# bin ich vor 2 Monaten gekommen, um meine Programierkenntnisse zu erweitern. Es macht auch supi viel Spaß, mal was Neues auszuprobieren. Dann habe ich als erste größere Anwendung "Wer wird Millionär" erstellt, weil ich das eh schon immer mal vorhatte und dann anschließend ins www.knobelforum.de einzustellen (bin ein begeisterter Knobler).
Nun hatte ich mich ganz in das Projekt hineingesteigert, und dabei habe ich ganz vergessen, dass das Programm (die .exe-Datei) nur auf Rechnern mit NET2.0 Framework läuft. Das ist mir erst jetzt wieder eingefallen).

Nun habe ich zwar ein funktionsfähiges Programm, kann es aber nicht veröffentlichen, da die meisten Rechner kein .NET2.0 installiert haben (das behaupte ich einfach mal).

Gibt es irgendeine Möglichkeit, das Programm doch auf allen Rechnern ausführen zu können, oder muss ich dann alles noch mal von Anfang an in einer anderen Programmiersprache (Java) erstellen?

Wie gesagt, bitte nicht lachen, ich habe mir bereits vorhin in den A..... gebissen. 😉

Gruß, Martin

17.03.2006 - 18:48 Uhr

OK, ich glaube, das lasse ich lieber sein (läuft eh nur mit dem IE, und wer hat den schon noch?) 😉

Na gut, dann werde ich die Datei auf der Homepage eben als link anbieten, (erst downloaden, dann ausführen).

Gruß, Martin

17.03.2006 - 16:52 Uhr

Habe gerade noch einen Fehler ausgemerzt (jetzt kann man die verbrauchten Joker wirklich nur noch einmal benutzen).

@talla
Das habe ich jetzt nicht ganz verstanden, wie du das meinst?!?

17.03.2006 - 16:17 Uhr

Ich möchte, dass, wenn jemand die Seite lädt, die Anwendung automatisch auf dessen Rechner gestartet wird (falls das sicherheitstechnisch vertretbar ist).

17.03.2006 - 16:10 Uhr

So, ich habe im Projekte-Forum nun mein Millionärs-Programm veröffentlicht!

Vielleicht interessiert es ja den ein oder anderen (die Fragen sind nicht ganz einfach). 😉

Gruß, Martin

17.03.2006 - 16:06 Uhr

Hallöchen!

Das ist mein erstes selbst erstelltes C# Programm in Form eines Windows-Forms.
Was haltet ihr davon?

PS: Wem die vielen goto's nicht gefallen, der braucht nicht zu verzweifeln: die werden in der zweiten Revision verschwunden sein. 😉

Noch ein paar Fragen:

  1. Im Ordner .../bin/debug sowie im Ordner .../obj/debug gibt es jeweils eine Datei "Millionär.exe" (je 48 kByte groß). Sind diese Dateien identisch oder unterscheiden sie sich irgendwie?
  2. Was muss ich eigentlich machen, wenn ich die Datei "Millionär.exe" so in eine Webseite einbauen will, dass die Anwendung sofort gestartet wird?

Nun denn, ich wünsche euch viel Spaß beim knobeln! 😉

Gruß, Martin

15.03.2006 - 19:48 Uhr

Original von herbivore
Hallo Weyoun,

Davon abgesehen wurden gotos zu Assemblerzeiten erfunden, mittlerweile gibt es besseres. Du würdest ja vermutlich auch nicht wollen, dass du mit Medikamenten aus den 50ern behandelst wirst, wenn es heute wesentlich bessere gibt.

Deshalb kommen mir die goto's so bekannt vor. 😁
Im Studium haben wir viel mit Intels 8086-er sowie Motorola-DSP's in Assembler programmiert. Und da waren goto's üblich. (bei der C-Programmieung haben wir sie dann nicht mehr so oft benutzt).

Na, gut, ich werde mir den Tipp zu herzen nehmen.

Erst werde ich das Programm aber im jetzigen Stil beenden (viel fehlt ja nicht mehr) und anschließend werde ich es gemäß euren Tipps "modifizieren"

Alles Klar? 😉

Gruß, Martin

15.03.2006 - 18:44 Uhr

Vielen Dank! Mit Close () klappt es -> ich hatte gedacht, dass man Form.Close() eingeben muss. 😉

Es war mir übrigens klar, dass sich gleich über meine goto's beschwert wird.
Ich sage dazu immer folgendes: Wenn sie zu nichts taugen würden, dann wären sie nicht erfunden wurden.
Und das Programm läuft doch absolut fehlerfrei, also was soll's?

Wenn ich jetzt als Programmierer arbeiten würde, dann könnte ich mir vorstellen, einen anderen Stil zuzlegen, aber dieses Programm ist doch bloß Hobby. 😉

Na gut, ich werde mal sehen, wenn ich etwas Zeit habe überarbeite ich das ganze nochmal à la hurricane. 😉

PS: Wenn das Programm fertig ist, stelle ich es mal hier ein (aber erst die Fragen lösen und dann den Code begutachten!!!) 😉

Gruß, Martin

15.03.2006 - 11:18 Uhr

Hallöchen, da bin ich wieder!

Hatte in letzter Zeit wenig Zeit, doch nun habe ich mal in den beiden obigen Büchern ("Schritt für Schritt" sowie "Windows-Forms") geschmökert. Die Bibliothek hatte die Bücher noch nicht, doch sie hat sie bestellt, nachdem ich diesen Wunsch geäußert habe. Das nenne ich echt Service!!! Das hat nicht jede Stadtbibliothek zu bieten. 1 Woche später konnte ich die Bücher ausleihen. 😉

NUn gut, das "Millionärs-Programm" ist zur Zeit fast fertig (ich muss mir bloß noch entsprechende Fragen sowie deren Antworten "einfallen lassen").

Dazu habe ich noch eine Frage an die Experten:
Wenn ich z.B. das falsche Antwortfeld anklicke, soll

  1. Ein Popup aufgehen, dass die Antwort falsch ist UNS

  2. Anschließend soll das Programm terminiert werden (komplette Beendigung)

  3. habe ich hinbekommen, aber 2) nicht. Ich habe zwar zwei Befehle (Form.Close bzw. Application.Exit) herausgefunden, doch gibt es jedesmal Fehlermeldungen beim Compilieren

Anbei ein kleiner Code-Ausschnitt:


private void AntwortA_Click(object sender, EventArgs e)
        {
            if (AntwortButtonZaehler == 50) { MessageBox.Show("Bitte klicken Sie erst auf Start, um das Programm zu beginnen!"); }
            if (AntwortButtonZaehler <= 0) { MessageBox.Show("Sie haben diese Frage bereits korrekt beantwortet! Bitte klicken Sie auf 'nächste Frage'!"); goto SchlussA; }
            if (Fragenzaehler == 1) { MessageBox.Show("Leider falsch! Somit ist das Programm beendet! Probieren Sie es später doch noch einmal");/*Programmabbruch*/ }



        SchlussA: ;
        }

Nun hätte ich gern gewusst, was ich anstelle von /Programmabbruch/ schreiben soll?!?

Vielen Dank und liebe Grüße, Martin

27.02.2006 - 10:21 Uhr

Danke für den Link!

Da ich jeztz in den nächsten Minuten eh zur "Bibo" fahren muss (habe noch Bücher abzugeben), kann ich ja nachfragen, ob sie die beiden Bücher haben, dann habe ich sie ja auch kostenlos. 😁

Gruß und Tschüß (ich muss jetzt weg), Martin! 😁

27.02.2006 - 10:03 Uhr

Was genau ich machen will, ist eigentlich dem beigefügten Programm zu entnehmen:
Ich will ein "Wer wird Millionär" Spiel erstellen, bei dem durch Drücken bestimmter Buttons unterschiedliche Texte in den unterschiedlichen Textausgabefenstern erscheinen soll.

Bsp. 1:
Drücken vom "Start-Button" -> der Begrüßungstext soll verschwinden -> dafür soll die erste Frage erscheinen, sowie die 4 Antwortmöglichkeiten erscheinen
Bsp.2:
Drücken von "50:50 Joker" -> 2 der 4 Antworten sollen verschwinden -> gleichzeitig soll der Joker für die Dauer des Spieles gesperrt sein (ist nur einmal nutzbar)

Ich denke mal, das Programm ist ziemlich komplex und ohne ein gut geschriebenes, leicht erklärendes Buch nicht zu schaffen ist (zumindest nicht von einem Newbee wie mir, der bisher immer nur mit Konsolenprogrammen (C und Assembler) zu tun hatte und für den die Programmierung von "Windows-Forms" Neuland ist).

Gruß, Martin

27.02.2006 - 09:46 Uhr

Häh?
Das ist doch C und nicht C#!!!
C kann ich doch. 😁

27.02.2006 - 09:30 Uhr

Das Programm habe ich doch bereits (siehe meine "Entwicklungsumgebung) von der vorletzten DVD der c't.
Und die Hilfe dort ist "mäßig". =)

Ich gebe jetzt erstmal in die beiden Bibliotheken und leihe mir die beiden Bücher von Microsoft aus (wenn sie nicht gerade entliehen sind).

Gruß, Martin

26.02.2006 - 15:16 Uhr

OK, danke!

Ich werde morgen gleichmal in die TU- sowie die Stadtbibliothek gehen und versuchen, die Bücher auszuleihen.
Dann kann ich mir in Ruhe ein Bild über die Thematik machen und später immer noch das eine oder andere Buch kaufen (wenn es mir gefällt).

Wenn es nicht geht, werde ich es bei Amazon bestellen (der Rückkaufwert bei ebay und Amazon Market Place ist ja nicht zu verachten (fast kein Wertverlust).

Bei welchem Buch steht mehr (und natürlich verständlich) über Windows Forms drin:

  1. Microsoft Visual C# 2005 - Schritt für Schritt oder
  2. Windows Forms-Programmierung mit Visual C# 2005?

Gruß, Martin

26.02.2006 - 12:27 Uhr

Aha, Danke!

Das "Windows.Forms-Programmierung" Buch von M$ ist mit 40 Euronen etwas happig gemessen. mal sehen, ob ich es in der TU-Bibliothek oder auch der Stadtbibliothek bekomme.

Zu dem anderen Buch von M$ (steht in meiner Frage) könnt ihr nichts sagen?
Kostet "nur" 19.90 und ist für Einsteiger konzipiert -> es besitzt eine DVD mit Visual C# 2005 Express sowie diverse Programmbeispiele auf CD.

Gruß, Martin

PS: Den Guide zu C# habe ich durchgelesen, doch leider ist er nicht vollständig (nach Teil 3 geht es nicht weiter). Außerdem konnte ich dort keine befriedigenden Antworten finden. =)

26.02.2006 - 10:39 Uhr

Danke für deine Meinung!

Ich habe folgendes Buch recherchiert, dass für das Erlernen der Programmierung unter Visual C# geeignet ist:
Buch
Was haltet ihr davon? Bei Amazon war leider keine Rezension darüber zu finden.
PS: Eigentlich brauche ich nur das Buch, Visual C# 2005 Express habe ich ja bereits, aber dieses Buch wird halt nur mit CD verkauft, oder gibt es das in ähnlicher Form auch ohne CD?

Danke und Gruß, Martin!