Ich versuche, etwas Codierung zu lernen, um meinen Wissensbereich zu erweitern, und ich schien in ein kleines Rätsel zu geraten.Anzahl der Wörter - Ignorieren/Subtrahieren von doppelten Leerzeichen
Ich versuche, ein Programm zu erstellen, um die Anzahl der Zeichen, Ziffern, Interpunktion, Leerzeichen, Wörter und Zeilen auszugeben, die aus einer Datei eingelesen werden. Hier
ist die Textdatei, in der ich das Lesen
See Jack run. Jack can run fast. Jack runs after the cat. The cat's fur is black. See Jack catch the cat.
Jack says, "I caught the cat."
The cat says, "Meow!"
Jack has caught 1 meowing cat. Jack wants 5 cats, but can't find any more.
Hier ist mein Code
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream lab3;
string word;
lab3.open("lab3.txt");
int countletters=0,countnum=0,countpunc=0,countspace=0,words=0,line=0;
char character;
if(!lab3)
{
cout << "Could not open file" << endl;
return 1;
}
while(lab3.get(character) && !lab3.eof())
{
if(isalpha(character))
{
countletters++;
}
if (isdigit(character))
{
countnum++;
}
if (ispunct(character))
{
countpunc++;
}
if (isspace(character))
{
countspace++;
}
if (isalpha(character) && (isspace(character++) || ispunct(character++)))
{
words++;
}
if(character=='\n')
{
line++;
}
}
cout << "There are " << countletters << " letters." << endl;
cout << "There are " << countnum << " numbers." << endl;
cout << "There are " << countpunc << " punctuations." << endl;
cout << "There are " << countspace << " spaces." << endl;
cout << "There are " << words << " words." << endl;
cout << "There are " << line << " sentences." << endl;
lab3.close();
return 0;
}
Ausgang:.
There are 167 letters.
There are 2 numbers.
There are 18 punctuations.
There are 52 spaces.
There are 0 words.
There are 4 sentences.
Einige Dinge, die ich gehofft, bin zu lernen:
- Eine Erklärung dafür, warum die Wortzahl nicht funktioniert, und Ersetzung durch Arbeitscode unter Berücksichtigung der doppelten Leerzeichen.
- Hinweis für Verbesserungen an meinem Code für Lernzwecke/Effizienz.
- Erläuterung zum Lesen von Informationen aus einer Textdatei. ob seine Buchstaben, Zahlen, Interpunktion, was auch immer Sie über diese Art der Codierung laufen können.
Einige Dinge, die ich bin mir bewusst:
using namespace std;
ist keine gute Praxis - was die beste Praxis für reale Anwendungen ist.- Ich bin ein Anfänger und dies kann nicht definitiv ist nicht die Creme de la Creme Codierung
`Vielen Dank im Voraus für Sie unterstützen und Anregungen :)
Nicht sicher über die anderen Dinge, aber das Hinzufügen des Namespace vor den Wörtern wie: std :: string ist besser, weil andere Namespaces die gleichen Wörter verwenden können./Hinweise zur Verbesserung meines Codes für Lernzwecke/Effizienz./Sollte bei codereview (http://codereview.stackexchange.com/) gefragt werden –
Warum wird 'character' inkrementiert, geschweige denn in der Mitte eines 'if' versteckt? '? – chris
Was ist Ihre Ausgabe, und was erwarten Sie zu erhalten? –