String im laufenden Programm zu einer List hinzufügen.

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • String im laufenden Programm zu einer List hinzufügen.

    Also,

    Ich versuch mich in letzter Zeit ein bisschen an C++. Ich will ein eigtl. ganz simples Programm schreiben :

    Es soll nach "Vorname" "Nachname" fragen und die Antwort einlesen. So weit keine Kunst. Die Antwort müsst dann in ner Liste oder ähnlichem gespeichert werden. Dann soll gefragt werden ob man "fertig" ist. Wenn nicht soll ein des ganz von vorne starten und die Antwort wieder zu der Liste hinzugefügt werden. Wenn doch soll die ganz Liste, also immer Vorname und Nachname in einer Zeile ausgegeben werden. Mein Problem besteht darin das ich nicht alle Möglichkeiten in C++ kenne, gibs die "liste" schon die ich brauche (also in der man wärend des laufenden Programms Objekte hinzufügen kann und die die dann alle auf einmal ausgeben kann) Wär nett wenn mich einer aufklärt ;D.

    Den Quellcode fügt ich noch hinzu... bin im moment am anderen Rechner.

    Quellcode

    1. #include <cstdlib>
    2. #include <iostream>
    3. #include <string>
    4. #include <list>
    5. using namespace std;
    6. int main(int argc, char *argv[])
    7. {
    8. int run;
    9. while(run != 0)
    10. {
    11. cout<<"Gib den Vornamen ein !\n";
    12. string vname;
    13. cin>>vname;
    14. cout<<"Gib den Namen ein !\n";
    15. string name;
    16. cin>>name;
    17. cout<<"Gib die Zeit ein !\n";
    18. string zeit;
    19. cin>>zeit;
    20. cout<<"Fertig ? 1/0\n";
    21. int a;
    22. cin>>a;
    23. if(a == 1)
    24. {
    25. cout<<name<<" | "<<vname<<" | "<<zeit;
    26. run = 0;
    27. }
    28. else
    29. {
    30. cout<<"---------------------------------------------------\n";
    31. }
    32. }
    33. cout<<"\n";
    34. system("PAUSE");
    35. return EXIT_SUCCESS;
    36. }
    Alles anzeigen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von möP ()

  • liste: std::list aus dem Header <list> genauso machts aber auch vector, dequeue, ... je nach dem was du brauchst - am anfang sollte es recht egal sein.

    und das ausgeben geht dann ganz einfach per std::for_each() aus <algorithm> ;)

    In etwa so:

    Quellcode

    1. #include <algorithm>
    2. #include <string>
    3. #include <list>
    4. #include <iostream>
    5. void print(const std::string& item)
    6. {
    7. std::cout << item << '\n';
    8. }
    9. int main()
    10. {
    11. std::string line;
    12. std::list<std::string> list;
    13. for (;;)
    14. {
    15. std::getline(std::cin, line);
    16. if (line == "Quit") break;
    17. list.push_back(line);
    18. std::cout << "neues Element oder Quit zum Beenden\n";
    19. }
    20. std::for_each(list.begin(), list.end(), print);
    21. }
    Alles anzeigen
    There are only 10 types of people in the world: Those who understand binary, and those who don't.

    Download meines ersten Spiels:HIER
    Über Feedback würde ich mich freuen ;)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von darthdespotism ()

  • Frage : Was bringt

    Quellcode

    1. for(;;)
    ?

    Okay habs :

    Quellcode

    1. #include <cstdlib>
    2. #include <iostream>
    3. #include <list>
    4. #include <algorithm>
    5. using namespace std;
    6. void print(const std::string& item)
    7. {
    8. std::cout << item << '\n';
    9. std::cout << "----------------------------\n";
    10. }
    11. int main(int argc, char *argv[])
    12. {
    13. std::string name;
    14. std::string zeit;
    15. std::list<std::string> list;
    16. for(;;)
    17. {
    18. std::cout<<"Geben sie einen Namen oder Quit zum beenden ein !\n";
    19. std::getline(std::cin, name);
    20. if(name == "Quit")break;
    21. list.push_back(name);
    22. std::cout<<"Geben sie einen Zeit oder Quit zum beenden ein !\n";
    23. if(zeit == "Quit")
    24. {
    25. break;
    26. std::cout<<"----------------------------\n";
    27. }
    28. std::getline(std::cin, zeit);
    29. list.push_back(zeit);
    30. }
    31. std::for_each(list.begin(), list.end(), print);
    32. system("PAUSE");
    33. return EXIT_SUCCESS;
    34. }
    Alles anzeigen


    Gehst auch irgendwie das Zeit und Name nebeneinander stehen =?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von möP ()

  • möP schrieb:


    Gehst auch irgendwie das Zeit und Name nebeneinander stehen =?


    Klar, pack' einfach die 2 Strings in ein std::pair<std::string, std::string> -> das pair in die list<> -> das pair in print() -> mit first & second zugreifen und nebeneinander ausgeben
    There are only 10 types of people in the world: Those who understand binary, and those who don't.

    Download meines ersten Spiels:HIER
    Über Feedback würde ich mich freuen ;)
  • joa soweit so klar ... aber wie pack ich des pair in die List ?
    Zum void print : void print(const std::string& item) sind das in den Klammern Parameter ? Wenn ja wo werden sie gesetzt ?
    Ich bitte um genauere Beschreibung ^^
    (Ja ich weiß ich bin unwissend)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von möP ()

  • möP schrieb:

    joa soweit so klar ... aber wie pack ich des pair in die List ?

    Quellcode

    1. #include <cstdlib>
    2. #include <iostream>
    3. #include <list>
    4. #include <algorithm>
    5. void print(const std::pair<std::string,std::string>& item)
    6. {
    7. std::cout << item.first << '|' << item.second << '\n';
    8. std::cout << "----------------------------\n";
    9. }
    10. int main(int argc, char *argv[])
    11. {
    12. std::string name;
    13. std::string zeit;
    14. std::list<std::pair<std::string,std::string> > list;
    15. for (;;)
    16. {
    17. std::cout<<"Geben sie einen Namen oder Quit zum beenden ein !\n";
    18. std::getline(std::cin, name);
    19. if (name == "Quit") break;
    20. std::cout<<"Geben sie einen Zeit oder Quit zum beenden ein !\n";
    21. std::getline(std::cin, zeit);
    22. if (zeit == "Quit")
    23. {
    24. std::cout<<"----------------------------\n";
    25. break;
    26. }
    27. list.push_back(std::make_pair(name, zeit));
    28. }
    29. std::for_each(list.begin(), list.end(), print);
    30. }
    Alles anzeigen

    Zum void print : void print(const std::string& item) sind das in den Klammern Parameter ? Wenn ja wo werden sie gesetzt ?
    Ich bitte um genauere Beschreibung ^^
    (Ja ich weiß ich bin unwissend)

    Jop das ist ein parameter. std::for_each geht praktisch der reihe nach die elemente der liste durch und ruft print() auf. Dabei übergibt es das jeweilige element als parameter ;)
    There are only 10 types of people in the world: Those who understand binary, and those who don't.

    Download meines ersten Spiels:HIER
    Über Feedback würde ich mich freuen ;)
  • Okay jetz stimmt was nicht ...

    C-Quellcode

    1. #include <cstdlib>
    2. #include <iostream>
    3. #include <list>
    4. #include <algorithm>
    5. using namespace std;
    6. void print(const std::pair<std::string , std::string >& list)
    7. {
    8. std::cout << list.first << ' | ' << list.second << '\n';
    9. std::cout << "----------------------------\n\n";
    10. }
    11. int main(int argc, char *argv[])
    12. {
    13. std::list< std::pair <std::string , std::string> > list;
    14. std::pair<std::string,std::string> pair;
    15. for(;;)
    16. {
    17. std::cout<<"Geben sie einen Namen ein !\n";
    18. std::string name;
    19. std::getline(std::cin, name);
    20. std::cout<<"Geben sie eine Zeit ein !\n";
    21. std::string zeit;
    22. std::getline(std::cin, zeit);
    23. std::cout<<"Zum fortfahren 'ENTER' druecken ! Zum beenden 'quit' eingeben !\n";
    24. std::string q;
    25. std::getline(std::cin, q);
    26. if(q == "quit")
    27. {
    28. std::cout<<"----------------------------\n\n";
    29. break;
    30. }
    31. list.push_back(make_pair(name,zeit));
    32. }
    33. std::for_each(list.begin(), list.end(), print);
    34. system("PAUSE");
    35. return EXIT_SUCCESS;
    36. }
    Alles anzeigen


    Jetz gib er auf einmal nur das das aus was man unter Namen eingibt und ne Menge Zahlen..

    Edit : Passt hab ' | ' statt " | " gemacht ...

    [Blockierte Grafik: http://www11.file-upload.net/thumb/23.05.08/zw3aw.JPG][Blockierte Grafik: http://www.file-upload.net/view-870061/Liste.JPG.html]

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von möP ()

  • C-Quellcode

    1. #include <cstdlib>
    2. #include <iostream>
    3. #include <list>
    4. #include <algorithm>
    5. #include <vector>
    6. using namespace std;
    7. void print(const std::pair<std::string , std::string >& list)
    8. {
    9. std::cout << list.first <<" | "<< list.second << '\n';
    10. }
    11. int main(int argc, char *argv[])
    12. {
    13. std::list< std::pair <std::string , std::string> > list;
    14. std::pair<std::string,std::string> pair;
    15. for(;;)
    16. {
    17. std::cout<<"Geben sie einen Namen ein !\n";
    18. std::string name;
    19. std::getline(std::cin, name);
    20. std::cout<<"Geben sie eine Zeit ein !\n";
    21. std::string zeit;
    22. std::getline(std::cin, zeit);
    23. std::cout<<"Zum fortfahren 'ENTER' druecken ! Zum beenden 'quit' eingeben !\n";
    24. std::string q;
    25. std::getline(std::cin, q);
    26. list.push_back(make_pair(zeit,name));
    27. if(q == "quit")
    28. {
    29. std::cout<<"----------------------------\n\n";
    30. break;
    31. }
    32. }
    33. list.sort();
    34. std::for_each(list.begin(), list.end(), print);
    35. system("PAUSE");
    36. return EXIT_SUCCESS;
    Alles anzeigen


    So fertig. Wär noch Verbesserungvorschläge hat soll sich melden.
    Danke allen für die Hilfe !
  • Jop das ist die IMO richtige Version ;)

    std:: ist einfach ein namespace für alle Elemente der standardbibliotek, sodass es da keine namesknoflikte mit deinen namen oder namen von anderen biblioteken gibt ;)
    There are only 10 types of people in the world: Those who understand binary, and those who don't.

    Download meines ersten Spiels:HIER
    Über Feedback würde ich mich freuen ;)