Strukturen, struct, Felder, c++
-
@wob sagte in Strukturen, struct, Felder, c++:
Ich hoffe mal, dass
std::string
undstd::vector
möglichst bald eingeführt werden.Oh, du Optimist…
-
@ShuraiyaKudo könnte jmd es vllt für mich schreiben in c sprache?
-
@ShuraiyaKudo
Du hast gefragt...#include <string> #include <vector> #include <iostream> #include <fstream> #include <algorithm> struct Person { int PersonalNummer = 0; std::string Vorname; std::string Nachname; std::string Beruf; float Gehalt = 0.0f; }; std::istream& operator>>( std::istream& is, Person& person ) { is >> person.Nachname >> person.Vorname >> person.Beruf >> person.Gehalt >> person.PersonalNummer; return is; } std::vector<Person> read_personnel() { std::ifstream ifs( "d:/personal.txt" ); // Zeile mit Anzahl der Einträge kann ignoriert werden std::string dummy; std::getline( ifs, dummy ); std::vector<Person> retval; Person current; while( ifs >> current ) { retval.push_back( current ); } return retval; } int main() { // Personaldaten einlesen std::vector<Person> const personal = read_personnel(); // gesuchte Berufsgruppe ist "Tischler" std::string const beruf = "Tischler"; // ersten Eintrag der gesuchten Berufsgruppe suchen auto first = std::find_if( personal.begin(), personal.end(), [&]( Person const& p ) { return p.Beruf == beruf; } ); if( first != personal.end() ) { // es gibt einen Treffer, ab dem ersten Treffer das Minimum suchen auto comparison = [&]( Person const& current, Person const& minimum_so_far ) { // Person muss der gesuchten Berufsgruppe angehören und ein niedrigeres Gehalt haben return current.Beruf == beruf && current.Gehalt < minimum_so_far.Gehalt; }; auto pos = std::min_element( first, personal.end(), comparison ); std::cout << "Kleinstes Gehalt mit " << pos->Gehalt << " als " << pos->Beruf << " hat " << pos->Vorname << " " << pos->Nachname << std::endl; } }
Wer mag kann jetzt noch die deutschen Bezeichner durch die englischen ersetzen. Bonuspunkte gibt´s für die Gleichbehandlung von "tischler", "Tischler" und "TISCHLER".
Edit:
Ist C++, kein C. Warum in C std::string und std::vector nachprogrammieren, wenn´s die in C++ schon fertig gibt?
-
Das ist jetzt aber C++, nicht C.
-
@SeppJ sagte in Strukturen, struct, Felder, c++:
Das ist jetzt aber C++, nicht C.
Hab den Beitrag nicht aktualisiert und direkt gepostet.
-
@DocShoe Danke dir aber ich bräuchte es in c da wir das andere zeug noch nicht behandelt haben
-
@ShuraiyaKudo sagte in Strukturen, struct, Felder, c++:
@DocShoe Danke dir aber ich bräuchte es in c da wir das andere zeug noch nicht behandelt haben
Aufgabenstellung:
Schreiben Sie ein C++-Programm, das ...
=> Du brauchst es nicht in C, sondern in C++. Du brauchst es vielleicht in schlechtem C++, weil ihr das gute Zeug noch nicht behandelt habt. Aber nicht in C.
-
@ShuraiyaKudo sagte in Strukturen, struct, Felder, c++:
struct person { char name[40]; char vorname[20]; char beruf[40]; float gehalt; int personalnummer; };
Verstehe bitte folgendes Problem. Wenn du ein solches Programm veröffentlichst, dauert es nur wenige Tage bis ein Herr
Adolph Blaine Charles David Earl Frederick Gerald Hubert Irvin John Kenneth Lloyd Martin Nero Oliver Paul Quincy Randolph Sherman Thomas Uncas Victor William Xerxes Yancy Zeus Wolfeschlegelsteinhausenbergerdorffwelchevoralternwarengewissenhaftschaferswessenschafewarenwohlgepflegeundsorgfaltigkeitbeschutzenvorangreifendurchihrraubgierigfeindewelchevoralternzwolfhunderttausendjahresvorandieerscheinenvonderersteerdemenschderraumschiffgenachtmittungsteinundsiebeniridiumelektrischmotorsgebrauchlichtalsseinursprungvonkraftgestartseinlangefahrthinzwischensternartigraumaufdersuchennachbarschaftdersternwelchegehabtbewohnbarplanetenkreisedrehensichundwohinderneuerassevonverstandigmenschlichkeitkonntefortpflanzenundsicherfreuenanlebenslanglichfreudeundruhemitnichteinfurchtvorangreifenvorandererintelligentgeschopfsvonhinzwischensternartigraum Sr.
in Kurzform Hubert Blaine Wolfeschlegelsteinhausenbergerdorff Sr. kommt, von Beruf Eisenbahner im Betriebsdienst Fachrichtung Lokführer und Transport in Teilzeit ist und sich darüber beschwert dass dein Programm abstürzt.
Nimm std::string! Dann kann dir die Länge eines Namens egal sein!
PS:
Den Namen gibt es wirklich: https://en.wikipedia.org/wiki/Hubert_Blaine_Wolfeschlegelsteinhausenbergerdorff_Sr.
-
@ShuraiyaKudo sagte in Strukturen, struct, Felder, c++:
@DocShoe Danke dir aber ich bräuchte es in c da wir das andere zeug noch nicht behandelt haben
Du hast doch jetzt genügend Anhaltspunkte für Recherche in Eigeninitiative. Hier noch ein paar Stichworte:
- Iteratoren
- std::string
- std::vector
- std::find_if
- std::min_element
- Lambda
Wenn du zu den einzelnen Punkten Fragen hast werden sie dir hier gern beantwortet sofern du Anstrengungen machst, dich da selbst zu informieren. Also eher sowas wie: "Ich habe nicht ganz verstanden, wie der Comparison Parameter in std::find_if funktioniert" statt "Kann mir jemand erklären, wie find_if funktioniert?".
-
@Quiche-Lorraine sagte in Strukturen, struct, Felder, c++:
PS:
Den Namen gibt es wirklich: https://en.wikipedia.org/wiki/Hubert_Blaine_Wolfeschlegelsteinhausenbergerdorff_Sr.
-
Dieser Beitrag wurde gelöscht!
-
@Quiche-Lorraine sagte in Strukturen, struct, Felder, c++:
Den Namen gibt es wirklich: https://en.wikipedia.org/wiki/Hubert_Blaine_Wolfeschlegelsteinhausenbergerdorff_Sr.
Wahnsinnsfund
-
@Bashar sagte in Strukturen, struct, Felder, c++:
@ShuraiyaKudo sagte in Strukturen, struct, Felder, c++:
@DocShoe Danke dir aber ich bräuchte es in c da wir das andere zeug noch nicht behandelt haben
Aufgabenstellung:
Schreiben Sie ein C++-Programm, das ...
=> Du brauchst es nicht in C, sondern in C++. Du brauchst es vielleicht in schlechtem C++, weil ihr das gute Zeug noch nicht behandelt habt. Aber nicht in C.
Weiterhin sähe es in "richtigem" C (und nicht der Möchtegern C/C++-Mischung) nochmals anders aus, und du würdest auch nichts davon verstehen. Das ist das Problem, vor dem ich dich warnen wollte: Du lernst gerade weder das eine noch das andere, und wirst am Ende gar nichts können!