3 Eingaben einlesen und Variablen zuweisen



  • Hallo,

    also ich brächte eure Hilfe. Ich will ein Programm schreiben,
    dass am Anfang 3 Eingaben erwartet, die durch ein Leerzeichen voneinander getrennt sind.
    Die 1. Eingabe ist ein Wort, die 2. ist entweder eine Zahl, ein Wort oder wird gar nicht benötigt und die 3. Eingabe ist eine Zahl.
    Wie kann ich das Ganze realisieren und die einzelnen Werte Variablen zuweisen?

    Beispiel:
    einzahlen 5000
    oder
    kaufe vw 30.

    Mit freundlichen Grüßen


  • Mod

    Mit scanf. Lese das mittlere Element zunächst als Wort ein und guck dann ob es eine Zahl ist.



  • Also 3 mal scanf?
    Wie kann ich gucken ob das ne Zahl ist?



  • boy1818 schrieb:

    Also 3 mal scanf?
    Wie kann ich gucken ob das ne Zahl ist?

    Bitte schau' erstmal den Link von SeppJ an. 🙄



  • char wert1[80],wert2[80],eingabe[80];
    long wert3;
    
    fgets( eingabe,80,stdin );
    if( !strchr(eingabe,'\n') ) while( getchar()!='\n' );
    if( 3==sscanf(eingabe,"%s%s%ld",wert1,wert2,&wert3) )
      printf("3 Werte: %s %s %ld",wert1,wert2,wert3);
    else
    if( 2==sscanf(eingabe,"%s%ld",wert1,&wert3) )
      printf("2 Werte: %s %ld",wert1,wert3);
    


  • OK, Du bist die Hausaufgabenfee. Zur Strafe wirst Du boy1818 ein Leben lang nicht mehr los. 😉



  • Okay, und noch was. Wie kann ich die Werte dann weiter verwenden?
    Also nicht ausgeben, sondern als Variablen vergleichen oder so.


  • Mod

    boy1818 schrieb:

    Okay, und noch was. Wie kann ich die Werte dann weiter verwenden?
    Also nicht ausgeben, sondern als Variablen vergleichen oder so.

    Indem du wert1 bis wert3 benutzt.



  • Nochmal zum Anfang.
    Wie kann ich es realisieren, dass entweder 1, 2 oder 3 Variablen erwartet und eingelesen werden? (Beispiel oben sind nur 2 oder 3 Eingaben berücksichtigt)


  • Mod

    boy1818 schrieb:

    Nochmal zum Anfang.
    Wie kann ich es realisieren, dass entweder 1, 2 oder 3 Variablen erwartet und eingelesen werden? (Beispiel oben sind nur 2 oder 3 Eingaben berücksichtigt)

    Es wird im allgemeinen erwartet, dass ein Fragender die Antworten liest und versteht. In dem Sinne:

    SeppJ schrieb:

    Mit scanf.

    pointercrash() schrieb:

    Bitte schau' erstmal den Link von SeppJ an. 🙄

    Wutz schrieb:

    char wert1[80],wert2[80],eingabe[80];
    long wert3;
    
    fgets( eingabe,80,stdin );
    if( !strchr(eingabe,'\n') ) while( getchar()!='\n' );
    if( 3==sscanf(eingabe,"%s%s%ld",wert1,wert2,&wert3) )
      printf("3 Werte: %s %s %ld",wert1,wert2,wert3);
    else
    if( 2==sscanf(eingabe,"%s%ld",wert1,&wert3) )
      printf("2 Werte: %s %ld",wert1,wert3);
    

    Damit sollte selbst eine motivierte Wanderdüne das Beispiel entsprechend ausbauen können. Wenn man jedoch keinerlei Motivation hat, etwas selbst zu tun...



  • generell:

    Es gehört sich, dass ein User darauf hingewiesen wird, was und wo er etwas ein-
    geben muss. dies sagst du dem user in dem du eine anweisung ausgibst (printf)...

    zum beispiel (struktogrammartig)

    Rechner.c

    A: TASCHENRECHNER
    A: Bitte geben Sie die 1. Zahl ein:
    E: zahl1
    A: Bitte geben Sie die 2. Zahl ein:
    E: zahl2
    A: Bitte geben Sie die Rechenoperation an: 
    E: _operator
    Pruf: if(_operator == '/' && zahl2 == 0)    
        True: A: Division durch 0 nicht möglich!
    A: zahl1 _operator zahl1 =
    Pruf: if(_operator == '+')       
        True: A: (zahl1+zahl2)
        False: Pruf: if(_operator == '-')
                 True: A: (zahl1-zahl2)
                 False: Pruf: if(_operator == '/')
                          True: A: (zahl1/zahl2)
                          False: A: (zahl1*zahl2)
    

    du verwendest variablen so wie du sie brauchst und der User weiß immer wann er
    was eingeben muss (sollte halt =b)


Anmelden zum Antworten