mehrere Personen sortieren(Thema: Klassen)



  • mehrere Personen sortieren(Thema: Klassen)



  • Hallo liebe Foren mitglieder; 🙂
    Ich habe das selbe Bsp und stehe gerade komplett an. Ich habe stundenlang versucht die Aufgabe selbst zu lösen (Tutorial Videos aneschaut und in Bücher nachgelesen) aber jetzt bin ich viel zu verwirrt weil so viel neues in meinem Kopf ist. Ich würde wirklich schätzen wenn ihr mir Helfen könntet den Knoten in meinem Kopf zu lösen 😕.
    Natürlich verlange ich keinen fertigen Code, und würde mich über ein Feedback bzw um Hilfe beim Lösen der Aufgabe sehr freuen. 😃
    Ich poste die Angabe erneut dann muss man nicht so lange zurück gehen und meinen Code den ich bis jetzt habe. Ich hab den code jetzt im ganzen gepostet und ich weis auch nicht wie ich den mit der nummerierung auf der seite posten kann.

    Angabe:
    Für statistische Untersuchungen werden verschiedene Merkmale (Größe, Gewicht, Alter und IQ) von Personen gemessen. Entwerfen Sie die Klassen Person und Personenliste, die es erlauben, die Daten zu erfassen und die erfassten Personen nach einem beliebigen, vom Benutzer auszuwählenden Merkmal sortiert auszugeben. Implementieren Sie die beiden Klassen und ein zugehöriges Hauptprogramm, das zum Testen der Funktionalität geeignet ist.

    Anmerkung von mir: Habe bis jetzt mehrere Personen mit new angelegt und alle Merkmale gesetz. Ich verstehe nun nicht wie ich diese mit einer neuen klasse Personenliste nach einem bestimmten Merkmal ordnen kann.(vorallem ab oder aufsteigend ausgeben wenn nur ein Merkmal untersucht wird. Oder ist mein code generell einfach zum wegwerfen?? 😞 Ihr seht jetzt wahrscheinlich auch wie verwirrt ich bin... VIELEN LIEBEN DANK FÜR JEDE HILFE



  • Also das ist der code ich weis das man classe datei und main nicht zusammen schreiben soll..sry dafür mucc ich mir noch abgewöhnen.. 😕

    #include <iostream>
    using namespace std;
    
    //Hie will ich die Klasse Personenliste erstellen die meine Personen sortiert
    //nach gewicht oder grose ect. (und hier stehe ich komplett an)
    class Personenliste{
        private:
            int grose;
            int gewicht;
            int alter;
            int iq;
        public:
            Personenliste();
    
    };
    //klasse Personen mit 4 merkmale
    class Personen
    {
        private:
            int grose;
            int gewicht;
            int alter;
            int iq;
        public:
            //Konstruktor
            Personen();
            void print();
            void setP();
    };
    //konstruktor initalisiert
    Personen::Personen(){
        this->grose=grose;
        grose=0;
        this-> gewicht=gewicht;
        gewicht=0;
        this-> alter = alter;
        alter=0;
        this-> iq =iq;
        iq=0;
    }
    //Daten der Personen werden vom benutzer hinein geschrieben
    void Personen::setP(){
        int gr, kg, alt, iQ;
    
        cout << "Grose_eingeben(cm): ";
        cin >> gr;
        this->grose=gr;
        cout << "Gewicht_eingeben: ";
        cin >> kg;
        this->gewicht=kg;
        cout << "alter_eingeben: ";
        cin >> alt;
        this->alter=alt;
        cout << "IQ_eingeben: ";
        cin >> iQ;
        this->iq=iQ;
        cout << endl;
    }
    //Daten der Personen werden ausgegeben
    void Personen::print(){
        cout << "grose: " << grose << ", gewicht: " << gewicht << ", alter: " << alter << ", IQ: " << iq <<  endl;
        cout << endl;
    }
    
    int main()
    {   char y;
        do{
            int anzahl=0;
            cout << "Wieviele Personen wollen sie anlegen?"<< endl;
            cin >> anzahl;
            cout << endl;
    
            //mehrere Personen werden angelegt
            Personen *person = new Personen[anzahl];
            for(int i=0; i<anzahl;i++)
            {
                person[i].setP();
            }
            //alle personen werden ausgegeben
            for(int i=0; i<anzahl;i++)
            {
                person[i].print();
            }
            //Hier wollte ich beginnen mit dem sortieren Benutzer gibt char ein der festlegt das was sortiert werden soll
            //aber ich glaube das ist schwachsinn und ich habe schon stunden herumprobiert
            char sortieren;
            cout << "Nach was wollen sie die Werte sortieren? Eingabe für die jeweiligen Punkte:" <<'\n' << "Grosse=a ,Gewicht=b ,Alter=c ,IQ=d ?" << endl;
            cin >>sortieren;
            if(sortieren !='a' || 'b' || 'c' || 'd')
            {
            cout << endl << "Falsche Eingabe!!!" << endl;
            }
    
            cout << endl << "Wollen sie das Programm erneut starten (y/n)?" << endl;
            cin >> y;
            delete [] person;
        }while(y=='y');
    
        return 0;
    }
    


  • Schau mal in den anderen Thread Personenliste sortieren (Thema: Klassen).

    Edit: Ups, my Fail. Den hattest du ausgegraben, ich dachte der wäre ebenfalls aktuell.



  • Swordfish schrieb:
    Warum heißen die überforderten und hilflosen immer Nathalie, khati, ... ?

    Also ich finde diese Aussage eine Frechheit... sogar eher Beleidigend. Ich wusste es ist keine gute Idee etwas in ein Forum zu posten und normalerweise komme ich selbst immer auf eine Lösung. Aber es ist nun mal eine Sprach die man lernt und das geht nicht von einem auf den anderen Tag und (JEDER MENSCH EGAL WIE ER HEIßT) kann einmal anstehen oder nicht weiter wissen. Aber anscheinend wird man hier nur auf den Namen oder sonst was reduziert und sowas brauche ich nicht!!
    Ich werde es weiter alleine versuchen und brauch deine/eure Hilfe nicht wenn du so denkst.

    Swordfish schrieb:
    Warum heißen die überforderten und hilflosen immer Nathalie, khati, ... ?



  • Das ist, weil hier öfters Leute ankommen, die ein (meist einfaches) Problem nicht selbst lösen können und hoffen, dass wir ihnen das lösen.
    Und da wir ja alle klischeemäßig fette, schüchterne, im Keller hausende Profi-Infomatiker-H4xx0rz sind, die keinerlei Kontakt mit dem weiblichen Geschlecht haben, denken dann manche Leute, dass wir auf Frauen(-namen) eher anspringen. Was leider auch oft genug der Fall ist, wobei ich jetzt alelrdigns keien zeit habe, nach nem Beispiel zu suchen.

    Nimms nicht direkt persönlich, wenn hier was grober gesprochen wird. Weil dafür ist das Niveau und das technische Verständnis hier extrem hoch.
    Kannst ja nach GuteFrage.net gehen, vielleicht wirst du da hochwertiger beraten (Bsp 😃

    Edit:
    Muss grad auf en anderes Programm warten, kannst hier mal reinschauen:

    #include <vector>
    #include <algorithm>
    #include <iostream>
    #include <iterator>
    
    class Person
    {
    	unsigned int groesse;
    	unsigned int gewicht;
    	unsigned int alter;
    	unsigned int iq;
    
    public:
    	Person(unsigned int groesse, unsigned int gewicht, unsigned int alter, unsigned int iq)
    		: groesse(groesse), gewicht(gewicht), alter(alter), iq(iq)
    	{}
    
    	unsigned int getSize() const
    	{
    		return groesse;
    	}
    
    	unsigned int getWeight() const
    	{
    		return gewicht;
    	}
    
    	unsigned int getAge() const
    	{
    		return alter;
    	}
    
    	unsigned int getIQ() const
    	{
    		return iq;
    	}
    
    	friend std::ostream& operator << (std::ostream & os, Person const& p)
    	{
    		os << p.getSize() << "-" << p.getWeight() << "-" << p.getAge() << "-" << p.getIQ();
    		return os;
    	}
    };
    
    class Personlist
    {
    	std::vector<Person> persons;
    
    public:
    	Personlist() = default;
    
    	void addPerson(Person const& p)
    	{
    		persons.push_back(p);
    	}
    
    	void printBySize(std::ostream & os) const
    	{
    		print(os, [](Person const& a, Person const& b){return a.getSize() < b.getSize(); });
    	}
    
    	void printByWeight(std::ostream & os) const
    	{
    		print(os, [](Person const& a, Person const& b){return a.getWeight() < b.getWeight(); });
    	}
    
    	void printByAge(std::ostream & os) const
    	{
    		print(os, [](Person const& a, Person const& b){return a.getAge() < b.getAge(); });
    	}
    
    	void printByIQ(std::ostream & os) const
    	{
    		print(os, [](Person const& a, Person const& b){return a.getIQ() < b.getIQ(); });
    	}
    
    private:
    	template<class Cmp>
    	void print(std::ostream & os, Cmp comp) const
    	{
    		auto tmp = persons;
    
    		std::sort(std::begin(tmp), std::end(tmp), comp);
    		std::copy(std::begin(tmp), std::end(tmp), std::ostream_iterator<Person>(os, ", "));
    	}
    };
    
    int main()
    {
    	Personlist pl;
    
    	pl.addPerson(Person(150, 45, 16, 75));
    	pl.addPerson(Person(160, 55, 24, 132));
    	pl.addPerson(Person(170, 65, 75, 99));
    	pl.addPerson(Person(180, 85, 34, 175));
    
    	std::cout << "List nach Groesse: ";
    	pl.printBySize(std::cout);
    
    	return 0;
    }
    

Anmelden zum Antworten