Integer + Strings Ordnen



  • Hallo alles Zusammen 😉

    Ich habe nun zum Beispiel 4 Zahlen sortiert.
    Die 4 Zahlen wurden richtig angezeigt,aber zu den 4 geordneten Zahlen sollen auch Strings hinzugefügt werden.

    Platz1 Region

    Bsp. ( 8.000.000 Deutschland )
    (Int) (String)

    Also Deutschland steht auf Platz 1 mit 8 Million Einwohnern!

    würde mich freuen wenn mir das jmd erklären könnte 🙂



  • Wenn du die Zahlen doch schon sortieren kannst, wo liegt das Problem, die Reihenfolge der Strings entsprechen mitzuverändern?^^



  • Naja die Zahlen sind ja sortiert wie gesagt

    80.000.000(a)
    55.000.000(b)
    21.000.000(c)
    12.000.000(d)

    Die Länder müssen jetzt zu den richtigen int Variablen geordnet werden

    Deutschland (e)
    Serbien(f)
    Frankreich(g)
    Italien(h)

    Also ist zum beispiel in einer Tabelle so angezeigt

    Label1 = a Label2 =b



  • a,b,c,d wurden sortiert und sind integerwerte

    a1,b1,c1,d1 sind Stringwerte.

    jetzt soll zu den richtig sortieren Integerwerte die richtigen Stringwerte zugeordnet werden^^

    also
    a und a1
    b und b1
    c und c1...


  • Mod

    Decimad schrieb:

    Wenn du die Zahlen doch schon sortieren kannst, wo liegt das Problem, die Reihenfolge der Strings entsprechen mitzuverändern?^^

    Diese Antwort ist immer noch genauso richtig und passend wie als sie gegeben wurde.

    Was auch kein Wunder ist, weil du deine Frage einfach nur 2x wiederholt hast.



  • Newbie2, zeig doch mal deine Datenstrukturen.



  • #include <iostream>
    #include <vector>
    #include <sstream>
    #include <algorithm>
    
    class Daten
    {
    public:
    	Daten(int nummer, std::string name): nummer(nummer), name(name){}
    
    	friend bool DatenCompare (Daten i, Daten j);
    	friend std::ostream& operator << (std::ostream& stream, Daten const& obj);
    
    private:
    	int nummer;
    	std::string name;
    };
    
    std::ostream& operator << (std::ostream& ostr, Daten const& obj)
    {
    	ostr << obj.nummer << " " << obj.name << "\n";
    	return ostr;
    }
    
    bool DatenCompare (Daten lhs, Daten rhs) {return (lhs.nummer > rhs.nummer);}
    
    typedef std::vector<Daten> datvec;
    
    int main()
    {
    	datvec mydaten;
    
    	mydaten.push_back(Daten(700000, "frankreich"));
    	mydaten.push_back(Daten(800000, "deutschland"));
    	mydaten.push_back(Daten(50000, "luxemburg"));
    	mydaten.push_back(Daten(400000, "oesterreich"));
    	mydaten.push_back(Daten(1200000, "usa"));
    
    	std::sort(mydaten.begin(), mydaten.end(), DatenCompare);
    
    	for(datvec::iterator i = mydaten.begin(); i != mydaten.end(); ++i)
    		std::cout << *i;
    }
    


  • Das ließe sich auch einfacher haben:

    #include <algorithm>
    #include <iostream>
    #include <string>
    #include <utility>
    #include <vector>
    
    int main()
    {
        std::vector<std::pair<int, std::string> > mydaten;
    
        mydaten.push_back(std::make_pair( 700000, "frankreich" ));
        mydaten.push_back(std::make_pair( 800000, "deutschland"));
        mydaten.push_back(std::make_pair(  50000, "luxemburg"  ));
        mydaten.push_back(std::make_pair( 400000, "oesterreich"));
        mydaten.push_back(std::make_pair(1200000, "usa"        ));
    
        std::sort(mydaten.begin(), mydaten.end());
    }
    

    Und wo wir schon dabei sind, warum nicht einfach

    #include <iostream>
    #include <map>
    #include <string>
    
    int main()
    {
      std::map<int, std::string> mydaten;
    
      mydaten[ 700000] = "frankreich";
      mydaten[ 800000] = "deutschland";
      mydaten[  50000] = "luxemburg";
      mydaten[ 400000] = "oesterreich";
      mydaten[1200000] = "usa";
    }
    

    ?


  • Mod

    @Newbie2: Versuch die letzten beiden Antworten zu ignorieren, so etwas kommt wenn man keine vernünftigen Fragen stellt. Die beiden Antworten bieten dir zwar einen Blick über den Tellerrand wie man es besser machen könnte, aber sie helfen dir nicht beim Verständnis des Programmierens weiter.

    Versuch lieber Decimads Antwort selbstständig umzusetzen. Wenn du immer alles nur vorgesetzt bekommst, musst du nämlich immer wieder fragen, insbesondere wenn du dir nicht die Mühe machst die Antworten durchzudenken. Das sieht man an dieser und deiner vorhergehenden Frage sehr gut. Bei der vorherigen Frage hast du eine Antwort als fertigen Code bekommen aber dir fehlt das Können diesen Code für deine jetzige Frage auf einfachste Weise zu modifizieren.


Anmelden zum Antworten