Summieren und sortieren
-
Hey Leute ich hatte mit Werners Vorschlag ein Problem und habe es nicht hingekriegt bevor ich wieder blöde fragen stelle
und euch nerve hab ich es alternativ gelöst und habe meine fertige csv im programm noch mal geöffnet und für jede datei eihene strings und doubles geschrieben und sie einfach addiertmyFile.open ("C:/valueextractor/extractor.csv"); if (myFile) { string mdd4 (md.datum) ; double mdf4 (md.filescreated) ; double mdh4 (md.hours_worked); cout << endl << mdd2 << " | " << mdh1 <<" | " << mdh2<< " | "<< mdh3 <<" | " << mdh4 << "|-|-| " << mdf1 <<" | "<< mdf2 <<" | "<< mdf3 << " | "<< mdf4 << endl ; cout << endl << mdd2 << " | " << mdh1 + mdh2 + mdh3 + mdh4 << " | " << mdf1 + mdf2 + mdf3 + mdf4 << endl ; } myFile.close();und er rechnet ja auch richtig nur wenn eine meiner md's mehrere zeilen hat liest er wieder nur jeweils eine in meinen neuen doubles ein
wodurch er wieder nicht richtig rechnet .. hier nochmal der ganze code#include <iostream> #include <istream> #include <fstream> #include <limits> #include <string> struct MD // string für datum und doubles für die werte in zahlen { std::string datum; double hours_worked; double filescreated; }; namespace { const std::streamsize ALL = std::numeric_limits< std::streamsize >::max(); }; // filter :P std::istream& operator>>( std::istream& in, MD& md ) { in.ignore( ALL, '[' ) >> md.datum; std::string token; if( getline( in.ignore( ALL, '|' ), token, '=' ) ) { md.hours_worked = 0.; md.filescreated = 0.; if( token == "hours_worked" ) in >> md.hours_worked; else if( token == "filescreated" ) in >> md.filescreated; else in.setstate( std::ios_base::failbit ); } return in; } struct Komma : public std::numpunct< char > { protected: virtual char_type do_decimal_point() const { return ','; } }; int main() { using namespace std; ifstream fin ("C:/valueextractor/valueextractor/testfolder/days/2012-10-03.md") ; fin.imbue( locale( fin.getloc(), new Komma ) ); if( !fin.is_open() ) { cerr << "Fehler beim Oeffnen der Datei" << endl; return -2; } //stream öffnen ofstream myFile; myFile.open ("C:/valueextractor/extractor.csv"); MD md; while ( fin >> md ) { // md's auswerten cout << "Datum |Stunden gearbeitet | Dateien erstellt " << endl ; cout << md.datum << "| " << md.hours_worked << " | " << md.filescreated << endl ; //stream schreiben if (myFile) myFile << "Datum | Stunden gearbeitet | Dateien erstellt " << endl; myFile << md.datum << "| " << md.hours_worked << " | " << md.filescreated << endl ; //MD'D summieren } // stream schließen myFile.close(); string mdd1 (md.datum) ; double mdf1 (md.filescreated) ; double mdh1 (md.hours_worked); if( fin.eof() ) { } //------------------------------------------2222222222222222222222222222222222------------------------------------------------------------ ifstream fin1 ("C:/valueextractor/valueextractor/testfolder/days/2012-10-04.md") ; fin1.imbue( locale( fin1.getloc(), new Komma ) ); if( !fin1.is_open() ) { cerr << "Fehler beim Oeffnen der Datei" << endl; return -2; } //stream öffnen myFile.open ("C:/valueextractor/extractor.csv", std::ios::app); while ( fin1 >> md ) { // md's auswerten cout << "Datum |Stunden gearbeitet | Dateien erstellt " << endl ; cout << md.datum << "| " << md.hours_worked << " | " << md.filescreated << endl ; //stream schreiben if (myFile) myFile << "Datum | Stunden gearbeitet | Dateien erstellt " << endl; myFile << md.datum << "| " << md.hours_worked << " | " << md.filescreated << endl ; //MD'D summieren } // stream schließen myFile.close(); string mdd2 (md.datum) ; double mdf2 (md.filescreated) ; double mdh2 (md.hours_worked); if( fin1.eof() ) { } //-----------------------------------------------3333333333333333333333333333333333333333--------------------------------------------- ifstream fin11 ("C:/valueextractor/valueextractor/testfolder/meetings/MeetingForWikiDown1.md") ; fin11.imbue( locale( fin11.getloc(), new Komma ) ); if( !fin11.is_open() ) { cerr << "Fehler beim Oeffnen der Datei" << endl; return -2; } //stream öffnen myFile.open ("C:/valueextractor/extractor.csv", std::ios::app); while ( fin11 >> md ) { // md's auswerten cout << "Datum |Stunden gearbeitet | Dateien erstellt " << endl ; cout << md.datum << "| " << md.hours_worked << " | " << md.filescreated << endl ; //stream schreiben if (myFile) myFile << "Datum | Stunden gearbeitet | Dateien erstellt " << endl; myFile << md.datum << "| " << md.hours_worked << " | " << md.filescreated << endl ; //MD'D summieren } // stream schließen myFile.close(); string mdd3 (md.datum) ; double mdf3 (md.filescreated) ; double mdh3 (md.hours_worked); if( fin11.eof() ) { } //-------------------------------------------------4444444444444444444444444444444444444------------------------------------------------- ifstream fin111 ("C:/valueextractor/valueextractor/testfolder/meetings/MeetingForWikiDown2.md") ; fin111.imbue( locale( fin111.getloc(), new Komma ) ); if( !fin111.is_open() ) { cerr << "Fehler beim Oeffnen der Datei" << endl; return -2; } //stream öffnen myFile.open ("C:/valueextractor/extractor.csv", std::ios::app); while ( fin111 >> md ) { // md's auswerten cout << "Datum |Stunden gearbeitet | Dateien erstellt " << endl ; cout << md.datum << "| " << md.hours_worked << " | " << md.filescreated << endl ; //stream schreiben if (myFile) myFile << "Datum | Stunden gearbeitet | Dateien erstellt " << endl; myFile << md.datum << "| " << md.hours_worked << " | " << md.filescreated << endl ; //MD'D summieren } // stream schließen myFile.close(); if( fin111.eof() ) { } //-------------------------------------------------ende--------------------------------------------------------------------------------- myFile.open ("C:/valueextractor/extractor.csv"); if (myFile) { string mdd4 (md.datum) ; double mdf4 (md.filescreated) ; double mdh4 (md.hours_worked); cout << endl << mdd2 << " | " << mdh1 <<" | " << mdh2<< " | "<< mdh3 <<" | " << mdh4 << "|-|-| " << mdf1 <<" | "<< mdf2 <<" | "<< mdf3 << " | "<< mdf4 << endl ; cout << endl << mdd1 << " | " << mdh1 + mdh2 + mdh3 + mdh4 << " | " << mdf1 + mdf2 + mdf3 + mdf4 << endl ; } myFile.close(); getchar () ; return 0; }hier die werte die in der csv stehen
Datum | Stunden gearbeitet | Dateien erstellt 2012-10-04| 0 | 2 Datum | Stunden gearbeitet | Dateien erstellt 2012-10-04| 0 | 0.5 Datum | Stunden gearbeitet | Dateien erstellt 2012-10-04| 1.25 | 0 Datum | Stunden gearbeitet | Dateien erstellt 2012-10-03| 0 | 1 Datum | Stunden gearbeitet | Dateien erstellt 2012-10-03| 0 | 3 Datum | Stunden gearbeitet | Dateien erstellt 2012-10-04| 1.5 | 0 Datum | Stunden gearbeitet | Dateien erstellt 2012-10-04| 10 | 0und er rechnet nur zeile 2 ,10 , 12 , 14 . die anderen 3 werte zeilen liest er nicht ein in meine neuen doubles wieso ?
achja ps das giebt er zum schlus in die csv aus2012-10-04 | 0 | 1.25 | 1.5 | 10|-|-| 3 | 0 | 0 | 0 2012-10-03 | 12.75 | 3sieht jemand mein Problem ..
(außer das ich den code nicht verstehe ... gewisse foren mitglieder fühlen sich schon angesprochen
)
-
.. ja ich sehe Dein Problem

