Schleifen mit Buchstaben!



  • Hallo Ihr Lieben...

    Ich bin Neuling und Verzweifel gerade an einer If Schleife mit der Eingabe von einem Buchstabe!
    Und zwar würde ich gerne auf der Tastatur a drücken, und dann soll eine 1 erscheinen, sonst eine 0! Soll ja eigentlich nicht soo schwer sein, aber irgendwie gibt er mir prinzipiell eine 0 aus 😞

    Hier mein Programm:

    scanf  ("%s",antwort_a);
               if ("a" == antwort_a) printf ("1"); else printf ("0");
    

    Ich hoffe ihr könnt mir helfen!!

    lg



  • In C arbeitet der Gleichheitsoperator == NICHT mit Aggregat-Typen (Array,struct,union).
    Und "a" ist ein (char)Array.
    Wenn beide zu vergleichenden char-Arrays '\0'-terminiert sind, kannst du strcmp benutzen.





  • ich sag ja, bin absoluter Anfänger! Mit welcher Funktion kann ich mein Programm programmieren??

    also sobald ich bsp. a drücke, soll eine 1 erscheinen!! sonst 0!

    bin etwas überfordert...



  • Wieder einer, der nicht lesen kann.



  • char buchstabe
    scanf("%c", &buchstabe);
    
    if(buchstabe=='a') printf("1");
    else printf("0");
    


  • Hallo Lieber Grunii,

    ich versuch es noch mal genauer für dich zu erklären, falls du die bereits gegebenen, korrekten Antworten nicht ganz verstanden hast:

    also erst mal gar nicht schlimm, denn jeder hat mal klein angefangen.
    Ich zum Beispiel habe auch am Anfang if-schleife gesagt, was natürlich nicht richtig ist. If ist eine Abfrage/Verzweigung innerhalb deines Programms. Der Inhalt dieser Verzweigung, wird nur dann ausgeführt, wenn dein Vergleich, also die Bedingung die gegeben ist zutrifft, oder eben nicht. (else)
    Schönes Tutorial: http://www.c-howto.de/tutorial-verzweigungen-if-else.html

    Zu deinem Problem:

    [code]    char antwort_a;
    
        scanf("%c", [b]&[/b]antwort_a);
    
        if (antwort_a == 'a') 
        {
            printf ("1\n");
        }
        else 
        {
            printf ("0\n");
        }[/code]
    

    so funktioniert es. (Lass dich durch das \n (Zeilenumbruch) nicht verwirren, das gilt lediglich zur Übersicht. (Bessere Lesbarkeit))

    - als erstes hast du "a" geschrieben.
    Wenn man etwas mit einem einzelnen Buchstaben(Char(-acter)) Vergleichen möchte, benutzt man '' also 'a'.

    - Wenn du scanf(); benutzt, schreibe bitte immer ein Kaufmanns UND Zeichen. (&) vor die Variable in die du einem Wert speichern möchtest.
    http://www.c-howto.de/tutorial-zeiger.html

    - außerdem erwartest du bei deinem Code eine Zeichenkette vom Benutzer, da du bei scanf(); ein %s eingefügt hast. Du möchtest ja aber keine Zeichenkette erwarten, sondern lediglich einen Character. Also Deklarierst du dir eine Variable vom Typen Char. Wenn man nun Vergleicht, sollte es auch absolut keine Probleme geben.

    Möchtest du jedoch trotzdem mal irgendwann Zeichenketten miteinander vergleichen, benutzt man, wie schon hier geschrieben worden ist, strcmp();
    ... dabei ist zu beachten:
    0 die Strings sind gleich
    1 das erste ungleiche Zeichen in string1 ist größer als in string2
    -1 das erste ungleiche Zeichen in string1 ist kleiner als in string2
    Sehr gute Erklärung auch hier wieder: www.c-howto.de/tutorial-strings-zeichenketten-stringfunktionen-vergleichen-strcmp.html

    allgemein würde ich dir empfehlen gerade als Anfänger mit Tutorials zu arbeiten, das oben genannte "C-howto" gefällt mir persönlich gut.

    War das verständlich oder hast du sonst noch Fragen?
    Lieben Gruß,
    marvnnn.



  • Gibt es irgendein gruseliges Buch, in dem von "if-Schleifen" die Rede ist?
    Oder warum taucht dieser Begriff ständig wieder auf?

    Irgendwo müssen die Anfänger das Wort ja aufgeschnappt haben.



  • if-Schleife schrieb:

    Gibt es irgendein gruseliges Buch, in dem von "if-Schleifen" die Rede ist?
    Oder warum taucht dieser Begriff ständig wieder auf?

    Irgendwo müssen die Anfänger das Wort ja aufgeschnappt haben.

    Ich denke mal einfach, man schnappt zum Beginn des Lernens "schleife" auf, und das bleibt dann einfach besser hängen als Anweisung oder Abfrage oder ähnliches, weil die, die das programmieren lehren, dann ja auch immer betonten wie wichtigen die SCHLEIFEN sind!

    da sich dann auch noch Schleifen und if-Anweisung rein Syntaktisch meist ziemlich ähnlich sehen, und man meist sowieso nicht darüber nachdenkt das schleifen wirklich meist etwas mehrmals durchlaufen, und if nur einmal durchgegangen wird, verwechselt man es halt. Man ist sich halt nicht im klaren darüber und hält es auch gar nicht für wichtig. 🙂



  • Das einzige, was ich dazu gefunden habe, ist ein altes Visual-Basic-Tutorial auf der Seite der FH Düsseldorf, dessen Autor scheinbar Blöcke nicht von Schleifen unterscheiden kann. Ansonsten taucht der Begriff nur in Forenposts von Programmieranfängern auf, die dann meistens gleich darauf hingewiesen werden, dass er Unfug ist.


Anmelden zum Antworten