Verständnis für If Condition fehlt



  • Hallo,
    Ich programmiere gerade ein Tool, dass anhand von verschiedenen Merkmalen die Schwierigkeiten von Texten verschiedenen Schulklassen zuordnen kann.
    Ich wollte fragen, ob mir jemand in Zeile 79 meines Codes helfen kann. Ich verstehe nicht, wie ich dafür sorgen kann, dass Satzzeichen und Leerzeichen beim Zeichenzählen nicht mitgezählt werden. Bzw. weiß ich nicht wieso falsch gezählt wird. Vielen Dank euch für die Hilfe.

    
    #include <iostream>
    #include <ctype.h>
    #include <stdio.h>
    #include <cmath>
    #include <string>
    
    using namespace std;
    
    
    int wordCount(char* str);
    int letterCount(char* str);
    int sentenceCount(char* str);
    const int SIZE = 2000;
    
    int main()
        {
       
            char input[SIZE];
            int numWords = 0;
            float numLetters = 0;
            float numSentences = 77;
            float index;
            float L = 0;
            float S = 0;
    
    
    
            cout << "Enter a string you like to be analyzed:: " << endl;
            cin.getline(input, SIZE);
    
            numSentences = sentenceCount(input);
            cout << "The number of sentences in your string is: " << numSentences << endl;
    
            numWords = wordCount(input);
            cout << "The number of words in your string is: " << numWords << endl;
    
            numLetters = letterCount(input);
            cout << "The number of letters is: " << numLetters << endl;
    
            L = numLetters * 100 / numWords;
            S = numSentences * 100 / numWords;
    
    
            index = 0.0588 * L - 0.296 * S - 15.8;
            index = round(index);
    
            if (index <= 1) {
                cout << "The Grade is: 1" << endl;
            }
            else if (index >= 16) {
                cout << "The Grade is: 16+ " << endl;
            }
            else {
                cout << "The Grade is: " << index << endl;
            }
    
    
    
            return 0;
        }
    
    int wordCount(char* str) {
        float numWords = 0;
    
        while (*str) {
            if (*str == ' ') {
                numWords++;
            }
            str++;
        }
        return numWords + 1;
    }
    
    int letterCount(char* str) {
        float numLetters = 0;
    
        while (*str) {
            if (*str != ' '|| *str != '.' || *str != '!' || *str != '?' || *str == ';' || *str == ':')  {
                numLetters++;
            }
            
                str++;
            
       }
        return numLetters;
    }
    int sentenceCount(char* str) {
        float numSentences = 0;
    
        while (*str) {
            if (*str == '.' || *str == '!' || *str == '?' || *str == ';' || *str == ':') {
                numSentences++;
            }
            str++;
        }
        return numSentences;
    }
    


  • Naja, Du sagst sinngemäß:
    Wenn x ungleich '.' oder x ungleich '!' oder ...
    Das ist IMMER wahr! Läuft deshalb immer zu numSentences++

    Denn: Sei x == '.', dann ist es ungleich '!' und umgekehrt ...
    es muss also richtig heißen:
    Wenn x ungleich '.' UND x ungleich '!' UND ...



  • Hallo Belli,
    vielen Dank. Jetzt kann ich es nachvollziehen 🙂


Anmelden zum Antworten