immer da wo im Code
//MD'D summierensteht, musst Du auch Code hinschreiben, der die MDs summiert.
-
Sagst du das weil du der meinung bist der muss dahin oder weil ich das kommentar dort verfasst habe ?
.. aber nein klappt nicht ... es war ursprünglich anders geplannt ich habe nur vergessen die kommentare zu löschen 
-
ich bin der Meinung, das Summieren muss an diese Stellen. Was klappt nicht?
-
Besserwessi schrieb:
ich bin der Meinung, das Summieren muss an diese Stellen. Was klappt nicht?
Das summieren dort
auf jedenfall nicht auf meiner art
fällt dir eine bessere art ein ? 
gruß cevin
-
Summieren geht mit +

Weißt Du, dass man mit der Information 'klappt nicht' keinerlei Hilfestellung geben kann.
-
Besserwessi schrieb:
Summieren geht mit +

Weißt Du, dass man mit der Information 'klappt nicht' keinerlei Hilfestellung geben kann.Da hst du villt Recht

Also ich überschreite damit gültigkeitsbereiche ...
deswegen summiere ich ganz unten alles zusammen
-
Cevin19994 schrieb:
Also ich überschreite damit gültigkeitsbereiche ...
was bedeutet das - gibt es eine Fehlermeldung, Crash irgendwas?
Cevin19994 schrieb:
deswegen summiere ich ganz unten alles zusammen
nein, Du summierst nur den jeweils zuletzt gelesenen Wert aus jeder Datei. Wo glaubst Du denn geschieht das Summieren von zwei Werten aus einer Datei in Deinem Code.
-
Besserwessi schrieb:
Cevin19994 schrieb:
Also ich überschreite damit gültigkeitsbereiche ...
was bedeutet das - gibt es eine Fehlermeldung, Crash irgendwas?
Das wird dir klar, wenn du seine letzten beiden Threads liest. Er weiß nicht wirklich, was ein Gültigkeitsbereich ist. Er wartet darauf, dass ihm jemand eine Komplettlösung macht. Entweder gib sie ihm oder lass es. Aber versuch nicht die pädagogische Tour. Sie funktioniert nicht. Da wurden hier im Forum schon 13 Seiten für verschwendet.
-
Zu dem gültigkeitsbereich : Ähm ja es kommem mehrere fehlermeldungen das meine md's nicht deklariert sind
wo das summieren geschied ganz unten ?
myFile.open ("C:/valueextractor/extractor.csv"); if (myFile) { string mdd4 (md.datum) ; double mdf4 (md.filescreated) ; double mdh4 (md.hours_worked); cout << endl << mdd1 << " | " << mdh1 << " | " << mdf1 << endl ; cout << mdd2 << " | " << mdh2 + mdh3 + mdh4 << " | " << mdf2 + mdf3 + mdf4 << endl ; myFile << mdd1 << " | " << mdh1 << " | " << mdf1 << endl ; myFile << mdd2 << " | " << mdh2 + mdh3 + mdh4 << " | " << mdf2 + mdf3 + mdf4 << endl ; } myFile.close();ja das ich jeweils nur den zuletzt gemessenen wert summiere weiß ich ja
ich habe ja hinter jeder meiner eingelesenen dateien nochmal den inhalt in ein
neu erstellte string oder double geschrieben und die summiere ich unten zusammen .. also lese ich je den zuletzt gemessenen wert in meine neu erstellte strings oder doubles ?
wie kann ich denn nicht das zuletzt gemessene sondern alles in die neuen strings und doubles schreiben ?
-
SeppJ schrieb:
Besserwessi schrieb:
Cevin19994 schrieb:
Also ich überschreite damit gültigkeitsbereiche ...
was bedeutet das - gibt es eine Fehlermeldung, Crash irgendwas?
Das wird dir klar, wenn du seine letzten beiden Threads liest. Er weiß nicht wirklich, was ein Gültigkeitsbereich ist. Er wartet darauf, dass ihm jemand eine Komplettlösung macht. Entweder gib sie ihm oder lass es. Aber versuch nicht die pädagogische Tour. Sie funktioniert nicht. Da wurden hier im Forum schon 13 Seiten für verschwendet.
Das Reicht jetzt !! was bildest du dir eigendlich ein ... er versucht es wenigstens auf die nette tour nicht so wie du unhäfflich und denkst du wärst der beste
und nein ich habe tausendmal gesagt ich will keine komplette lösung sondern nur wissen wo der fehler liegt ... das kriege ich schon alleine gelöst wenn ich weiß wo der ist !!und ich sagte dir auch das du es lassen sollst .. ich dachte du hast die gedult mit mir verloren .. aber genug zeit um mich runter zu machen .... eingebildeter !§%§ !!
-
Cevin19994 schrieb:
Zu dem gültigkeitsbereich : Ähm ja es kommem mehrere fehlermeldungen das meine md's nicht deklariert sind
was spricht dann dagegen, die md's zu deklarieren?
Cevin19994 schrieb:
wie kann ich denn nicht das zuletzt gemessene sondern alles in die neuen strings und doubles schreiben ?
gar nicht - Du kannst nicht mehr als einen double in einen double stecken. Strings könntest Du an einander ketten - aber das ist wohl nicht, was Du willst.
Und wenn Du die Summe willst, geht mit +, sagte ich schon.
-
Hmmm ou ... Ja also in doubles passten nie mehr als ein double ?
ok Und in Arrays ? da kann ich ja ziemlich viele ints unterbringen bei bedarf ... gilt das auch für doubles ?
-
Cevin19994 schrieb:
Das Reicht jetzt !! was bildest du dir eigendlich ein ... er versucht es wenigstens auf die nette tour nicht so wie du unhäfflich und denkst du wärst der beste
und nein ich habe tausendmal gesagt ich will keine komplette lösung sondern nur wissen wo der fehler liegt ... das kriege ich schon alleine gelöst wenn ich weiß wo der ist !!und ich sagte dir auch das du es lassen sollst .. ich dachte du hast die gedult mit mir verloren .. aber genug zeit um mich runter zu machen .... eingebildeter !§%§ !!
DU verschwendest hier seit Wochen die Zeit freiwilliger Helfer mit den immergleichen Fragen, weil du einfach nicht die Tipps befolgst, die dir in dem ersten Thread in den ersten Antworten gegeben wurden und nicht wenigstens mal so viel C++ lernst, dass du die Antworten (die du zu dieser Frage auch schon zig mal bekommen hast) überhaupt verstehst. Du merkst ja nicht einmal, dass du deine Antwort schon mindestens 5x bekommen hast.
Ich schreite hier als Moderator des Forums ein, nicht um dir zu helfen, sondern um Besserwessi davor zu bewahren, was ich, Werner Salomon, unskilled, out, Michael E. und andere schon längst hinter uns haben: Mit einer Wand reden. Da kann er viel besser jemand anderem helfen, dem das auch was bringt und wo er hinterher das Gefühl hat, auch wirklich geholfen zu haben.
-
Cevin19994 schrieb:
Hmmm ou ... Ja also in doubles passten nie mehr als ein double ?
ok Und in Arrays ? da kann ich ja ziemlich viele ints unterbringen bei bedarf ... gilt das auch für doubles ?
Klar, wobei Container besser sind. Du hast aber nie gesagt, dass Du Arrays brauchst - wofür? Ich dachte, Du wolltest summieren.
-
Besserwessi schrieb:
Cevin19994 schrieb:
Hmmm ou ... Ja also in doubles passten nie mehr als ein double ?
ok Und in Arrays ? da kann ich ja ziemlich viele ints unterbringen bei bedarf ... gilt das auch für doubles ?
Klar, wobei Container besser sind. Du hast aber nie gesagt, dass Du Arrays brauchst - wofür? Ich dachte, Du wolltest summieren.
nun ja das summieren klappt jetzt ja wunderbar ganz unten im code ... mit dem "+"
nur das er nicht alles zeilen summiert weil ich ja meine neuen doubles summieren will wo nur ein double rein passt ... deswegen dachte ich mir wenn ich
meine neuen doubles ( die ich zurzeit summiere ) mit arrays oder besser containern .. danke :).. austausche .. könnte ich es richtig summieren ? denk ich da falsch ? oder ...
-
SeppJ schrieb:
Cevin19994 schrieb:
Das Reicht jetzt !! was bildest du dir eigendlich ein ... er versucht es wenigstens auf die nette tour nicht so wie du unhäfflich und denkst du wärst der beste
und nein ich habe tausendmal gesagt ich will keine komplette lösung sondern nur wissen wo der fehler liegt ... das kriege ich schon alleine gelöst wenn ich weiß wo der ist !!und ich sagte dir auch das du es lassen sollst .. ich dachte du hast die gedult mit mir verloren .. aber genug zeit um mich runter zu machen .... eingebildeter !§%§ !!
DU verschwendest hier seit Wochen die Zeit freiwilliger Helfer mit den immergleichen Fragen, weil du einfach nicht die Tipps befolgst, die dir in dem ersten Thread in den ersten Antworten gegeben wurden und nicht wenigstens mal so viel C++ lernst, dass du die Antworten (die du zu dieser Frage auch schon zig mal bekommen hast) überhaupt verstehst. Du merkst ja nicht einmal, dass du deine Antwort schon mindestens 5x bekommen hast.
Ich schreite hier als Moderator des Forums ein, nicht um dir zu helfen, sondern um Besserwessi davor zu bewahren, was ich, Werner Salomon, unskilled, out, Michael E. und andere schon längst hinter uns haben: Mit einer Wand reden. Da kann er viel besser jemand anderem helfen, dem das auch was bringt und wo er hinterher das Gefühl hat, auch wirklich geholfen zu haben.
ach komm niemand mag dich hier .. toller moderator .. ich habe deine letzten antworten gesehen .. du bist nicht nur zu mir so negativ sondern zu allem was dir nicht passt .. und das hörst du wohl nicht zum erstenmal .... und ob du es glaubst oder nicht ... selbst wenn mein problem nicht gelöst ist hat er mir schon geholfen .. ich weiß jetzt warum das mit dem summieren nicht klappt wie es soll .. dafür bin ich auch dankbar ... und ganz ehrlich such dir ne freundin ... irgendwann verlier ich auch meine geduld mit menschen und da bin ich nicht mehr höfflich ... also endschuldige meinen ton diesmal bitte gruß cevin

