005
25.04.2006, 22:25 Uhr
~Vendetta
Gast
|
Nabend ,
hab jetzt bisl weiter gemacht und steh jetzt vor paar problemen bzw hab paar Fragen zu meinem quellcode bei denen ich nicht weiterweis, weil der Lehrer heute krank war:
Code: |
#include <iostream.h> #include <iomanip.h> #include <stdio.h> #include <conio.h> #include <math.h> #include <fstream>
void einzeldatei(void); void verzeichnis(void);
int main() { char wahl;
//Eingabeaufforderung/Auswahl cout<<"Bitte waehlen Sie was Sie machen wollen :"<<endl<<endl <<" <A> Eine Einzelne Datei einlesen."<<endl <<" <B> Ein ganzes Verzeichnis einlesen."<<endl <<" <C> Hilfe."<<endl <<" <D> Programm beenden."<<endl<<endl; cin>>wahl; clrscr(); switch (wahl) { case 'a': case 'A': einzeldatei(); break;
case 'b': case 'B': verzeichnis(); break; }
getchar(); }
void einzeldatei(void) { //Variablen Deklaration //Zaehlvariablen für Zeichen int klein=0, gross=0, zahl=0, sonder=0, gesamt=0, zeilenu=0, leer=0;
//Eingabe des Dateipfades char eingabe[30]; cout<<"Bitte geben Sie den Dateipfad ein: "; gets (eingabe); clrscr();
//Datei öffnen, auslesen und schließen ifstream file (eingabe); char buff;
while(file.get(buff)) { if(buff>=65 && buff<=90) gross++; //Großbuchstaben ohne Umlaute else if(buff>=97 && buff<=122) klein++; //Kleinbuchstaben ohne Umlaute else if(buff>=48 && buff<=57) zahl++; //Ziffern else if(buff==10) zeilenu++; //Zeilenumbrueche else if(buff==32) leer++; //Leerzeichen else if(buff==-28) klein++; //Umlaut a else if(buff==-60) gross++; //Umlaut A else if(buff==-10) klein++; //Umlaut o else if(buff==-42) gross++; //Umlaut O else if(buff==-4) klein++; //Umlaut u else if(buff==-36) gross++; //Umlaut U else sonder++; //Sonderzeichen } file.close();
//Ausgabe gesamt = klein+gross*2+zahl+sonder*2+zeilenu+leer;
cout<< "Ihre erreichten Anschlaege im Detail sind:"<<endl; cout<< "------------------------------------------"<<endl<<endl; cout<< "Grossbuchstaben: " << gross <<endl; cout<< "Kleinbuchstaben: " << klein <<endl; cout<< "Zahlen: " << zahl <<endl; cout<< "Zeilenumbrueche: " << zeilenu <<endl; cout<< "Sonderzeichen: " <<sonder<<endl<<endl; cout<< "Gesamtanschlagszahl: " <<gesamt<<endl<<endl<<endl;
//Eingabe des Speicherpfades char speicherpfad[30]; cout<<"Bitte geben Sie den Speicherpfad fuer die Ergebnisdatei ein: "; gets (speicherpfad); clrscr();
FILE *stream; stream = fopen(speicherpfad, "a+"); fprintf(stream,"%d\n", gross); fprintf(stream,"%d\n", klein); fprintf(stream,"%d\n", zahl); fprintf(stream,"%d\n", zeilenu); fprintf(stream,"%d\n", sonder); fprintf(stream,"%d\n", gesamt); fclose(stream);
}
|
Beim ersten Teil der Aufgabe muss ich ne .txt Datei auslesen und bestimmen wieviele Grossbuchstaben usw darin enthalten sind, dann muss man einen Speicherort mit dem Namen einer .txt Datei auswählen die dann erstellt wird und in der das Ergebnis der Auslesung reingeschrieben wird. Nur das Problem ist das ich ned weis wie ich das hinbekomm das bei der Auswertung neben den blanken Zahlen auch die art halt z.B. Grossbuchstabe steht in der .txt datei.
Code: |
void verzeichnis(void) { //Variablen Deklaration //Zaehlvariablen für Zeichen int klein=0, gross=0, zahl=0, sonder=0, gesamt=0, zeilenu=0, leer=0;
//Eingabe des ersten Dateipfades um Verzeichnis einzulesen char eingabe[30]; cout<<"Bitte geben Sie den Dateipfad der ersten Datei an,"<<endl <<"um das Gesamte Verzeichnis auszulesen: "; gets (eingabe); clrscr();
//Datei öffnen, auslesen und schließen ifstream file (eingabe); char buff;
while(file.get(buff)) { if(buff>=65 && buff<=90) gross++; //Großbuchstaben ohne Umlaute else if(buff>=97 && buff<=122) klein++; //Kleinbuchstaben ohne Umlaute else if(buff>=48 && buff<=57) zahl++; //Ziffern else if(buff==10) zeilenu++; //Zeilenumbrueche else if(buff==32) leer++; //Leerzeichen else if(buff==-28) klein++; //Umlaut a else if(buff==-60) gross++; //Umlaut A else if(buff==-10) klein++; //Umlaut o else if(buff==-42) gross++; //Umlaut O else if(buff==-4) klein++; //Umlaut u else if(buff==-36) gross++; //Umlaut U else sonder++; //Sonderzeichen } file.close();
//Ausgabe und Speichern in .txt Datei gesamt = klein+gross*2+zahl+sonder*2+zeilenu+leer;
FILE *stream; stream = fopen("c:\\Auswertung.txt", "a+"); fprintf(stream,"%d\n", gesamt); printf("%d\n", gesamt); fclose(stream); }
|
Beim zweiten Teil der Aufgabe sollen mehrere .txt Dateien die alle den gleichen Namen haben (man kann auswählen wie die Dateien heissen) auser am ende ne Zahl also z.B. testdatei1.txt oder testdatei2.txt ausgelesen werden und dann die Gesamtanschläge in eine neue .txt Datei geschrieben werden die man auswählen kann bzw erstellen kann. Das Problem ist wie ich die Zahl in der .txt Dateibezeichnung durch ne if Anweisung so oft wiederholen kann mit dem Array das alle Dateien ausgelesen werden (ich hab noch vor, ne eingabe zu machen wieviele .txt Dateien ausgelesen werden sollen)
Und als letztes problem ist das wir dieses Projekt auf RTF, also Wordpad dateien ausweiten müssen, nur das problem ist ich hab keinen plan wie man RTF Dateien auslesen kann. Hab schon bei MSDN geschaut nur da gabs leider nichts Brauchbares.
Ich hoff ihr könnt mir Paar hilfen geben.
MfG |