a.exe funktioniert nicht mehr



  • In der Zukunft sollte ich lieber konzentrierter den Code durchgehen bevor ich hier um Hilfe bitte 🙄 🙄 🙄
    Danke für die Fehlersuche 👍



  • Markus97 schrieb:

    main-Datei:

    #include <iostream>
    
    /* Das Einbinden der Header-Dateien wuerde 
     * ohne Include-Guards zum mehrfachen Einbinden
     * der selben Header-Datei (z.B. figur.hpp) fuehren. 
     */
    #include "figur.hpp"
    #include "kreis.hpp"
    #include "rechteck.hpp"
    #include "quadrat.hpp"
    
    int main()
    {
      
    	//Erzeugung des Arrays mit den jeweiligen Figuren
    	Figur* fig[4];
    	fig[0]=new Figur(0,-1);
    	fig[1]=new Kreis(0,0,1);
    	fig[2]=new Rechteck(0,1,2,2);
    	fig[3]=new Quadrat(0,2,3);
    
        // Gebe die Figuren auf der Konsole aus.
        std::cout << fig[0]->asString() << std::endl;
        std::cout << fig[1]->asString() << std::endl;
        std::cout << fig[2]->asString() << std::endl;
        std::cout << fig[3]->asString() << std::endl;
    	
    	
    	
    	int index=0;
    	for(unsigned int i=0;i<2;i++){
    		//Berechnung der Fläche beim aktuellen Index
    		double f1;
    		Kreis* k1= dynamic_cast<Kreis*>(fig[i]);
    		Quadrat* q1=dynamic_cast<Quadrat*>(fig[i]);
    		Rechteck* r1=dynamic_cast<Rechteck*>(fig[i]);
    		if (q1!=0){f1=q1->berechneFlaeche();}
    		if (r1!=0){f1=r1->berechneFlaeche();}
    		if (k1!=0){f1=k1->berechneFlaeche();}
    		else{f1=0;}
    		double f2;
    		Kreis* k2= dynamic_cast<Kreis*>(fig[i+1]);
    		Quadrat* q2=dynamic_cast<Quadrat*>(fig[i+1]);
    		Rechteck* r2=dynamic_cast<Rechteck*>(fig[i+1]);
    		if (q2!=0){f2=q1->berechneFlaeche();}
    		if (r2!=0){f2=r1->berechneFlaeche();}
    		if (k2!=0){f2=k1->berechneFlaeche();}
    		else{f2=0;}
    		if (f2>f1){index++;}
    		
    		}
        // Verschiebe Figuren
        fig[0]->verschiebe(10,10);
        fig[1]->verschiebe(10,10);
        fig[2]->verschiebe(10,10);
        fig[3]->verschiebe(10,10);
    
        // Gebe die Figuren auf der Konsole aus
        std::cout << fig[0]->asString() << std::endl;
        std::cout << fig[1]->asString() << std::endl;
        std::cout << fig[2]->asString() << std::endl;
        std::cout << fig[3]->asString() << std::endl;
    
        // Bereinige Speicher.
        delete fig[0];
        delete fig[1];
        delete fig[2];
        delete fig[3];
    }
    

    Ähm...jetzt bin ich baff...

    Bist Du sicher dass Du die Aufgabe richtig verstanden hast? Gibt es dazu einen Lehrer oder Prof, bei dem Du nachfragen kannst?

    Und noch eins:

    // Gebe die Figuren auf der Konsole aus
        std::cout << fig[0]->asString() << std::endl;
        std::cout << fig[1]->asString() << std::endl;
        std::cout << fig[2]->asString() << std::endl;
        std::cout << fig[3]->asString() << std::endl;
    

    Kennst Du einen Mechanismus in C++, der ohne copy&paste einen Programmabschnitt x-mal wiederholt?



  • Ich denke ich habe die Aufgabe gut verstanden 🙂

    Und noch eins:
    C++:
    // Gebe die Figuren auf der Konsole aus
    std::cout << fig[0]->asString() << std::endl;
    std::cout << fig[1]->asString() << std::endl;
    std::cout << fig[2]->asString() << std::endl;
    std::cout << fig[3]->asString() << std::endl;
    Kennst Du einen Mechanismus in C++, der ohne copy&paste einen Programmabschnitt x-mal wiederholt?

    Ja natürlich kenne ich da einen Mechanismus^^ Nur war die Aufgabe so gegeben.



  • Markus97 schrieb:

    Nur war die Aufgabe so gegeben.

    Vielleicht eine pädagogische Volte...

    Guten Rutsch jedenfalls! 🙂


Anmelden zum Antworten