-
Cevin19994 schrieb:
ach komm niemand mag dich hier
Doch ich.
-
cooky451 schrieb:
Cevin19994 schrieb:
ach komm niemand mag dich hier
Doch ich.
Danke für dein mitwirlen

Aber SeppJ könnten wir das jetzt sein lassen das ist kein streit forum ...
und wenn DU nicht viel von mir hällst ist es ok
aber ich denke jeder kann für sich entscheiden ob wer jemanden hilft ...
Also könnten wir unseren "STREIT" jetzt bei seite legen ?
-
Du darfst hier gerne weiter fragen und ich werde dich wie jeden anderen Nutzer zu behandeln, aber wenn du wieder anfängst genau die gleichen Fragen wie in den anderen Threads zu stellen (mit voraussichtlich genau den gleichen Antworten die du aus genau den gleichen Gründen wie bisher nicht verstehen wirst), werde ich wieder einschreiten.
Eine gute Frage für dich wäre beispielsweise: Wie lerne ich C++?
Gute Antworten dazu findest du in den FAQ/wichtigen Threads und in den Signaturen vieler Moderatoren. Dir fehlt im Moment das Wissen, um überhaupt Fachantworten zu verstehen. Hättest du vor zwei Wochen mit dem Lernen begonnen (wie dir damals empfohlen wurde) wärst du längst so weit.