eingabe überprüfen [erledigt]

Tutorials.at
Verfügbare Informationen zu "eingabe überprüfen [erledigt]"

  • Qualität des Beitrags: 0 Sterne
  • Beteiligte Poster: AQE89 - X - matze(2) - progger - DrPhil_Guth
  • Forum: Tutorials.at
  • Forenbeschreibung: Programmierforum
  • aus dem Unterforum: C / C++
  • Antworten: 16
  • Forum gestartet am: Mittwoch 19.04.2006
  • Sprache: deutsch
  • Link zum Originaltopic: eingabe überprüfen [erledigt]
  • Letzte Antwort: vor 17 Jahren, 7 Monaten, 5 Tagen, 2 Stunden, 49 Minuten
  • Alle Beiträge und Antworten zu "eingabe überprüfen [erledigt]"

    Re: eingabe überprüfen [erledigt]

    AQE89 - 26.07.2006, 17:09

    eingabe überprüfen [erledigt]
    mal ne frage:
    wie kann ich überprüfen das der benutzer eine zahl eingab (1 - 6). so das es eine fehlermeldung gibt wenn man eine grössere oder kleinere zahl oder eine zahl mit einem , angibt. Und auch wen man einen Buchstaben angibt?

    und noch was, man kann ja selber funktionen machen, müssen die in der gleichen Datei sein wie die main () Funktion oder kann ich sie in einer seperaten datei abspeichern und dann irgend wie einbingen?

    ich habe da eben recht viele, weil ich das am ausprobieren bin!

    den queltext kann ich nicht posten, den der ist glaube ich zu gross,
    würde recht viel platz weg nehmen.

    es folgen warscheinlich noch mehr fragen!!



    Re: eingabe überprüfen [erledigt]

    X - 26.07.2006, 20:42


    Hi AQE89,

    Auf Zahl prüfen:
    Code:
    int zahl = 0;
    cout<<"Bitte Zahl eingeben: ";
    cin>>zahl;
    if(zahl < 7 && zahl > 0)
    {
      deinCode...
    }

    wenn du direkt in eine int-Variable einlist dann sollte er normalerweise jede Kommazahl in eine Ganzzahl casten, musste aber mal probieren weiß nich ob des so die beste Lösung is.
    Pack das ganze in einen try-Block dann kannst du die Exception abfangen die bei der Eingabe eines Buchstaben geworfen werden.

    Du kannst die anderen Funktioen in eine eigene .cpp Datei auslagern.
    DU musst die dann aber über den Präprozessorbefehl #include einbinden und die Funktionsaufrufe in deinem main-Sourcefile mit extern kennzeichnen.

    PS: Ich geh davon aus das du C++ progst. Falls nich oder wenn du noch Fragen hast meld dich.

    Gruß



    Re: eingabe überprüfen [erledigt]

    AQE89 - 26.07.2006, 21:01


    also ich proge in C

    geht das mit dem einbinden (#include) auch in C?

    und das erste, wie ist das wenn es in c geschriben ist?

    noch was:

    wen ich ne funktion mache:

    int funktion (void)
    {
    blablabla
    }
    und darin eine Variable beschreibe die ich in einer anderen funktion lesen werde, wie muss ich die da einbinden?

    habe gelesen das man es
    Zitat:
    #include <..>
    int variable;

    int funktion (void)
    {
    blabla
    variable
    blabla
    }

    int main(void)
    {
    funktion ();
    }


    gibt es noch ne andere möglichkleit?



    Re: eingabe überprüfen [erledigt]

    X - 27.07.2006, 19:12


    Hi

    das mit dem C++ hab ich eher auf die StdLib bezogen (cin, cout is viel bequemer)
    ansonsten muss du halt scanf, printf verwenden.
    das mit dem #include geht auch unter C,

    Zu deinem Problem mit der Vari.
    Wenn du die in einer Funktion deklarierst ist sie auch nur dort gültig, springst du im Stack wieder zurück gehen alle lokalen Varis verloren.
    Du musst den Wert mit return zurückgeben und als Parameter an die neue Funktion übergeben.
    Ansonsten gibt es noch den Weg über eine globale Deklaration.
    Code:
    int F1()
    {
      int x; 
      x = 4;
      return x;
    }

    //der Aufruf der neuen Funktion:
    F2(F1());

    //Deklaration von F2
    void F2(int y)
    {
       cout<<y; //Ausgabe von 4
    }


    Gruß



    Re: eingabe überprüfen [erledigt]

    AQE89 - 28.07.2006, 19:33


    habe mal einen cod teil rausgeschniten und zu einem eigenständigen programm gemacht, aber es gibt immer noch Fehler.

    Code: #include <stdio.h>
    #include <conio.h>

    main ()
    {
    int getraenk;
    printf ("Frage 5: Was ist dein lieblingsgetraenk?");
    printf ("Waele 1 fuer Fanta, 2 fuer Sprite, 3 fuer Coca Cola, 4 fuer Pepsi, 5 fuer Mineralwasser.");
    do{scanf("%d ;&getraenk");} while(getchar !="\n");

    while ((getraenk >=6)&&(getraenk <=0))
    {
    printf ("Sie haben eine Zahl angegeben die grösser als 6 oder kleiner als 1 war oder einen buchstaben");
    printf ("Frage 5: Was ist dein lieblingsgetraenk?");
    printf ("Waele 1 fuer Fanta, 2 fuer Sprite, 3 fuer Coca Cola, 4 fuer Pepsi, 5 fuer Mineralwasser.");
    do{scanf("%d ;&getraenk");} while(getchar !="\n");
    }
    printf("%d",getraenk);
    getch;
    return 0;
    }


    die Fehler meldungen:
    Zitat:
    a.c:2:19: error: conio.h: Datei oder Verzeichnis nicht gefunden
    a.c: In function ‘main’:
    a.c:9: warning: comparison of distinct pointer types lacks a cast
    a.c:16: warning: comparison of distinct pointer types lacks a cast
    a.c:19: error: ‘getch’ undeclared (first use in this function)
    a.c:19: error: (Each undeclared identifier is reported only once
    a.c:19: error: for each function it appears in.)
    a.c:21:2: warning: no newline at end of file


    beim ganzen Cod heist es das die switch case anweisungen falsch sind!
    [/quote]uize_1.c:26: error: syntax error before ‘{’ token
    quize_1.c:50: error: old-style parameter declarations in prototyped function definition
    quize_1.c:4: error: parameter name omitted
    quize_1.c:51: error: case label not within a switch statement
    quize_1.c:51: error: break statement not within loop or switch
    quize_1.c:52: error: case label not within a switch statement
    quize_1.c:52: error: break statement not within loop or switch
    quize_1.c:53: error: case label not within a switch statement
    quize_1.c:53: error: break statement not within loop or switch
    quize_1.c:54: error: case label not within a switch statement
    quize_1.c:54: error: break statement not within loop or switch
    quize_1.c:55: error: case label not within a switch statement
    quize_1.c:55: error: break statement not within loop or switch
    quize_1.c:56: error: case label not within a switch statement
    quize_1.c: At top level:
    Zitat:



    Re: eingabe überprüfen [erledigt]

    matze(2) - 28.07.2006, 23:04


    ums kurz auszudrücken:
    er findet "conio.h" nich!

    schua mal nach ob du diese headerdatei hast.



    Re: eingabe überprüfen [erledigt]

    AQE89 - 29.07.2006, 10:53


    unter linux gibt es diese headerdatei aus irgend einem grund nicht, aber die anderen fehler sind eben nicht auf das zurückzuführen.

    darum



    Re: eingabe überprüfen [erledigt]

    progger - 29.07.2006, 12:52


    Wenn du nur main schreibst dann gibts normalerweise auch ne Fehlermeldung probiers doch lieber mit int main oder void main.
    Getch funktioniert nicht bei allen compilern.

    mfg



    Re: eingabe überprüfen [erledigt]

    X - 29.07.2006, 17:06


    Hi,
    Wegen den restlichen Fehlern,
    ne switch-Anweisung sieht normalerweise so aus:
    Code:
    switch(VARIABLE)
    {
       case WERT1: code... break;
       case WERT2: code... break;
       case WERT3: code... break;
       default: code...
    }



    Re: eingabe überprüfen [erledigt]

    AQE89 - 11.08.2006, 22:45


    hi ich habe mal den quellcode ruhen lassen, habe ihn heüte wieder mal angeschaut und angefangen ihn zu überarbeiten.

    dabei habe ich beim folgenden code abschnit ein problem*

    Code:
    #include <stdio.h>

    int Abfrage1 (int farbe1);

    int main (void)
    {
    int farbe = 0;
    farbe = Abfrage1 (farbe);
    printf ("%i", farbe);
    return 0;
    }


    int Abfrage1 (int farbe1)         /*Abfrage, Farbe*/
    {

    printf ("Frage 1: Welche Farbe gefällt dir am besten?");
    printf ("waele 1 fuer Rot, 2 fuer Orange, 3 fuer Schwarz, 4 fuer Grün, 5 fuer Blau, 6 fuer Lila");
    do{scanf("%d ;&farbe");} while(getchar !="\n");   /*Puffer leeren*/

    while ((farbe >=7)&&(farbe <= 0);   /*Kontrolle ob richtiges Zeichen*/
    {
    printf ("Sie haben eine Zahl angegeben die grösser als 6 oder kleiner als 1 war oder eine kommastelle besitzt");
    printf ("Frage 1: Welche Farbe gefällt dir am besten?");
    printf ("waele 1 fuer Rot, 2 fuer Orange, 3 fuer Schwarz, 4 fuer Grün, 5 fuer Blau, 6 fuer Lila");
    do{scanf("%d ;&farbe");} while(getchar !="\n");
    }
    return (farbe1);
    }


    fileicht finde ich noch andere unklare fehler, dann werde ich einfach wieder fragen*



    Re: eingabe überprüfen [erledigt]

    X - 13.08.2006, 12:29


    Hi AQE89

    was ist den dein problem in dem Codeausschnitt???
    Fehlermeldung, was passiert, was soll passieren ?!?!

    [Edit]
    int kann keine kommastelle sein!

    das ist zwar nicht unbedingt ein codeproblem, aber immerhin schon mal ein anfang^^
    [/Edit]

    Gruß



    Re: eingabe überprüfen [erledigt]

    AQE89 - 13.08.2006, 18:11


    schon aber wen eine komma stelle entsteht dann ist was falsch geloffen, den das programm muss/darf nur ganze zahlen einlesen!

    und ein problem war auch noch:

    ....
    do{scanf("%d ;&farbe");} while(getchar !="\n"); /*Puffer leeren*/
    ....
    return (farbe1);

    edit:
    das problem ist immer noch das gleiche.



    Re: eingabe überprüfen [erledigt]

    X - 14.08.2006, 18:59


    Hi

    ich kan dir leider nicht ganz folgen; wie soll denn eine kommastelle entstehen? bei der eingabe einer kommazahl vll?

    zum code hab ich noch ne frage was übergibst du an den parameter farbe1? des macht nich ganz so viel sinn, bekommst warscheinlich immer 0 raus!?

    sry, aber was war denn das problem überhaupt :oops: hab grad den anschluss verloren.
    Schreib bitte noch mal kurz was du erreichen willst, dann schau ich mir noch mal deinen code an und guck das des dann auch läuft.

    Gruß



    Re: eingabe überprüfen [erledigt]

    AQE89 - 14.08.2006, 21:27


    hi ok, werde mal alles schön schreiben, so das es verständlich ist.

    wird aber erst in ein paar tagen posten können.

    werde dann diesen beitrag Editen.



    Re: eingabe überprüfen [erledigt]

    DrPhil_Guth - 23.08.2006, 10:36


    Also, hiermit bitte ich alle Programmierer: STELLT EUREN EDITOR IN DER IDE UM! TABULATOREN SOLLEN ALS LEERZEICHEN DARGESTELLT WERDEN!!!

    Dein Code is ein bisserl, hm... Durcheinander



    [quote="AQE89"]

    #include <stdio.h>
    #include <conio.h>

    main ()
    {
    int getraenk;
    printf ("Frage 5: Was ist dein lieblingsgetraenk?");
    printf ("Waele 1 fuer Fanta, 2 fuer Sprite, 3 fuer Coca Cola, 4 fuer Pepsi, 5 fuer Mineralwasser.");
    do{scanf("%d ;&getraenk");} while(getchar !="\n"); /*Wozu das? Die Eingabe wird automatisch beendet wenn ein Newline- zeichen erfolgt.*/



    while ((getraenk >=6)&&(getraenk <=0))
    {
    printf ("Sie haben eine Zahl angegeben die grösser als 6 oder kleiner als 1 war oder einen buchstaben");
    printf ("Frage 5: Was ist dein lieblingsgetraenk?");
    printf ("Waele 1 fuer Fanta, 2 fuer Sprite, 3 fuer Coca Cola, 4 fuer Pepsi, 5 fuer Mineralwasser.");
    do{scanf("%d ;&getraenk");} while(getchar !="\n"); //Hier das gleiche...
    }
    printf("%d",getraenk);
    getch; /* Was ist denn bitte das? 1. getch ist eine Funktion, und muss immer mit Parametern übergeben werden, auch wenns keine gibt: getch() 2. Du hast Linux oder? Unter UNIX gibt es kein getch(), und kein conio.h . Warum? Weil das nur für DOS ist. UNIX tickt anders, ich glaub UNIX bearbeitet alles in zeilen, DOS in Zeichen. Merkts euch doch endlich! */
    return 0;
    }
    [/qoute]



    meine Implementierung:

    Code:
    #include <stdio.h>
    #include <string.h>

    main()
    {
    unsigned short getraenk;
    printf ("Frage 5: Was ist dein lieblingsgetraenk?\n\n");
    printf ("Waele 1 fuer Fanta, 2 fuer Sprite, 3 fuer Coca Cola, 4 fuer Pepsi, 5 fuer Mineralwasser.\n\n");
    char strgGetraenk[10];

    do
    {
    scanf ("%d", &getraenk);

    if ( (getraenk < 1) || (getraenk > 6) ) printf  ("Ihr eingabe war ungültig. Bitte wiederholen Sie! ");

    } while ( (getraenk < 1) || (getraenk > 6) );

    switch (getraenk)
    {

    case 1:
        strcpy (strgGetraenk, "Fanta");
        break;

    case 2:
        strcpy (strgGetraenk, "Sprite");
        break;

    case 3:
        strcpy (strgGetraenk, "Coca Cola");
        break;

    case 4:
        strcpy (strgGetraenk, "Pepsi");
        break;

    case 5:
        strcpy (strgGetraenk, "Mineralwasser");
        break;

    default:

        strcpy (strgGetraenk, "Wasser");
        break;
    }



    printf ("\nDein Lieblingsgetraenk war: %s\n\n", strgGetraenk);

    printf ("Zum Beenden enter- Taste druecken: ");
    getchar();

    return 0;

    }



    Re: eingabe überprüfen [erledigt]

    AQE89 - 19.09.2006, 22:35


    so habe alle programme mit diesem fehler zum laufen gebracht, aber sie laufen nicht recht.


    musst jetzt nicht mekern, ich schreibe in einem Editor, im huntskomunen Windows Editor, der nix kann.

    Code:
    #include <stdio.h>
    #include <conio.h>

    int main(void)
    {
    float eingabe, eingabe2, resultat=0;
    char opera;

       printf("geben sie eine rechnung ein, (z.B: 1 - 1): ");
       scanf("%d %c %d", &eingabe, &opera, &eingabe2);
       fflush(stdin);         /*nur unter Windos*/   
    switch(opera)
    {
       case '+' :
       printf("%d + %d = %d", eingabe, eingabe2, resultat);
       break;
       case '-' :
       printf("%d - %d = %d", eingabe, eingabe2, resultat);
       break;
       case '*' :
       printf("%d * %d = %d", eingabe, eingabe2, resultat);
       break;
       case '/' :
       printf("%d / %d = %d", eingabe, eingabe2, resultat);
       break;
    }
    getch();
    return 0;
    }

    hier gibt er zum beispiel wen mann 1 + 1 eingibt aus.

    0 + 8192 = 16384

    die zahlen wariiren , machmal ist auch etwas mit -3**** und so weiter.

    weis jemand warum, habe sogar noch fflush(stdin); eingefügt um den Puffer zu löschen.


    Edit: Problem hat sich mit hilfe von matze(2) gelöst!

    also fals es jemand interesirt:

    ich habe %d anstat %g eingesetzt(habe ja float Variablen)
    anstat "resultat" "eingabe + eingabe2" eingesetzt.

    danach habe ich das ganze in eine funktion gepackt.



    Mit folgendem Code, können Sie den Beitrag ganz bequem auf ihrer Homepage verlinken



    Weitere Beiträge aus dem Forum Tutorials.at

    splittext - gepostet von DrPhil_Guth am Donnerstag 15.03.2007
    problem mit tutorial - gepostet von Slayer!!!! am Sonntag 20.08.2006
    'Sound'-Prozedur funktioniert nicht - gepostet von Jedra am Freitag 06.04.2007
    Prozedur oder Funktion? - gepostet von Dragorad am Donnerstag 26.10.2006
    Falsches Virtual Pascal ??? - gepostet von M4RC0 am Donnerstag 04.05.2006
    Windowsoberfläche bei C++ Programmierung - gepostet von kismoh am Dienstag 13.02.2007
    FORTRAN - gepostet von detewe89 am Montag 01.10.2007
    C++ Lernen - gepostet von Nightm4r3 am Mittwoch 20.09.2006
    Fenstergröße - gepostet von metzel-monkey am Dienstag 30.05.2006



    Ähnliche Beiträge wie "eingabe überprüfen [erledigt]"

    Überprüfen von Forumnutzern - SEK (Samstag 10.12.2005)
    Frage (Eingabe)! - Muhi (Donnerstag 04.05.2006)
    fehlerhafte beitrags-eingabe-zeiten - Riemann (Mittwoch 21.11.2007)
    Anleitung zur Eingabe der Matrix in den Ti89 -deutsches Menü - donald3 (Samstag 09.12.2006)
    Eingabe von Zahlen nicht beachten. - Kimi (Dienstag 29.01.2008)
    Bitte überprüfen - Jo (Freitag 06.07.2007)
    Federbein überprüfen, wie geht's? - qweruser (Freitag 25.05.2007)
    TXW Violence Friday vom 01.04.11 aus Hannover, Deutschl. - klon (Freitag 25.03.2011)
    B-24 Wreck Parts Video - Anonymous (Sonntag 26.02.2012)
    Was sich 2013 im Geldbeutel so ändern soll... - Pearl (Montag 31.12.2012)