daten aus .txt filtern < C/C++ < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 21:00 Do 11.05.2006 | Autor: | haker24 |
Aufgabe | Ich möchte ein Programm schreiben, dass aus einer .txt folgende Blöcke ausliest
Zitat:
S(0,2293,09.05.2006-16:26:23:911){
A(09.05.2006-16:26:21:167){a=5,0101,,,,ii552227314946,;c=0,13;}
B(09.05.2006-16:26:21:167){a=9,0101,,,,ii552227314946,;c=0,30;}
D(09.05.2006-16:26:23:741){f=B,CAU_NOCAV;t=A,CAU_NOCAV;a=9,0101,,,,ii552227314946,;a=5,0101,,,,ii552227314946,;}
E(09.05.2006-16:26:23:911);
}
S(0,2292,09.05.2006-16:26:24:262){
A(09.05.2006-16:26:20:516){a=5,0101,,,,ii552227314946,;c=0,8;}
B(09.05.2006-16:26:20:516){a=1,0101,,,,ii552227314946,;c=0,22;}
D(09.05.2006-16:26:24:121){f=B,CAU_NOCAV;t=A,CAU_NOCAV;a=1,0101,,,,ii552227314946,;a=5,0101,,,,ii552227314946,;}
E(09.05.2006-16:26:24:262);
}
bei jedem S fängt ein neuer Datenblock an.
Ich möchte dass das Programm sich die einzelnen Blöcke vornimmt und mir immer das Datum (siehe :S(0,2292,09.05.2006-16:26:24:262)und die Uhrzeit raussucht und noch ein paar andere Daten, und mir dann eine neue .txt schreibt, in der die Daten dann geordnet beginnend mit datum und immer mit ";"getrennt hineingeschrieben werden.
Der Datensatz soll in der neuen TXT dann so aussehen:
09.05.2006 ;17:48:22;18:01:52;5;9;16045507000;552433389810;810;CAU_NCC
|
Hey Leute, ich hab ein kleines Problem
ich hatte schon einen c++ Kurs aber ist schon eine Weile her und ich bräuchte dringend eure Hilfe.
Könnte mir das vieleicht mal jemand programmieren und neben notizen hinschreiben, dass ich das dann Kapiere?
Das wäre sehr nett
Danke schon mal !
Ich habe diese Frage auch in folgenden Foren auf anderen Internetseiten gestellt :http://www.coding-board.de/board/showthread.php?t=19940
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 21:25 Do 11.05.2006 | Autor: | haker24 |
Mir fehlt nun nur noch der eigentliche Filter, eine "Funktion" die die Buchstaben von einem Block zählt (hier die variable a) und die Daten, nachdem sie ausgewertet wurden, aus der alten TXT löscht, so dass der nächste Block bearbeitet werden kann,
ich hätte auch nichts gegen eine völlig andere Lösung der Problematik
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <algorithm>
#include <cctype>
using namespace std;
int main( int )
{
int a;
a=294;
FILE *stream;
char list [a];
int i, numread, numwritten;
/* Open file in text mode: */
if( (stream = fopen( "bearbeitet.txt", "r+t" )) != NULL )
{
/* Attempt to read in 25 characters */
numread = fread( list, sizeof( char ), a, stream );
printf( "Number of items read = [mm] %d\n", [/mm] numread );
printf( list );
fclose( stream );
}
else
printf( "File could not be [mm] opened\n" [/mm] );
/* Open file in text mode: */
if( (stream = fopen( "neu.txt", "w+t" )) != NULL )
{
numread=fwrite(list,sizeof(char),a,stream);
/* Write 25 characters to stream */
numwritten = fwrite( list, sizeof( char ), a, stream );
printf( "Wrote %d [mm] items\n", [/mm] numwritten );
fclose( stream );
}
}
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 15:04 Fr 12.05.2006 | Autor: | nczempin |
Dieser Beispielcode ist jedenfalls kein C++, sondern zu 95 % plain C.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 15:15 Fr 12.05.2006 | Autor: | haker24 |
Ich hab mich halt an jemanden gewandt und hab mir aus mehrern quelltexten was zusammen gesucht.
Dann such ich halt immernoch nach nem kompletten Lösungsansatz
tut mir leid!
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 15:42 Fr 12.05.2006 | Autor: | nczempin |
C (aber auch C++) ist für diese Aufgabe nicht besonders gut geeignet.
Selbst Java würde die Lösung vereinfachen, aber am besten sind dynamische Sprachen geeignet, die extra für solche Probleme erfunden wurden, wie
Perl, Python oder Ruby.
Ich weiß nicht, warum du in der 10. Klasse schon mit C arbeitest; es würde sich eher lohnen, z. B. Ruby zu lernen (ist sehr schnell möglich, alles ist viel einfacher als bei C) als es kompliziert in C zu lösen.
Ich könnte mir sicherlich was aus dem Hirn saugen und es für dich in C programmieren, aber ich halte das für ineffizient.
Für deine zukünftige Entwicklung rate ich dir: Lad dir Ruby runter, spiel damit rum, und probier dann das Problem damit zu lösen. In 29 Tagen ist das zu schaffen. Wenn du den Weg gehst, helf ich dir auch mit Ruby, aber für C ist mir meine Zeit zu schade. Ich muß mich ja schon professionell mit Java rumschlagen, ist ja schlimm genug
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 18:09 Fr 12.05.2006 | Autor: | haker24 |
Hey, erstmal ein Dankeschön, dass sie/du dich meiner Frage angenommen hast/haben.
könnten wir vieleicht so verbleiben, dass sie/du mir dieses Programm in einer "Dynamischen Sprache" wie Ruby, die sie/du zum Beispiel gebracht haben/hast, Programmieren und mir Anmerkungen dazu schreiben; denn dies ist mir die liebste Art eine Sprache zu lernen, wenn ich ein fertiges Programm mit kleinen Erklärungen am Rande habe, jemanden habe der mir vieleicht noch das ein oder andere kleine Frägchen beantwortet und ich mich nach und nach in die Logig der Sprache eindenken kann.
Vielen Dank nun auch noch einmal am Ende und im Vorraus
|
|
|
|