daten von festplatte filtern
-
vlplayer schrieb:
Noch dazu.! Wieso sollte ich mich nicht an regeln gehalten habe ?! ich finde sowas absolut unprofessionell von euch ich wende mich an das FORUM um eine Antwort auf meine frage zu bekommen ich verlange keine komplettösung nix . Also immer die Neuen auf die regeln aufmerksam zu machen ist absolut zu unrecht . wenn schon zu klugscheisserisch , dann vielleicht nur antworten zum thema bitte!
DU willst Hilfe. Also musst DU die nötigen Informationen liefern, damit man dir helfen kann.
-
vlplayer schrieb:
Also immer die Neuen auf die regeln aufmerksam zu machen ist absolut zu unrecht.
Nein, ist es nicht. Für irgendwas sind die Regeln da. Wenn du sie nicht einhältst, wirst du eben darauf hingewiesen. Das ist keinesfalls persönlich zu nehmen.
Dass es genau drei Möglichkeiten geben soll, ist ohne Angabe dieser wirklich keine hilfreiche Information. Das darf man dir ruhig sagen.
Zum Problem: Eine Möglichkeit bestünde darin, mit
std::ifstreamdie Daten einzulesen, in einemstd::vectorabzuspeichern und danach den Filteralgorithmus darüber laufen zu lassen.
-
vlplayer schrieb:
wenn schon zu klugscheisserisch , dann vielleicht nur antworten zum thema bitte!
So erreicht man nix. Vor allem wenn man selber eine Aufgabe bekommen hat und das FORUM bittet sie für einen (wenn auch nur in Teilen) zu lösen. Dabei lässt du alles weg, was von Belang sein sollte.
http://www.cplusplus.com/reference/
Hier ist ne wunderbare "Doku" zu C++. Und weil ich so lieb bin sag ich dir dass du am besten bei den "fstream"-Sachen ansetzt. Das ist zum Lesen/Schreiben von Dateien. Messdaten filtern kannst du dir selber ausdenken. Du bist nämlich der Einzige der weiß wie die Daten aussschauen.Und BTW:
hey, und zwar möchte ich ein programm erstellen das zum Zeitpunkt der Programmerstellung unbekannte Menge von auf Festplatte abgelegten Messwerten filtern soll.
Hast du Ahnung von Programmieren?!?
Du willst ein Programm erstellen, das schon während dem Erstellen Daten von der Festplatte liest und gleich noch filtert?
Das ist der EINZIGE Satz den du uns gegeben hast. Und du wunderst dich über die Antworten?!?
-
das ist der einzige satz den ich gestellt bekommen habe .
-
l'abra d'or schrieb:
hey, und zwar möchte ich ein programm erstellen das zum Zeitpunkt der Programmerstellung unbekannte Menge von auf Festplatte abgelegten Messwerten filtern soll.
Hast du Ahnung von Programmieren?!?
Du willst ein Programm erstellen, das schon während dem Erstellen Daten von der Festplatte liest und gleich noch filtert?
Das ist der EINZIGE Satz den du uns gegeben hast. Und du wunderst dich über die Antworten?!?Ich vermute es ist
[...] das eine (zum Zeitpunkt der Programmerstellung unbekannte) Menge von auf Festplatte abgelegten Messwerten filtern soll.
gemeint.
-
vlplayer schrieb:
hey, und zwar möchte ich ein programm erstellen das zum Zeitpunkt der Programmerstellung unbekannte Menge von auf Festplatte abgelegten Messwerten filtern soll.
und zwar sollte es 3 möglichkeiten geben dies zu realisieren. könnt ihr mir helfen?!Ich tue jetzt mal so, als wäre die Fragestellung vernünftiger Natur. Inwiefern willst du die Daten überhaupt filtern?
Du sagst du möchtest eine unbekannte Menge an Messwerten auf eine unbekannte Art filtern und fragst ob das möglich ist. Ja, durch eine unbekannte Funktion deren Implementation unbekannt ist.
-
vlplayer schrieb:
hey, und zwar möchte ich ein programm erstellen das zum Zeitpunkt der Programmerstellung unbekannte Menge von auf Festplatte abgelegten Messwerten filtern soll.
und zwar sollte es 3 möglichkeiten geben dies zu realisieren. könnt ihr mir helfen?!Ja - wir können Dir helfen.
Für alles was jetzt kommt, gehe ich davon aus, dass sich die besagten Messwerte in Dateien befinden und dass Du es in C++ realisieren möchtest. Weiter nehme ich an, dass nur die Anzahl der Messwerte zum Zeitpunkt der Programmerstellung unbekannt ist.
Grundsätzlich liest Du Variablen & Objekte aus Dateien mit std::ifstream; diese Klasse ist von std::istream abgeleitet und mit der Schnittstelle dieser Klasse kannst Du die eingebauten Typen bereits lesen.Für mehr brauchen wir noch einige Infos:
Wie ist das Format der Datei(en) mit den Messwerten?
Wie soll denn die Filterung der Daten aussehen?
Was soll die Ausgabe Deines Programms sein?Gruß
Werner
-
Vielleicht sowas?
#include <fstream> using std::ifstream; using std::ofstream; using std::ios_base; const size_t DEFAULT_CLUSTER_SIZE = 4096; template<typename T> void FilterData(ifstream& in, ofstream& out, bool (*transmit)(T& data)) { size_t buf_size = (DEFAULT_CLUSTER_SIZE/sizeof(T))*sizeof(T), bytes_read, bytes_to_write; char *in_buf = new char[buf_size], *out_buf = new char[buf_size]; T* data; while( !in.eof() ) { bytes_read = in.read(in_buf, buf_size).gcount(); bytes_to_write = 0; for( int i = 0; i < bytes_read; i += sizeof(T) ) { data = reinterpret_cast<T*>(in_buf + i); if( transmit(*data) ) { memcpy(out_buf + bytes_to_write, data, sizeof(T)); bytes_to_write += sizeof(T); } } out.write(out_buf, bytes_to_write); } delete[] in_buf; delete[] out_buf; } typedef struct st_data { int v1, v2, v3; } T_DATA; bool transmit(T_DATA& data) { return data.v2 % 2 ? true : false; } int main() { T_DATA myValues[] = { {0, 1, 2}, {1, 2, 3}, {2, 3, 4}, {3, 4, 5} }; const char *IN_FILE = "", *OUT_FILE = ""; /* - DATEN ERZEUGEN */ ofstream out(IN_FILE, ios_base::binary); out.write(reinterpret_cast<char*>(myValues), sizeof(T_DATA) * 4); out.close(); /* ---------------- */ FilterData<T_DATA>(ifstream(IN_FILE, ios_base::binary), ofstream(OUT_FILE, ios_base::binary), &transmit); return 0; }
-
FrEEzE2046 schrieb:
Vielleicht sowas?
template<typename T> void FilterData(ifstream& in, ofstream& out, bool (*transmit)(T& data)) {Mach doch die Funktion auch als template-Parameter, dann bist du flexibler und kannst auch Funktoren übergeben.
#include <iostream> using namespace std; template < typename Type, typename Predicate > Type transform(const Type& t, Predicate p) { return p(t); } int mach_was(int in) { return in + 20; } struct mach_was_t { int operator()(int in) const { return in + 21; } }; int main() { mach_was_t mw; for( int i=0; i<100; i+=10) cout << transform(i, mach_was) << " " << transform(i, mw) << endl; }Ist zwar etwas sinnlos, zeigt aber wie es geht.
-
l'abra d'or schrieb:
Ist zwar etwas sinnlos, zeigt aber wie es geht.
Danke, aber ich weiß schon wie sowas geht^^. Ich bin ja nicht derjenige der's braucht. Ich hab mir das einfach mal aus den Fingern gesogen. Wirklich auf das "Problem" zugeschnittene Lösungen kannst du eh nicht erstellen, da er sich "etwas vage" ausgedrückt hat.