Programm neu starten...



  • Hallo Liebe Forennmitglieder,

    habe ein kleines Problem...
    Ich habe eine kleine Aufgabe bekommen und möchte sie ordentlich lösen :D...ich habe das komplette Programm fertig und es läuft auch sehr gut, jedoch möchte ich ein paar schönheitskorrekturen vornehmen. Ihr kennt das bestimmt...

    Nun bin ich an einem Punkt angekommen bei dem ich nicht mehr weiter weiß..
    Ich habe eine Eingabemaske gebastelt damit sich verschiedene USER-Gruppen einloggen können. Nun muss man ja davon ausgehen das sie sich vertippen bei der Wahl des Users...und ich möchte das sie auch wieder zurück zur Anfangsmaske kommen. Jetzt hab ich mir gedacht, ob man nicht das komplette Programm neu starten könnte durch einen festgelegten Wert...zum beispiel 1..

    wie kann ich in einem Programm den Befehl geben neu zu starten?

    Wäre cool wenn ihr mir weiterhelfen könntet...

    LG

    n.baz 🙂



  • Das klingt seltsam und nach dem falschen Ansatz. Wäre es nicht besser, Du startest nicht das Programm neu, sondern gibst Nutzern eine Warnung aus was falsch war und startest die Eingabemaske, also die Funktion, welche die Maske generiert, neu?

    Gruß,
    Christian



  • CMB hat Recht, in diesem Fall ist die Anwendung etwas fragwürdig.

    Aber grundsätzlich machst du am besten eine Schleife, in der das ganze Programm läuft. Bei gewissen Eingaben verlässt du die Schleife durch ein break oder sogar return und beendest das Programm, bei einer anderen kannst du einen neuen Schleifendurchgang mit continue beginnen.

    while (Bedingung)
    {
       if (NeustartEingabe)
          continue;
       else if (BeendenEingabe)
          break;
    }
    


  • Nexus schrieb:

    ...

    😕



  • erstmal vielen Dank für die schnelle Antwort,

    das hört sich alle sehr gut an, jedoch wird das bei der umsetzung für mich ein klein wenig schwierig..

    kann euch gern das mal zeigen:

    int user;
    int back;
    printf ("\tS C H N E E M A N N - UND I G L U L A G E R\n\n\n");
    printf ("\tBitte geben Sie an als was Sie sich anmelden moechten\n\n");
    printf ("\tDruecken Sie 1 fuer Schneeadministrator\n\n");
    printf ("\tDruecken Sie 2 fuer Schneelagerist\n\n");
    printf ("\n\n\tBitte waehlen Sie: ");
    scanf ("%i", &user);
    if(user == 1){
    printf ("\n\n\t Sie haben sich fuer\n");
    printf ("\n\n\t S C H N E E A D M I N\n\n");
    printf ("\t entschieden\n\n");}
    printf ("\n\n Zurueck (y=1/n=2): ");
    scanf ("%i", &back);
    if (back == 1)
    [hier sollte wieder die Maske von anfang an erscheinen..]

    hat einer einen Umsetzungsvorschlag?

    LG

    n.baz



  • Tachyon schrieb:

    😕

    Ich habe dir schon mal gesagt, dass du dich vernünftig ausdrücken solltest, wenn du etwas von mir willst oder etwas an meinen Posts auszusetzen hast. 🙄

    2Sam schrieb:

    das hört sich alle sehr gut an, jedoch wird das bei der umsetzung für mich ein klein wenig schwierig..

    Wieso schwierig? Versuch doch einfach, die Schleife dort zu beginnen, wo die Abfrage ist. Dann kannst du bei einer entsprechenden Eingabe mit continue einen neuen Durchlauf starten.

    Benutz bitte [cpp]-Tags (die erste weisse Schaltfläche unter der Texteingabe). Abgesehen davon ist dein Code eher C als C++.



  • Super....

    hat geklappt....DANKE!!! 😃 😃



  • Ja, es gibt in C die switch Anweisung. Wenn Du Deine Maske in eine Funktion packst, sieht das etwa so aus:

    void maske( ... ) { ... };
    
    int main() {
       ...
       maske( ... );
       scanf ("%i", &user); 
       switch (user):
          case '1': Schneeadmin-Funktions-Aufruf
          case '2': Iglulager-Funktions-Aufruf
          default: {
            printf("Fehlerhafte Eingabe.\nBitte nochmals versuchen.\n\n"); 
            maske( ... );
          }
    }
    

    HTH
    Christian

    edit: Sorry, mir ist bei der Eingabe ein paar mal was schiefgelaufen ...



  • CMB schrieb:

    Ja, es gibt in C die switch Anweisung. Wenn Du Deine Maske in eine Funktion packst, sieht das etwa so aus:

    Mit dem kleinen Detail, dass switch einen Block und keinen Doppelpunkt impliziert und nach den case -Marken ein break stehen sollte. 😉

    switch (Variable)
    {
        case '1':
            DoSomething(); 
            break;
        case '2':
            DoAnythingElse();
            break;
        default:
            DoNothing();
            break; // ist hier nicht unbedingt nötig
    }
    


  • Sorry - irgendwo hat bei dem Post echt meine Tastatur geklemmt 😉
    Danke, Nexus.


Anmelden zum Antworten