LJMP/SJMP in C++ möglich?



  • Hallo,

    ich habe folgendes problem...ich muss in der schule einen BIN->HEX rechner programmiren und bin auch soweit schon fertig nur möchte ich noch nach der eingabe kontroliren ob das eingegebene wirklich nur aus 1 und 0 besteht...

    [...]
    void eingabe();
    void rechnung();
    void ausgabe();
    void nochmal();
    
    int x,y=0,temp=0,dez=0,intb[255],f=100,feld[100];
    char bin[255], again='j';
    
    int main()
     {                                                          
       while (again=='j')                                     
        {
           system("cls");                                                  
           eingabe();                                                       
           rechnung();                                                      
           ausgabe();                                                       
           nochmal();                                                      
        }
     } 
    
    void eingabe()
    {
       cout<<">>BIN -> HEX<<"<<endl<<endl;                      
       cout<<"Bitte umzuwandelnde Zahl binaer eingeben:"<<endl;         
       cin>>bin;                                              
    }
    
    void rechnung()
    {
       for (x=0;x<=255;x++)                //Umwandlung ASCII zu Zahl
       {
        intb[x]=bin[x]-48; 
        if(intb[x]>=2)
         {
          cout<<"Error!  bitte nur 1 oder 0 eingeben!";
          eingabe();
         }
       } 
    [...]
    

    wenn man nun einen fehleingabe macht springt er in die eingabe.Bis dahin ist alles toll aber dann fängt er nicht wieder oben bei rechnung(); an, sonder geht zurück in die "nechste zeile".... also ist es im moment wie im assembler ein "Call" an der stelle hätte ich aber gerne ein "ljmp". also dass er vergissst wo er herkommt und einfach von eingabe weitermacht und rechung wieder von vorne anfängt^^

    Bitte für besonders doowe erklären...habe erst seit diesem schuhljahr c++ 🙂

    MFG J1nX



  • So direkt ist das nicht möglich.
    Dein Programm ist auch nicht wirklich so strukturiert wie es sein könnte. In der Regel versucht man globale Variablen zu vermeiden...
    Du kannst damit du die Eingabe verarbeitest mit einem if und dem Rückgabewert der Funktion arbeiten. Je nachdem ob die Eingabe gültig ist macht er weiter oder eben nicht und wiederholt es...
    Hast du das soweit verstanden oder brauchst du eine Starthilfe?



  • ömmm Rückgabewerte.... das war das wo ich in der arbeit 0 von 6 punkten hatte 😉
    (arbeit war 2)
    starthilfe wäre gut=)

    ich habe inzwischen versucht in die for schleife von void rechnung() die eingabe mitreinzusetzen

    void rechnung()
    {
       for (x=0;x<=255;x++)                //Umwandlung ASCII zu Zahl
       {
        bin[x]=getch()
        cout<<bin[x]
        intb[x]=bin[x]-48;
        if(intb[x]>=2)
         {
          cout<<enld<<"Error!  bitte nur 1 oder 0 eingeben!"<<enld;
          x=0;
         }
       }
    

    jetzt möchte er aber unbadingt 255 eingaben damit er aus der schlleife geht ist auch doof...dabei ist mir die idee gekommen...getch() erwarted ja eine taste kann man vieleicht irgenwie festlegen das getch() nur 1 oder 0 akzeptiert und andere tasten ignoriert?!

    ...mein Lehrer in der Schuhle kann nicht nur schlecht erklären ich glaube der ist selbst mit der aufgabe überwordert. Zumindest hat er nach 5 minunten nachdenken aufgegeben über das anstrengende wochenende gemeckert und sich weiter bilder bei googlemaps angeguckt 👎 😞

    MFG J1nX


Anmelden zum Antworten