Bitte um nen kleinen Tipp gegen evtl. blamage bei Referat



  • Hallo erst einmal bin neu hier u hab folgendes Problem:

    Hab nen programm geschrieben bei der eine Zeit eingegeben werden soll, zwischen 0-23.
    Funktioniert auch ganz gut und so hab ich zusätzlich eine If Abfrage gemacht falls die Zahl größer als 23 ist das eine Fehlermeldung ausgegeben wird!
    Falls man jedoch einen Buchstaben drückt, gibt es eine Fehlausgabe.

    int a;
    .
    .
    .
    //Wenn a größer als 23 oder b größer als 59 ist//
    if(a>23 || b>59)
    {
        //Textausgabe//
        cout<<"Falsche Eingabe!"<<endl;
    .
    .
    .
    

    So und nun ist es die Frage ob ich meine Variable in der ich die Zahl einlese
    als "Zwidder" zwischen int und char deklarieren kann 😕 . So würde es dann, beim eingabe eines buchstabens auch zur fehlermeldung und nicht zur Fehlausgabe kommen.

    Wäre über informationen Dankbar!!!





  • danke für die schnelle hilfe aber könntest du das evtl. kurz schreiben wie das dann in die if bedingung hinein müsste? kann noch net so gut programmieren

    mfg Snake



  • Hi...so:

    int iInput;
    if(std::cin >> iInput)
    { // alles ok
    }
    else
    { // da hatta scheiße gebaut^^
    }
    


  • kann es angehen das dadurch das ich mit dem Borland C++ arbeitet das

    std::cin>>
    

    nicht funktioniert?



  • Nein, das geht beim Borland C++ Compiler genau so. Welche Version hast du denn und vor allem, hast du #include <iostream> statt #include <iostream.h> drin?



  • hab des ma eben aus dem programm rausgeschrieben, wie müsste das denn aussehen wenn er die fehlermeldung ausgegeben soll wenn ein buchstabe eingegeben wird!

    #include <iostream>
    #include <stdio.h>
    #include <conio.h>
    #include <time.h>
    #include <dos.h>
    
    int a,b,f,z;
    
    void main()
    {
        cout<<"\nBitte geben sie die Stunde der Weckzeit ein! "<<endl;
        cin>>a;
    
        cout<<"\nBitte geben sie die Minute der Weckzeit ein!"<<endl;
        cin>>b;
    
        while(4)
        {
       	void pause(int sekunden);
    	   struct time t;
    	   gettime(&t);
    	   f++;
    	   cprintf("Die aktuelle Zeit ist: %2d:%02d:%02d\n",
                t.ti_hour,t.ti_min, t.ti_sec);
    	   cprintf("\r\nDie    Weckzeit   ist: %02d:%02d:00",a,b);
    	   pause(1);
    	   clrscr();
                //Wenn a größer als 23 oder b größer als 59 ist//
    	   if(a>23 || b>59)
    	   {
    	          cout<<"Falsche Uhrzeit Eingabe!"<<endl;
    	          pause(3);
                   clrscr();
    	          break;
    	    }
            if(a==t.ti_hour && b==t.ti_min)
    	    {
          	  f=0;
    	         while(5)
    	         {
    		     f++;
    		     cout<<char(7);
    		     cout<<char(7);
    		     cout<<"AUFWACHEN !!!!!!"<<endl;
    		     pause(1);
    		     clrscr();
    		     if(f==4)
    		     {
                     cout<<"Ihre Weckzeit ist erreicht!"<<endl;
    		         getchar();
    		         clrscr();
                     z=0;
    		         break;
    		    }
    	     }
    	}
        if(z==0)
        {
           break;
        }
      }
    
    }
    void pause(int sekunden)
    {
    	int startZeit=time(NULL);
       while (startZeit+sekunden>time(NULL));
    };
    

    mag das ma jemand bitte ändern?? bin scheinst zu blöd?
    thx im voraus



  • Mal die ein oder andere Bemerkung:

    while(4) {}
    

    Dieses (4) ist wie (true), da jede Zahl ungleich 0 als true interpretiert wird (verbessert mich falls ich falsch liege).

    void pause(int sekunden);
    

    Dies ist doch kein korrekter Aufruf einer Funktion, das sollte so lauten:

    pause(5); // die 5 ist dann die Pause in Sekunden
    

    Zu deinem Problem:

    if(cin >> a); // leere Anweisung
    else
    { 
        cout << "Falsche Eingabe" << endl; // oder sonstwas...
    }
    

    Außerdem wundern mich noch was: du benutzt keinen namespace (also "using namespace std"), und trotzdem funktioniert cout etc.???



  • ich will die Variable a ja so deklariert haben das wenn meinetwegen statt ner Zahl nen k eingegeben wird das er dann rummault. Aber zuz Zeit setzt er das dann einfach auf Null und das soll auf keinen fall passieren!



  • Tobias W schrieb:

    if(cin >> a); // leere Anweisung
    else
    { 
        cout << "Falsche Eingabe" << endl; // oder sonstwas...
    }
    

    Also ich würd sagen eher so...übersichtlicher 😉 :

    if(!(cin >> a))
    { 
        cout << "Falsche Eingabe" << endl; // oder sonstwas...
    }
    

    👍



  • Meckern tut er mit meinem Codeteil oben schon, er lässt nur keine neue Eingabe zu.

    Deswegen wollte ich folgendes vorschlagen:

    int a;
    
    	while(true) {
    		std::cin >> a;
    		if(a>=0 && a<=23)
    			break;
    		else
    			cout << "mist gebaut" << endl;
    	}
    

    Doch hier überspringt er das cin>>a; beim zweiten durchlauf und ich komme in eine Endlosschleife -> WARUM?
    Hat da jemand ne Ahnung? Warum wird das cin einfach übergangen?



  • Jop so klappt es! besten dank an alle! Das mim

    if(!(cin>>a))
    

    klappt 100%

    Dann gehts ya hoffentlich morgen doch net inne hose !
    Besten dank nochmal

    Gude nacht!
    Mfg Snake


Anmelden zum Antworten