Usereingabe wird in printf nicht richtig eingefügt



  • Hey

    In folgendem Miniprogramm soll der Wert x nur dann an y zugewiesen werden, wenn x zwischen 0 & 21 liegt (1 - 20).
    Falls x außerhalb dieses Bereichs ist, soll y den Wert 0 beibehalten.

    #include <stdio.h>
    
    int y = 0, x = 0;
    
    int main()
    {
    	printf("\ny = 0\n");
    
    	printf("\nGib eine Zahl ein: ");
    	scanf("%d", &x);
    
    	if ((x <= 20) && (x >= 1))
               printf("y = x\n");
            else
               printf("y = 0\n");
    
        return 0;
    }
    

    Das funktioniert auch soweit.

    Doch sobald ich jetzt in der 2. if-Anweisungszeile in der printf-Anweisung printf("y = x\n"); x gegen %d tausche, um mir die Usereingabe anzeigen zu lassen, falls der Eingabewert zwischen 0 & 21 liegen sollte, wird mir ne komische Zahl angezeigt zB 153336442.
    Ist das irgend ne Zahl die im RAM-Speicher rumliegt?

    Wo liegt mein Fehler & warum wird mir die Usereingabe nicht angezeigt?



  • Es könnte helfen, die Variable x an printf zu übergeben, also als Argument für %d .



  • Hm, wie realisiere ich das, kannst mir n Codebeispiel geben bitte?





  • Zugewiesen hast du y aber immer noch nichts.

    Und das return gehört nicht um if/else, darum sollte es in der gleichen Spalte anfangen wie scanf und if.



  • @ TyRoXx - steige da nich ganz durch, wie ich x an printf übergebe. Kannst mir zu meinem Problem n konkretes Beispiel tippen?

    @ DirkB - hm, wie meinst das? In der printf steht doch klar, was gemacht werden soll.
    return habe ich jetzt richtig platziert, merci.



  • print ist zur Ausgabe von Werten / Texten da, nicht zum rechnen.

    Eigentlich ist printf die erste Funktion mit der man beim C lernen in Berührung kommt.

    Zum C lernen brauchst du ein Buch. Und wenn es in einer Vorlesung ist, studierst du das Falsche.



  • printf("y = %d", x);
    


  • R3FRESH schrieb:

    @ DirkB - hm, wie meinst das? In der printf steht doch klar, was gemacht werden soll.

    und wer soll deine "klare Anweisungen" ausführen? Der liebe Gott? Der Teufel? Wir?

    Merke, das ist ganz ganz ganz wichtig: Computer können nicht denken. Sie tun nur das, was du ihnen befiehlst, nicht mehr und nicht weniger. Kommt ein falsches Ergebnis, dann hast du zu 99% falsche Befehle erteilt.



  • @ DirkB - stimmt, das habe ich schon mal gehört 😃 . Hatte eben noch keinen Plan, wie das mit dem übergeben läuft. Übrigens, in meiner Signatur steht, woraus ich lerne.

    @ m - merci, du hast die Lösung, jetzt klappts.

    @ supertux - ok, is mir klar. Hm, hatte wohl nen Denkfehler & hab die Sache mit dem übergeben noch nich ganz gecheckt 😞 .


Anmelden zum Antworten