Problem bei Programm....



  • leider geht das programm bisher nur für kleine a's, nicht für große A's xD
    ich krieg auch iwie keine und oder verknüpfung von den a A 's....


  • Mod

    Racoon schrieb:

    leider geht das programm bisher nur für kleine a's, nicht für große A's xD
    ich krieg auch iwie keine und oder verknüpfung von den a A 's....

    Hast du cookies Komplettlösung genommen? Oder ein eigenes Programm? Wenn ja, welches? Und was ist überhaupt deine Frage? Dein Beitrag ist ziemlich unleserlich und deine Probleme sind unklar. Bitte genauere Fragen stellen und Texte deutlich ( ⚠ und deutsch oder englisch) formulieren!



  • Sry, aber ich bin im moment ein wenig gereizt... ich hab die lösung von cookie genommen, und habe versucht, das a mit einer UND-ODER-Verknüpfung zu verbessern. Der Grund: ich möchte dass das Programm ebenso große A's zählt als auch kleine a's. Ich hoffe mein Anliegen ist nun ein wenig mehr verständlicher.



  • ODER wäre schon richtig, du mußt nur wissen, wie es funktioniert 😉

    if(argument[i] == 'a' || argument[i] == 'A')
      ...
    
    //alternativ:
    if(tolower(argument[i]) == 'a')
      ...
    


  • SeppJ schrieb:

    Hast du cookies Komplettlösung genommen?

    LOL meine "Komplettlösung" ändert 2 Zeilen oder so in seinem Code.
    Was ist jetzt eigentlich mit einen 10€? 🤡



  • xD was ist mit meinem perfekten Programm mit beschreibungen und kommentaren?


  • Mod

    cooky451 schrieb:

    SeppJ schrieb:

    Hast du cookies Komplettlösung genommen?

    LOL meine "Komplettlösung" ändert 2 Zeilen oder so in seinem Code.

    Ich habe seinen Code nicht wirklich wahr genommen, da ohne Code-Tags. Da sieht man mal, wozu das fuhrt, wenn man die weglässt.



  • Arg, du denkst mein Stil ist nach ca. 2k Beiträgen immer noch so schrecklich? 😃 (Sorry Racoon)



  • Racoon schrieb:

    xD was ist mit meinem perfekten Programm mit beschreibungen und kommentaren?

    #include <ctype.h>
    #include <stdio.h>
    #include <string.h>
    
    int count(const char* s, char c)
    {
      int i = 0;
      for (; *s; ++s)
      {
        if (tolower(*s) == c)
          ++i;
      }
      return i;
    }
    
    int count_words(const char* s)
    {
      int i = 0;
      for (; *s; ++s)
      {
        while (*s && isspace(*s))
          ++s;
        if (*s)
        {
          ++i;
          while (*s && !isspace(*s))
            ++s;
        }
      }
      return i;
    }
    
    int main()
    {
      int c = 0;
      while (c != 2)
      {
        printf("1. Textanalyse\n");
        printf("2. Beenden\n");
    
        c = 0;
        while (c != 1 && c != 2)
        {
          int t;
          printf("Wahl: ");
          if (scanf("%i", &c) != 1) // gcc hack, :p
            printf("Bitte eine Zahl eingeben!\n");
          while ((t = getchar()) != EOF && t != '\n')
            ;
        }
    
        switch (c)
        {
        case 1:
          {
            char buf[0x100];
            printf("Bitte Text eingeben:\n");
            if (!fgets(buf, sizeof(buf), stdin))
            {
              buf[0] = '\0';
            }
            else if (buf[strlen(buf) - 1] != '\n')
            {
              int t;
              while ((t = getchar()) != EOF && t != '\n')
                ;
            }
    
            if (count(buf, 'a') >= 5)
            {
              printf("Ihre Eingabe enthaelt %i Woerter.\n", count_words(buf));
            }
            else
            {
              printf("Zu wenig a mein Lieber. :)\n");
            }
            break;
          }
        case 2:
          {
            printf("CyA :)\n");
            break;
          }
        }
      }
      return 0;
    }
    

    Haha, ich glaube viel aufwendiger geht's nicht mehr. Oder hat jemand noch eine Idee für ein if()? 🤡



  • Viel aufwändiger als diese nichtfunktionierende Wörterzählvariante gehts wirklich kaum noch.



  • Wutz schrieb:

    Viel aufwändiger als diese nichtfunktionierende Wörterzählvariante gehts wirklich kaum noch.

    Was funktioniert denn nicht?



  • Führende und endende Leerzeichen, durch andere Whitespaces getrennte Wörter, mehrere Leerzeichen/Whitespaces aufeinanderfolgend, leerer String, ...



  • Äh.. fixed.



  • Na das können wir aber besser:

    int zaehleWorte(const char *s)
    {
      int n,i=0;
      while( !sscanf(s,"%*s%n",&n) ) ++i,s+=n;
      return i;
    }
    


  • Erstmal noch vielen Dank für die ganze Hilfe!
    Könnte mir vllt noch jmd sagen ob das nachfolgende Programm tadellos funktionert, da es mir gerade nicht möglich ist in die schule zu gehn um es dort zu starten...

    #include<stdio.h>
    int anzahlwoerter(char *argument)
    {
    int i=0;
    int zaehlerwoerter=1;
    while(argument[i] != '\0')
    {
    if(argument [i] == ' ')
    {
    zaehlerwoerter ++;
    }
    i++;
    }
    return zaehlerwoerter;
    }

    int anzahldera(char *argument)
    {
    int i=0;
    int zaehlera=0;
    while(argument[i] != '\0')
    {
    if(argument[i] == 'a' || argument[i] == 'A')
    // es sollen sowohl kleine als auch große A's erkannt werden
    {
    zaehlera ++;
    }
    i++;
    }
    return zaehlera;
    }

    int main(void)
    {
    int menuepunkt;
    char zeichenkette[80];
    do
    {
    printf("\n");

    printf("1. Textanalyse\n");
    printf("2. Beenden\n\n");
    printf(" Bitte gewünschte Funktion auswählen\n");
    scanf ("%i",&menuepunkt);
    if (menuepunkt == 2)
    break;

    else
    {
    while (getchar() != '\n');
    printf("Bitte geben Sie den Text ein: ");

    //scanf("%s", zeichenkette);
    gets(zeichenkette);

    printf("Eingabe ist: %s /n",zeichenkette);

    if(anzahldera(zeichenkette)< 5)
    {
    printf("Ihre Eingabe enthält weniger als 5 mal a");
    }
    else
    {
    printf("Ihre Eingabe enthaelt %i Woerter",anzahlwoerter(zeichenkette));
    }
    }
    }while( menuepunkt!=2);

    return 0;
    }

    Vllt hat noch jmd ein vorschlag für ein kommentar zur besseren verständnis, oder wo man noch ne leerzeile einfügen könnte oder ähnliches x)



  • Wenn du den Code noch in cpp Tags setzen würdest, schauen sicher ein paar mehr Leute drüber.



  • danke für den tipp, leider weiß ich nicht was das bedeutet 🙂


  • Mod

    Racoon schrieb:

    danke für den tipp, leider weiß ich nicht was das bedeutet 🙂

    So funktioniert das Syntaxcoloring



  • Hast du dich noch nicht gefragt, warum die anderen soschöne Listings hinkriegen?
    Schon mal den rötlichen Kasten auf der Startseite vom C (C89 und C99)-Unterforum durchgelesen?
    Wozu sind diese komischen Kästen unter den Smilies da?

    Schnellkurs:
    Code markieren und auf den C/C++ Kasten unter den 🙂 😃 😉 drücken



  • oke vielen dank für die schnellen und kompetenten antworten

    #include<stdio.h> 
    int anzahlwoerter(char *argument) 
    { 
        int i=0; 
        int zaehlerwoerter=1; 
        while(argument[i] != '\0') 
        { 
        if(argument [i] == ' ') 
        { 
        zaehlerwoerter ++;     
        } 
            i++;    
        } 
        return zaehlerwoerter; 
    } 
    
    int anzahldera(char *argument) 
    { 
        int i=0; 
        int zaehlera=0; 
        while(argument[i] != '\0') 
        { 
        if(argument[i] == 'a' || argument[i] == 'A')
    	    // es sollen sowohl kleine als auch große A's erkannt werden
        { 
        zaehlera ++;     
        } 
            i++;    
        } 
        return zaehlera; 
    } 
    
    int main(void) 
    { 
        int menuepunkt; 
        char zeichenkette[80]; 
        do 
        { 
        printf("\n"); 
    
            printf("1. Textanalyse\n"); 
        printf("2. Beenden\n\n"); 
        printf(" Bitte gewünschte Funktion auswählen\n"); 
         scanf ("%i",&menuepunkt); 
            if (menuepunkt == 2)
              break; 
    
        else 
        { 
               while (getchar() != '\n'); 
            printf("Bitte geben Sie den Text ein: "); 
    
            //scanf("%s", zeichenkette); 
            gets(zeichenkette); 
    
            printf("Eingabe ist: %s /n",zeichenkette); 
    
        if(anzahldera(zeichenkette)< 5) 
        { 
            printf("Ihre Eingabe enthält weniger als 5 mal a");    
            } 
            else 
            { 
                printf("Ihre Eingabe enthaelt %i Woerter",anzahlwoerter(zeichenkette));
             } 
        } 
        }while( menuepunkt!=2);    
    
        return 0; 
    }
    

Anmelden zum Antworten