lempy Geschrieben 30. Mai 2012 Geschrieben 30. Mai 2012 Hallo Noch mal meine Klasse und die Bildschirmausgabe mit Anmerkungen dazu. Wir funktioniert mein Gedanke richtig? #include "stdafx.h" using namespace System; ref class TV_Klasse // Klasendefinition { Int32 an_aus; // Klassenelemente Int32 Programm; Int32 Ton; public: Void init(Int32 zustand); // Methoden der Klasse (Bekanntmachung) Void setprogramm(Int32 kanal); Void setton(Int32 aendern); Void ausgabe(); }; Void TV_Klasse::init(Int32 zustand) //Methode zur Initialisierung { if (zustand != 0) an_aus = 1; else an_aus = 0; Programm = 1; Ton = 5; } Void TV_Klasse::setprogramm(Int32 kanal) // Methode zum Programm ändern { Programm = kanal; } Void TV_Klasse::setton(Int32 aendern) // Methode um Ton zu ändern { Ton = aendern; } Void TV_Klasse::ausgabe() //Methode für die Ausgabe der Veränderung { Console::WriteLine("\n\nDas Gerät hat den Zustand {0} ",an_aus); Console::WriteLine("Aktives Programm {0}",Programm); Console::WriteLine("Die Lautsärke ist auf {0} \n\n\n",Ton); } int main(array<System::String ^> ^args) { TV_Klasse^ tivi; tivi = gcnew TV_Klasse; Int32 auswahl, x, z; Int32 y = 0; Console::WriteLine("Vor dem Einschalten.\n\n"); // Erster Aufruf der Methode Ausgabe tivi -> ausgabe(); // um an zu zeigen das Gerät aus ist. Console::WriteLine("Gerät einschalten: 1"); // Einschalten des Gerätes Console::WriteLine("Gerät ausschalten: 0\n"); // Ausschalten des Gerätes auswahl = Console::Read(); Console::ReadLine(); switch (auswahl) { case '1': // Case-Zweig zum 1 Einschalten, da nur dann Änderungen möglich x = 1; tivi -> init(x); // Veränderung bei an_aus Console::WriteLine("Nach dem Einschalten \n"); tivi ->ausgabe(); // Ausgabe zeigt Änderungsstatus auf Eingeschaltet while (y != 3) // Beginn der Schleife für die Auswahl zum Ton oder // Programm ändern { Console::WriteLine("Was möchten Sie tun?\n"); Console::WriteLine("Programm ändern: 1"); Console::WriteLine("Ton andern: 2"); Console::WriteLine("Gerät ausschalten: 0\n\n"); //Hier soll das Programm anders Funktionieren y = Convert::ToInt32(Console::Read()); // Erläuterung bei Bildschirmausgabe Console::ReadLine(); switch (y) // Programm ändern { case '1': Int32 kanal, i; Console::WriteLine("ARD: 1"); // Auswahl der Kanäle Console::WriteLine("ZDF: 2"); Console::WriteLine("NDR: 3"); Console::WriteLine("RTL: 4\n"); kanal = Convert::ToInt32(Console::Read()); Console::ReadLine(); switch (kanal) // Die Auswertungen der Kanalauswahl { // damit Methode setprogramm auch case '1': // nach dem eingegebenen Kanal umschaltet i = 1; tivi -> setprogramm(i); break; case '2': i = 2; tivi -> setprogramm(i); break; case '3': i = 3; tivi -> setprogramm(i); break; case '4': i = 4; tivi -> setprogramm(i); break; } // Kanal Auswahl ende break; // stop von Kanal Auswahl case '2': // Hir beginnt Zweit Ton ändern im Auswahlmenü nach Wihle z = 0; Console::WriteLine("Um die Lautstärke zu änder eine Zahl eingeben.\n"); z = Convert::ToInt32(Console::ReadLine()); tivi -> setton(z); // damit Methode setton geändert wird break; case '0': // Hier wird ein_aus zwar auf Null gesetzt // aber Programm nicht beendet z = 0; tivi -> init(z); break; default: Console::WriteLine("Falsche Auswahl."); } tivi -> ausgabe(); // Ausgabe nach Änderungen oder Änderung } } Console::ReadKey(); return 0; } Bildschirmausgabe: Vor dem Einschalten. Das Gerät hat den Zustand 0 ( Ausgabe OK ) Aktives Programm 0 Die Lautsärke ist auf 0 Gerät einschalten: 1 (Auswahlmenü OK) Gerät ausschalten: 0 1 Nach dem Einschalten ( Ausgabe OK) Das Gerät hat den Zustand 1 Aktives Programm 1 Die Lautsärke ist auf 5 Was möchten Sie tun? Programm ändern: 1 ( Menüausgabe OK) Ton andern: 2 Gerät ausschalten: 0 1 ARD: 1 (Menüausgabe OK) ZDF: 2 NDR: 3 RTL: 4 2 Das Gerät hat den Zustand 1 ( Ausgabe OK) Aktives Programm 2 Die Lautsärke ist auf 5 Was möchten Sie tun? ( Nochmalige Frage OK) Programm ändern: 1 ( Menü OK) Ton andern: 2 Gerät ausschalten: 0 2 Um die Lautstärke zu änder eine Zahl eingeben. (Aufforderung OK) 3 Das Gerät hat den Zustand 1 (Ausgabe OK) Aktives Programm 2 Die Lautsärke ist auf 3 Was möchten Sie tun? (Menüabfrage OK) Programm ändern: 1 Ton andern: 2 Gerät ausschalten: 0 0 Das Gerät hat den Zustand 0 (Kontrollausgabe ob Gerät aus OK) Aktives Programm 1 Die Lautsärke ist auf 5 Was möchten Sie tun? :confused: ( Nicht mehr OK) Programm ändern: 1 (Hier möchte einen Programmende. Entweder schließen des Ton andern: 2 (Programm oder die Abfrage Gerät einschalten bzw. Gerät ausschalten: 0 ( ausschalten Wie kann ich das Programm ansonsten so behalten, aber ohne die jetzige letzte Auswahl? Für Eure Hilfe lieben Dank lempy Zitieren
Klotzkopp Geschrieben 30. Mai 2012 Geschrieben 30. Mai 2012 while (y != 3)Wenn du willst, dass die Schleife bei 0 abbricht, warum prüfst du dann auf 3? Zitieren
Kali Geschrieben 31. Mai 2012 Geschrieben 31. Mai 2012 Erinnert mich an die Einsendeaufgaben von diversen Fernuniversitäten. Wenn dem so ist, frag deinen Fachlehrer doch mal :-). (Der freut sich über ein paar Euro mehr, die er pro Frage bekommt *ggg*) Zitieren
lempy Geschrieben 31. Mai 2012 Autor Geschrieben 31. Mai 2012 Hallo Klotzlkopp Wegen dieser Ausgabe. Vor dem Einschalten. Das Gerät hat den Zustand 0 Aktives Programm 0 Die Lautsärke ist auf 0 Gerät einschalten: 1 Gerät ausschalten: 0 1 Nach dem Einschalten Das Gerät hat den Zustand 1 Aktives Programm 1 Die Lautsärke ist auf 5 Weiter läuft es nicht Gruß lempy Zitieren
Klotzkopp Geschrieben 31. Mai 2012 Geschrieben 31. Mai 2012 Weiter läuft es nicht Du solltest an deiner Problembeschreibung arbeiten. Was heißt "läuft nicht"? Bleibt das Programm an dieser Stelle stehen? Stürzt es ab? Hat es das vorher auch schon gemacht (deine erste Beschreibung sah anders aus)? Hast du etwas am Programm geändert? Und meine Frage, warum an der oben genannten Stelle in deinem Code eine 3 steht, hast du auch nicht beantwortet. Zitieren
lempy Geschrieben 31. Mai 2012 Autor Geschrieben 31. Mai 2012 Sorry Läuft nicht: Heist, wenn ich aus der 3 eine 0 mache, dann läuft das Programm nur bis zu der Ausgabe "Nach dem Einschalten". Das ist die Kopie der Bildschirmausgabe. Habe das Problem jetzt mit "Label und goto" gelöst, möchte aber ungern GOTO verwenden. Hier noch mal das überarbeitete Programm. #include "stdafx.h" using namespace System; ref class TV_Klasse // Klasendefinition { Int32 an_aus; // Klassenelemente Int32 Programm; Int32 Ton; public: Void init(Int32 zustand); // Methoden der Klasse (Bekanntmachung) Void setprogramm(Int32 kanal); Void setton(Int32 aendern); Void ausgabe(); }; Void TV_Klasse::init(Int32 zustand) //Methode zur Initialisierung { if (zustand != 0) an_aus = 1; else an_aus = 0; Programm = 1; Ton = 5; } Void TV_Klasse::setprogramm(Int32 kanal) // Methode zum Programm ändern { Programm = kanal; } Void TV_Klasse::setton(Int32 aendern) // Methode um Ton zu ändern { Ton = aendern; } Void TV_Klasse::ausgabe() //Methode für die Ausgabe der Veränderung { Console::WriteLine("\n\nDas Gerät hat den Zustand {0} ",an_aus); Console::WriteLine("Aktives Programm {0}",Programm); Console::WriteLine("Die Lautsärke ist auf {0} \n\n\n",Ton); } int main(array<System::String ^> ^args) { TV_Klasse^ tivi; tivi = gcnew TV_Klasse; Int32 auswahl, x, z; Int32 y = 0; Console::WriteLine("Vor dem Einschalten.\n\n"); // Erster Aufruf der Methode Ausgabe [COLOR="red"]Label:[/COLOR]tivi -> ausgabe(); // um an zu zeigen das Gerät aus ist. Console::WriteLine("Gerät einschalten: 1"); // Einschalten des Gerätes Console::WriteLine("Gerät ausschalten: 0\n"); // Ausschalten des Gerätes auswahl = Console::Read(); Console::ReadLine(); switch (auswahl) { case '1': // Case-Zweig zum 1 Einschalten, da nur dann Änderungen möglich x = 1; tivi -> init(x); // Veränderung bei an_aus Console::WriteLine("Nach dem Einschalten \n"); tivi ->ausgabe(); // Ausgabe zeigt Änderungsstatus auf Eingeschaltet while (y != 3) // Beginn der Schleife für die Auswahl zum Ton oder Programm ändern { Console::WriteLine("Was möchten Sie tun?\n"); Console::WriteLine("Programm ändern: 1"); Console::WriteLine("Ton andern: 2"); Console::WriteLine("Gerät ausschalten: 0\n\n"); //Hier soll das Programm anders Funktionieren y = Convert::ToInt32(Console::Read()); // Erläuterung bei Bildschirm-ausgbe Console::ReadLine(); switch (y) // Programm ändern { case '1': Int32 kanal, i; Console::WriteLine("ARD: 1"); // Auswahl der Kanäle Console::WriteLine("ZDF: 2"); Console::WriteLine("NDR: 3"); Console::WriteLine("RTL: 4\n"); kanal = Convert::ToInt32(Console::Read()); Console::ReadLine(); switch (kanal) // Die Auswertungen der Kanalauswahl { // damit Methode setprogramm auch case '1': // nach dem eingegebenen Kanal umschaltet i = 1; tivi -> setprogramm(i); break; case '2': i = 2; tivi -> setprogramm(i); break; case '3': i = 3; tivi -> setprogramm(i); break; case '4': i = 4; tivi -> setprogramm(i); break; } // Kanal Auswahl ende break; // stop von Kanal Auswahl case '2': // Hir beginnt Zweit Ton ändern im Auswahlmenü nach Wihle z = 0; Console::WriteLine("Um die Lautstärke zu änder eine Zahl eingeben.\n"); z = Convert::ToInt32(Console::ReadLine()); tivi -> setton(z); // damit Methode setton geändert wird break; case '0': // Hier wird ein_aus zwar auf Null gesetzt // aber Programm nicht beendet z = 0; tivi -> init(z); [COLOR="red"]goto Label;[/COLOR] break; default: Console::WriteLine("Falsche Auswahl."); } tivi -> ausgabe(); // Ausgabe nach Änderungen oder Änderung } } Console::ReadKey(); return 0; } Hier noch mal die Bildschirmausgabe dazu: Vor dem Einschalten. Das Gerät hat den Zustand 0 Aktives Programm 0 Die Lautsärke ist auf 0 Gerät einschalten: 1 Gerät ausschalten: 0 1 Nach dem Einschalten Das Gerät hat den Zustand 1 Aktives Programm 1 Die Lautsärke ist auf 5 Was möchten Sie tun? Programm ändern: 1 Ton andern: 2 Gerät ausschalten: 0 2 Um die Lautstärke zu änder eine Zahl eingeben. 9 Das Gerät hat den Zustand 1 Aktives Programm 1 Die Lautsärke ist auf 9 Was möchten Sie tun? Programm ändern: 1 Ton andern: 2 Gerät ausschalten: 0 1 ARD: 1 ZDF: 2 NDR: 3 RTL: 4 3 Das Gerät hat den Zustand 1 Aktives Programm 3 Die Lautsärke ist auf 9 Was möchten Sie tun? Programm ändern: 1 Ton andern: 2 Gerät ausschalten: 0 0 Das Gerät hat den Zustand 0 // Kontrollausgabe Aktives Programm 1 Die Lautsärke ist auf 5 Gerät einschalten: 1 Gerät ausschalten: 0 // Jetzt erscheint Abfrage ein_aus wieder, also der Anfang zum erneuten Einschalten. Genauso möchte ich es haben. Wenn möglich ohne GOTO. Gruß lempy Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.