Problem bei Programm....



  • Was soll er denn für 10€ zu sich nehmen (besaufen), dass er nicht mehr programmieren kann?



  • DirkB schrieb:

    Was soll er denn für 10€ zu sich nehmen (besaufen), dass er nicht mehr programmieren kann?

    Bei einem Discounter kriegt er für 10€ eine Flasche hochprozentigen Sprit oder einen halben Kasten Bier. Sollte für einige Stunden 'nicht mehr programmieren können' schon ausreichen! 🕶 Aber es gibt ja auch die Experten, die zum Lösen kniffliger Dinge einen Pegel brauchen! 😮



  • Ich werde dieses Zeugs sicherlich nicht mehr lernen, vor alleim weil ich ab nun kein info mehr hab bzw. darin auch keine klausur schreib. War net gemeint von den vorrednern, aber da hab ich für mein studienfach nützlicheres zu lernen...



  • Racoon schrieb:

    Ich werde dieses Zeugs sicherlich nicht mehr lernen, vor alleim weil ich ab nun kein info mehr hab bzw. darin auch keine klausur schreib. War net gemeint von den vorrednern, aber da hab ich für mein studienfach nützlicheres zu lernen...

    Ist in Ordnung. Nur dann bitte nicht eines Tages für ein IT-Projekt die Vorgaben machen! 😃



  • 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.


Anmelden zum Antworten