Vector funktioniert nicht



  • Was genau ist daran unklar? Dort steht Teiler() . Teiler ist ein std::vector, was genau sollte Teiler() deiner Meinung nach tun!?



  • Was soll

    Teiler()
    

    ergeben? Meinst du vielleicht

    Teiler.begin()
    


  • Im Vector "Teiler" sollen die einzelnen Teiler als Elemente enthalten sein und ausgelesen werden ...

    ich versteh ehrlich auch nicht, was der Integer it da soll?

    in Zeile 10 wird der Container initialisiert ..
    in Zeile 27 wird er gefüttert mit der Variablemn quot : "Teiler.push_back(quot);"
    in Zeile 35 soll er über eine Schleife ausgelesen werden, was
    in Zeile 37 dann gedruckt wird



  • Vertehen wir auch nicht, was ein int dort soll. Du willst wohl eigentlich eher einen iterator...

    Mein Rat: Leg dir ein gutes C++ Buch zu und arbeite es durch.



  • Hab von Dirk louis C++ vor mir liegen ...



  • Na dann...ich kenn das Buch nicht, aber dort steht das sicher nicht so drin, oder? Falls doch: Buch besser wegwerfen und ordentliches Buch kaufen... 😉



  • Läuft jetzt:

    Frage, Wie bekomme ich die 0 am Anfang der Teilersumme und das letzte + weg?

    Geben Sie die zu testende Zahl ein: 360
    Macro Zahltester benennt Zahl:
    360 ist der 1. Teiler der Zahl
    180 ist der 2. Teiler der Zahl
    120 ist der 3. Teiler der Zahl
    90 ist der 4. Teiler der Zahl
    72 ist der 5. Teiler der Zahl
    60 ist der 6. Teiler der Zahl
    45 ist der 7. Teiler der Zahl
    40 ist der 8. Teiler der Zahl
    36 ist der 9. Teiler der Zahl
    30 ist der 10. Teiler der Zahl
    24 ist der 11. Teiler der Zahl
    20 ist der 12. Teiler der Zahl
    18 ist der 13. Teiler der Zahl
    15 ist der 14. Teiler der Zahl
    12 ist der 15. Teiler der Zahl
    10 ist der 16. Teiler der Zahl
    9 ist der 17. Teiler der Zahl
    8 ist der 18. Teiler der Zahl
    6 ist der 19. Teiler der Zahl
    5 ist der 20. Teiler der Zahl
    4 ist der 21. Teiler der Zahl
    3 ist der 22. Teiler der Zahl
    2 ist der 23. Teiler der Zahl
    1 ist der 24. Teiler der Zahl
    360 hat 24 Teiler
    0+360+180+120+90+72+60+45+40+36+30+24+20+18+15+12+10+9+8+6+5+4+3+2+1+ = 1170 ist die Teilersumme 😕

    #include <iostream>
    #include <vector>
    
    using namespace std;
    
    int quot;
    long long Testzahl;
    int Zehler=0;
    int TS=0;
    vector<int>Teiler(1);
    
    int main ()
    {
    cout<< "Geben Sie die zu testende Zahl ein: ";
    cin>>Testzahl;
    cout<<"Macro Zahltester benennt Zahl:\n";
    
    getchar();
    for(int i=1;i<=Testzahl;i=i+1)
    	{
    	quot=Testzahl/i;
    		if(0==Testzahl%i)
    		{
    		Zehler=Zehler+1;
                Teiler.push_back(quot);
    		cout<<" "<<quot <<" ist der "<<Zehler<<". Teiler der Zahl  \n";
    		TS=TS+quot;
    		}
    	}
        cout<<" "<<Testzahl<<" hat "<<Zehler<<" Teiler \n";
        //cout<<"Die TS ist: "<<TS<<" = ";
        for(auto it=Teiler.begin();it!=Teiler.end();it++)
        {
            cout<<*it<<"+";
        }
        cout<<" = "<<TS<<" ist die Teilersumme";
        fflush(stdin);
        getchar();
    }
    


  • Fraeg 1 ist gelost, bei der Initialisierung des Vectors muß eine Null als Argument hin!

    Jetzt noch das letzte Plus.... 😕



  • cout<<*it;
    if( it!=Teiler.end()-1 )
        cout<<"+";
    


  • Ein Problem ist noch:

    Der Computer sagt immer, wenn ich das Programm nochmal aufrufe:

    “GroßzahlTester” is already running. Click Stop to terminate and launch a new instance.

    und das, obwohl ich ein return (0) eingefügt habe.

    Wie kann ich das Programm beenden?



  • Computer neustarten



  • Wieso sagt er nicht. "Programm ist beendet" .....


Anmelden zum Antworten