C++ Anfänger braucht Hilfe bei einem Simplen Struktur-Array



  • Schreiben morgen ne Arbeit in C++, und ich blicke es überhaupt nicht. Da es meinen Kollegen genauso geht, müsst ihr mir helfen. 🙂

    Aufgabe:
    Dem dem Program "x" sollen für max. 10 Lieferanten Informationen in einem Strukturarray erfasst werden.
    Die Eingabe soll beendet werden, wenn 10 Eingaben gemacht wurden.
    Nach der Eingabe soll dann alles Ausgegeben werden.

    Das Besipiel im Buch bezieht sich nur auf ein bis zwei Datensätze, in der Arbeit (nach der anderen Gruppe die schon geschrieben hat) sollen aber 100 Datensätze (für eine Mitgliedsdatenerfassung) erfasst werden, deswegen vermute ich, dass man mit einer Schleife Arbeiten muss. Aber erstmal das Beispiel aus dem Buch für zwei Datensätze:

    //---------------------------------------------------------------------------
    
    #include <string.h>
    #include <iostream.h>
    #include <conio.h>
    
    //---------------------------------------------------------------------------
    
    int main()
    {
    struct Kunde
    {
    	char Name[20];
    	char Ort[20];
    	double Umsatz;
    	int Bonus;
    	}K1[5];
    
       strcpy(K1[1].Name,"XYZ.AG");
       strcpy(K1[1].Ort,"Hamburg");
       K1[1].Umsatz = 3*17000;
       K1[1].Bonus = 2;
    
       cout <<K1[1].Name <<"  "<<K1[1].Ort <<endl;
       cout << "Bonus in EUR:  " <<K1[1].Umsatz * K1[1].Bonus / 100<<endl;
    
       strcpy(K1[2].Name,"ABC.AG");
       strcpy(K1[2].Ort,"Frankfurt");
       K1[2].Umsatz = 3*11000;
       K1[2].Bonus = 3;
    
       cout <<"-----------------------------------------------------" <<endl;
       cout <<K1[2].Name <<"  "<<K1[2].Ort <<endl;
       cout << "Bonus in EUR:  " <<K1[2].Umsatz * K1[2].Bonus / 100;
    
       getch();
    	return 0;
    }
    //---------------------------------------------------------------------------
    

    Ich hab mir bisher folgendes zusammengebastelt:

    //----------------------------structure.cpp--------------------------------------
    
    #include <string.h>
    #include <iostream.h>
    #include <conio.h>
    #include <stdio.h>
    
    //------------------------------------------------------------------------------
    
    int main()
    {
    
    	struct kunde
    	{
    		char Name[20];
    		char Ort[20];
    		double Umsatz;
    		int Bonus;
    //Am Ende der geschweiften Klammer wird die Variable, mit der die gesamte
    //Struktur nachher angesprochen wird, festgelegt.
    //Ein Aufruf der Struktur erfolgt also nicht über "Kunde", sondern über "k1, k2,...,kn".
    	}k[10];
    
     int = n;
    
    	for  (n = 0; n == 9; n++)
    		{
    			strcpy(k[n].Name, "XYZ AG");
    			strcpy(k[n].Ort, "Offebach");
    			k[n].Umsatz = 3*17000;
    			k[n].Bonus = 2;
    			cout << k[n].Name << " " << k[n].Ort << endl;
    cout << "Umsatz des Kunden: " << k[n].Umsatz << " / " << "Bonusstufe des Kunden: " << k[n].Bonus << endl;
    cout << "Bonus in Euro: " << k[n].Umsatz * k[n].Bonus / 100 << endl ;
    cout << endl;
    		}
    
    getch();
    return 0;
    }
    

    Wie der Profi wohl erkennen kann, hab ich absolut 0 Plan wie ich das realisieren kann. Und die Eingabe funzt noch automatisch und nicht per Hand.

    Wenn mir jemand kurz das Programm schreiben und erklären könnte. 😶



  • //----------------------------structure.cpp--------------------------------------
    
    #include <string.h>
    #include <iostream.h>
    #include <conio.h>
    #include <stdio.h>
    
    //------------------------------------------------------------------------------
    
    int main()
    {
    
        struct kunde
        {
            char Name[20];
            char Ort[20];
            double Umsatz;
            int Bonus;
    //Am Ende der geschweiften Klammer wird die Variable, mit der die gesamte
    //Struktur nachher angesprochen wird, festgelegt.
    //Ein Aufruf der Struktur erfolgt also nicht über "Kunde", sondern über "k1, k2,...,kn".
        }k[10];
    
     int n; //Deklaraktion ohne "="
    
        for  (n = 0; n <10; n++)  //Solange Bedingn n<10 true in schleife bleiben, deswegen bei 9==n würde er nich in die schleife springen
            {
                strcpy(k[n].Name, "XYZ AG");
                strcpy(k[n].Ort, "Offebach");
                k[n].Umsatz = 3*17000;
                k[n].Bonus = 2;
                cout << k[n].Name << " " << k[n].Ort << endl;
    cout << "Umsatz des Kunden: " << k[n].Umsatz << " / " << "Bonusstufe des Kunden: " << k[n].Bonus << endl;
    cout << "Bonus in Euro: " << k[n].Umsatz * k[n].Bonus / 100 << endl ;
    cout << endl;
            }
    
    getch();
    return 0;
    }
    


  • BorisDieKlinge schrieb:

    #include <string.h>
    #include <iostream.h>
    #include <conio.h>
    #include <stdio.h>
    

    ... ist nicht Dein Ernst, oder!?

    cheers, Swordfish



  • ich hab das kopiert.... sorry.. mir ist zeurst der teil aufgefallen:

    int = n;
    
        for  (n = 0; n == 9; n++)
    

    mach mich nich für dinge veratnwortlich die nichvon mir sind



  • ok, ich mach trotzdem mal c++ daraus...

    #include <iostream>
    #include <vector>
    #include <string>
    
    class customer_t {
    
    	friend std::istream& operator>>( std::istream &input_stream, customer_t &target );
    	friend std::ostream& operator<<( std::ostream &output_stream, customer_t &source );
    
    	private:
    		std::string m_name;
    		std::string m_city;
    		double m_turnover;
    		int m_bonus;
    
    	public:
    		double get_bonus_euro( ) {
    
    			return m_turnover * m_bonus / 100;
    		}
    };
    
    std::istream& operator>>( std::istream &input_stream, customer_t &target )
    {
    	std::cout << "Name:\t";
    	std::getline( input_stream, target.m_name );
    	std::cout << "Ort:\t";
    	std::getline( input_stream, target.m_city );
    	std::cout << "Umsatz:\t";
    	input_stream >> target.m_turnover;
    	std::cout << "Bonus:\t";
    	input_stream >> target.m_bonus;
    
    	return input_stream;
    }
    
    std::ostream& operator<<( std::ostream &output_stream, customer_t &source )
    {
    	output_stream << "Name:\t\t" << source.m_name;
    	output_stream << "\nOrt:\t\t" << source.m_city;
    	output_stream << "\nUmsatz:\t\t" << source.m_turnover;
    	output_stream << "\nBonus in EUR:\t" << source.get_bonus_euro( ) << "\n";
    
    	return output_stream;
    }
    
    int main( )
    {
    	typedef std::vector< customer_t > customers_t;
    	customers_t customers;
    
    	for( customers_t::size_type i = 0; i < 10; ++i ) {
    
    		customer_t new_customer;
    		std::cin >> new_customer;
    		customers.push_back( new_customer );
    	}
    
    	for( customers_t::iterator i = customers.begin( ); i != customers.end( ); ++i ) {
    
    		std::cout << *i << std::endl;
    	}
    }
    

    cheers, Swordfish



  • so wird er es nie verstehen;)



  • Naja, schaun ma mal 😃

    cheers, Swordfish



  • Was soll das denn sein? Robustheit bei Eingabefehlern? Fehlanzeige. Wenn, dann machs bitte gleich richtig.

    Swordfish schrieb:

    ok, ich mach trotzdem mal c++ daraus...

    std::istream& operator>>( std::istream &input_stream, customer_t &target )
    {
    	std::cout << "Name:\t";
    	std::getline( input_stream, target.m_name );
    	std::cout << "Ort:\t";
    	std::getline( input_stream, target.m_city );
    	std::cout << "Umsatz:\t";
    	input_stream >> target.m_turnover;
    	std::cout << "Bonus:\t";
    	input_stream >> target.m_bonus;
    
    	return input_stream;
    }
    

    cheers, Swordfish



  • Tachyon schrieb:

    Was soll das denn sein? Robustheit bei Eingabefehlern? Fehlanzeige. Wenn, dann machs bitte gleich richtig.

    Wenn Dir langweilig ist, darfst Du das gerne übernehmen... (anstatt mich hier schief anzuquatschen) 🙄

    cheers, Swordfish



  • Swordfish schrieb:

    ok, ich mach trotzdem mal c++ daraus...

    (...)
    

    cheers, Swordfish

    Das ist also C++? 😃

    Erstmal Danke für die Hilfe ^^

    Naja... sagen wirs mal so: Dem lerher zu zu hören ist eine Zumutung (sagt selbst unser ReWe Lehrer der afaik stellv. Direktor ist ^^). Nach 20 Minuten kann man da nicht mehr aufpassen. Von daher war im Unterricht eher Quake 3 und RTCW angesagt >_<

    Wie auch immer. Wir vermuten, dass der das selber nichso richtig kann, und was du da geschrieben hast blick ich keinen Meter. 😃

    Und dein "ist nicht dein Ernst" zu BorisderKlinges's Posts meint wohl, dass das Programm immernoch scheiße ist, trotz seinen Änderungen?

    Wie du aber siehst, ist der Struct-teil von meinem Programm rel. ähnlich zu der Vorlage aus dem Buch. Irgendwas muss da ja stimmen.
    Mir gehts momentan primär um die Schleife, die man wohl machen muss.

    Ich will auch kein C++ Crack werden (bin ja auch nur Azb IT-SK ^^ ), aber ne drei wäre schon toll in der Arbeit. 😉



  • Er meinte das der teil meine Posts welche ich aus deinem vermurksten C++ kopiert haben nicht "elegant" wäre .. nicht scheisse;)

    ich hab eigentlich die dinge geändert diefalsche waren, und dein modifizierten schlechten code gepostet wie er trozdem funktioneiren sollte..

    aber danke das ich dir helfen durfte;) 🤡



  • "edit"

    So, hab den Code mal in Dev-C++ kopiert, und das funzt doch tatsächlich so einigermaßen *sich wundert*
    Hätte ich nicht gedacht. 😮

    Also erstmal Danke, vorallem an BorisdieKlinge, für seine Version. 👍

    Ich versuch das noch ein bisschen zu tüdeln, so dass man die Eingaben selber machen muss, und wenn ich Probleme hab schreib ich hier nochmal.



  • BorisDieKlinge schrieb:

    Er meinte das der teil meine Posts welche ich aus deinem vermurksten C++ kopiert haben nicht "elegant" wäre .. nicht scheisse;)

    ich hab eigentlich die dinge geändert diefalsche waren, und dein modifizierten schlechten code gepostet wie er trozdem funktioneiren sollte..

    aber danke das ich dir helfen durfte;) 🤡

    Naja... wie gesagt. Das meiste, bis auf die Schleife, ist ja mehr oder weniger durch unser Buch vorgegeben.
    Von daher denk ich mal, dass das für die Arbeit reicht 😉

    Und du hast den Dank einer ganzen Klasse ^^



  • "edit" ich wollte den code nicht so weit von gut und böse modifizieren das du ihn nicht mehr verstehst -> siehe swordfish!!

    dein code ist halt ne misch aus C und C++ was nicht elegant und gut ist, also pass lieber auf was für code du postest, es wird an jder zeile kritistiert;) hehe 👍



  • BorisDieKlinge schrieb:

    "edit" ich wollte den code nicht so weit von gut und böse modifizieren das du ihn nicht mehr verstehst -> siehe swordfish!!

    dein code ist halt ne misch aus C und C++ was nicht elegant und gut ist, also pass lieber auf was für code du postest, es wird an jder zeile kritistiert;) hehe 👍

    Schön zu wissen. Also ists im grunde der totale Scheiß den wir da lernen, oder was? ^^

    Ist ja auch egal. Ich will mit Programmieren später nichts zu tun haben, von daher zählt jetzt nur die Note (geht diese Phase ums verkürzen).
    Ich kann Programmieren net abhaben. Das schließt auch SQL und PHP mit ein, was wir u.a. auch machen.

    Ich hab die manuelle Eingabe von Daten jetzt schlciht mit "cin>>" gemacht:

    cout<<"Bitte geben Sie den Namen ein"<<endl;
                cin>>k[n].Name;
    

    Also nochmal Fett danke. So müsste das morgen passen. Der WItz an der Sache ist, dass wir die ARbeit nicht am PC schreiben, sondern schön per Kulli aufs Papier bringen dürfen... 🙄



  • welche schule /studium machst du? In meinm Studiengang war auch 50% Informatik/Progarmmierung.. jeder der das das studiert hat wusste das im vorraus, und trozdem wollte jeder nicht mit programmierung zu tun haben! Versteh das nich.. ich mach ja auch keine Ausbildung zum Erzieher, wenn ich vornerein schon kinder hasse^^

    NE für den Anfang is code ok, man braucht erfahrung damit man weis , wie man was eleganter schöner etc. coden kann:) passt schon 🕶



  • Sorry. 🤡

    cheers, Swordfish



  • Harlekin12345 schrieb:

    Also ists im grunde der totale Scheiß den wir da lernen, oder was? ^^

    das ist im grunde genommen die bittere wahrheit und nicht unüblich 🙂



  • @swordfish: immerhin hast du gezeigt was du kannst, die ganze Klasse von "Harlekin12345" wird dich bestaunen;)



  • BorisDieKlinge schrieb:

    welche schule /studium machst du? In meinm Studiengang war auch 50% Informatik/Progarmmierung.. jeder der das das studiert hat wusste das im v******, und trozdem wollte jeder nicht mit programmierung zu tun haben! Versteh das nich.. ich mach ja auch keine Ausbildung zum Erzieher, wenn ich vornerein schon kinder hasse^^

    NE für den Anfang is code ok, man braucht erfahrung damit man weis , wie man was eleganter schöner etc. coden kann:) passt schon 🕶

    Mach ne Ausbildung zum IT-Systemkaufmann (übrigens bei der Telekom. Jetzt kann ichs ja sagen, sonst hätte mir keiner geholfen 😉 ). Also kaufmännisches mit technischem Anteil. Ich hatte in der FOS schon VisualBasic, und das fand ich auch schon zum Kotzen. Ist ja nicht so, dass ich gar nichts blicke (da gibts bei uns tatsächlcih noch weitaus schlimmere :D), es macht mir halt absolut keinen Spaß.

    Und wenn ich meine Ausbildung nach Spaß aussuchen würde, wär ich jetzt Arbeitslos und ohne Abschluss 😉


Anmelden zum Antworten