Zählprogramm



  • #include <stdio.h>
    
    int main() {
    int c6, nl2 = 0, nl3 = 0, nl4 = 0;
    while ((c6 = getchar()) != 'q')
    	if (c6 == ' ')  // leerzeichen
    		++nl2;
    	if (c6 == '\t')  // tabulator
    		++nl3;
    	if (c6 == '\n')  // zeilentrenner
    		++nl4;
    	printf ("Leerzeichen: %d\nTabulatoren: %d\nZeilentrenner: %d\n", nl2,nl3,nl4);
    
    return 0; }
    

    Hi, ich soll ein zählprogramm schreiben, dass leerzeichen,tabulator und zeilentrenner zählt. Und am ende soll angezeigt werden wieviel von den zeichen eingegeben wurde.

    Kann mir jemand dabei helfen?
    vielen dank im voraus



  • Du hast das Programm doch bereits geschrieben...



  • Klammern!!!

    Wenn ich eine while-Schleife ohne Klammern drum rum sehe wird mir immer schlecht. Sowas ist unterster Stil. Daher kann dein Programm nicht funktionieren.

    int main() 
    {
    int c6, nl2 = 0, nl3 = 0, nl4 = 0;
    while ((c6 = getchar()) != 'q')
    [b]{[/b]
    	if (c6 == ' ')  // leerzeichen
    		++nl2;
    	if (c6 == '\t')  // tabulator
    		++nl3;
    	if (c6 == '\n')  // zeilentrenner
    		++nl4;
    [b]}[/b]
    	printf ("Leerzeichen: %d\nTabulatoren: %d\nZeilentrenner: %d\n", nl2,nl3,nl4);
    return 0; 
    }
    

    Jetzt gehts.
    Edit[tags repariert]



  • Kann es sein das du bei deinem while die geschweiften Klammern vergessen hast, oder bin ich blind 😮

    [EDIT]Zu langsam 😞 [/EDIT]



  • Noch paar Ergaenzungen:
    Wenn du die while-Schleife ohne Klammern schreibst wird nur der naechste Befehl, in deinem Fall die 1. if-Abfrage, in der Schleife ausgefuehrt. Die anderen zwei if-Bloecke werden erst ausgefuehrt wenn die Schleife komplett durchlaufen ist. Was gehen koennte ist wenn du statt dem 2. und 3. if ein "else if" nimmst, weil er das als Block erkennen muesste. Sonst meckert wenigstens der Compiler.



  • das hätt ich ja gewusst, das kommt davon wenn man stur vom buch abliest 😮
    danke ihr coder! 😉


Anmelden zum Antworten