Es ist zum Verrückt werden nochmal Fernseher in Klasse



  • Hallo Leute

    So langsam werde ich noch irre! So wie ich mein Programm gestalten möchte läuft es nicht. Aber sol!

    [/cli]// Test.cpp: Hauptprojektdatei.

    #include "stdafx.h"

    using namespace System;

    ref class TV_Klasse
    {
    Int32 an_aus;
    Int32 programm;
    Int32 ton;

    public:

    Void init(Int32 zustand);
    Void Kanal(Int32 waehlen);
    Void lautstaerke(Int32 aendern);
    Void ausgabe();
    };

    Void TV_Klasse::ausgabe()
    {
    Console::WriteLine("\n\nDas Gerät hat den Zustand {0}\n ",an_aus);
    Console::WriteLine("Aktives Programm {0}\n",programm);
    Console::WriteLine("Die Lautsärke ist auf {0} \n\n\n",ton);
    }

    Void TV_Klasse::init(Int32 zustand)
    {
    an_aus = 1;
    programm = 1;
    ton = 5;
    }

    Void TV_Klasse::Kanal(Int32 waehlen)
    {
    if ((programm + waehlen) > 1)
    {
    programm = programm + waehlen - 1;
    }
    else
    {
    programm = programm - waehlen;
    }
    }

    Void TV_Klasse::lautstaerke(Int32 aendern)
    {
    if ((ton + aendern) > 5)
    {
    ton = ton + aendern - 5;
    }
    else
    {
    ton = ton - aendern;
    }

    }

    int main(array<System::String ^> ^args)
    {
    TV_Klasse^ tivi;

    tivi = gcnew TV_Klasse;

    Int32 auswahl;

    Console::WriteLine("Vor dem Einschalten.\n\n");
    tivi -> ausgabe();

    Console::WriteLine("Gerät einschalten: 1\n");
    Console::WriteLine("Gerät ausschalten: 0\n");

    auswahl = Console::Read();

    Console::WriteLine("\n\nNach dem Einschalten \n");

    switch(auswahl)
    {
    case '1':

    tivi -> init(1);
    tivi ->ausgabe();

    Console::WriteLine("\nJetzt wird das Progamm geändert\n\n");

    tivi -> Kanal(2);
    tivi -> ausgabe();

    Console::WriteLine("\nJetzt der Ton");

    tivi -> lautstaerke(9);
    tivi -> ausgabe();
    break;

    case '0':

    Console::WriteLine("Das Gerät ist ausgeschlatet");
    break;

    default:

    Console::WriteLine("Falsche Taste gewählt");

    }

    Console::ReadKey();
    return 0;
    }

    Die Bildschirm Ausgaben 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

    Jetzt wird das Progamm geändert

    Das Gerät hat den Zustand 1

    Aktives Programm 2

    Die Lautsärke ist auf 5

    Jetzt der Ton

    Das Gerät hat den Zustand 1

    Aktives Programm 2

    Die Lautsärke ist auf 9

    Ausgaben sind soweit Korrekt. Nur wie bekomme ich diese Ausgaben so hin, dass ich die nicht tivi -> Kanal(1) und tivi -> ausgabe() sondern durch ein Auswahl-
    menügesteuert, die eingegebene Zahl für tivi -> Kanal(i) nehmen kann und mir auch dazu die Ausgabe angezeigt wird? Habe es mit case, if und set... versucht, aber das Programm ist dann ständig raus gesprungen.

    Funktioniert das überhaupt mit ein Auswahlmenü?

    Das ist mein erster Gehversuch in Richtung Klassen.

    Lieben Dank und Gruß

    champman



  • Dein Problem hat nichts mit Klassen zu tun. Natürlich würde es auch mit einem Auswahlmenü funktionieren. Sogar mit 3D Grafik (aber nicht in der Konsole). Dein Problem ist eher dass dir noch nicht wirklich klar ist, was du tust und wie man programmiert. Wie man so ein Auswahlmenü aufbaut, findest sicher schon 10 000 mal hier im Forum und Millionen mal im Internet.
    Allgemein zu deinem Programm, warum überhaupt C++/CLI? Und dann solche Kleinigkeiten wie "TV_Klasse", Int32, Void usw., das solltest du mal ändern 😉



  • Er muss C++/CLI nehmen, weil das eine Schulaufgabe ist, wurde hier auch schon 10.001 mal gepostet.



  • Console::Write("\nVolumen ändern -> ");
    	tivi->lautstaerke(Convert::ToInt32(Console::ReadLine()));
    	tivi->ausgabe();
    

    nur als Tip 😉
    ne "while" abfrage sollte dann dein Vorhaben lösen, o.d.g.

    wobei das definitiv nicht zur "Aufgabe" gehört

    VG FX


Anmelden zum Antworten