HILFE: Wahrscheinlichkeitsrechnung Fehler im Quelltext!



  • Hallo Leute! 🙂
    Ich Arbeite an einem großen Projekt das durch ein Menü auf viele verschiedene Programme geleitet wird die Wahrscheinlichkeitsrechnungen durchführen (in der Konsolenanwendung) nur leider ist bei einem bestimmten Programm ein Fehler den ich einfach nicht finde.. Ich glaube ich bin zu blind um den Fehler zu finden... Bitte helft mir, da ich die Arbeit bis Morgen vorzeigen muss 😛

    Die #include -Dinger habe ich im Quelltext schon drinnen, keine Angst 😛

    srand(time(0));
    
    	unsigned max = 0;
    	int x = 0;
    
    	int wTest = 0;
    
    	while (wTest != 1)
    	{
    		cout << "Seiten des W\201rfels: ";
    		cin >> x;
    
    		if (x > 0 && x <= 100)
    		{
    			cout << "\n\nRunden: ";
    			cin >> max;
    
    			if (max > 0)
    				wTest = 1;
    
    			else
    				cout << "\n\n     ![Die Werte liegen nicht im Gültigkeitsbereich]!";
    		}
    
    		else
    			cout << "\n\n     ![Die Werte liegen nicht im Gültigkeitsbereich]!";
    	}
    
        int *counter = new int[x];
    
        for(unsigned i = 0; i < max; ++i)
        {
            ++counter[rand() % x];
        }
    
    	system("CLS");
    
    	cout << "Wahrscheinlichkeits-Rechner (W\201rfel) Version: 1.0 - By M.M.B.\n\n\n";
    
        cout << "Z\204hler: " << max << "\n\n";
    
        for (unsigned i = 0; i < x; ++i)
          cout << "Zahl " << i + 1 << ": " << counter[i] << " = " << 1.*counter[i]/max*100 << "%\n";
    
        cout << "\n\n";
        system("PAUSE");
    


  • Der Fehler liegt wahrscheinlich in Zeile 29. Die Wahrscheinlichkeit liegt bei annähernd 100%, das da zwei Klammern fehlen.

    Warum verwendest du nicht std::vector<int>? Damit wär das nicht passiert.



  • probalilist schrieb:

    Der Fehler liegt wahrscheinlich in Zeile 29. Die Wahrscheinlichkeit liegt bei annähernd 100%, das da zwei Klammern fehlen.

    Warum verwendest du nicht std::vector<int>? Damit wär das nicht passiert.

    Ich habe nochnie mit std::vector gearbeitet und weiß auch nicht was du damit meinst 😕

    Aber was meinst du mit 2 Klammern? Wie müsste der Quellcode richtig aussehen? 🙂



  • Moorky Dragonstrike schrieb:

    Ich Arbeite an einem großen Projekt das durch ein Menü auf viele verschiedene Programme geleitet wird die Wahrscheinlichkeitsrechnungen durchführen (in der Konsolenanwendung) nur leider ist bei einem bestimmten Programm ein Fehler den ich einfach nicht finde..

    Und was ist nun der Fehler? Das wäre noch wichtig zu wissen.



  • Furble Wurble schrieb:

    Moorky Dragonstrike schrieb:

    Ich Arbeite an einem großen Projekt das durch ein Menü auf viele verschiedene Programme geleitet wird die Wahrscheinlichkeitsrechnungen durchführen (in der Konsolenanwendung) nur leider ist bei einem bestimmten Programm ein Fehler den ich einfach nicht finde..

    Und was ist nun der Fehler? Das wäre noch wichtig zu wissen.

    Der Fehler steckt irgendwo in dem Quelltext den ich hier veröffentlicht habe.

    Ich habe zwar eine Lösung für das Problem in Zeile 29 gefunden und habe

    int *counter = new int[x];
    
    	for (int i = 0; i < x; i++)
    		counter[i] = 0;
    

    angewandt nur denke ich mit einer Wahrscheinlichkeit von 100% das es eine schönere Lösung als das gibt...

    Falls jemand die schönere Lösung kennt, bitte schreiben! 🙂



  • Die schöne Lösung wäre

    int *counter = new int[x]();
    

    gewesen.

    Bzw. die noch schönere

    std::vector<int> counter(x); // Rest gleich, ggf. das delete weglassen
    


  • @TE:
    Schonmal gehört dass man Speicher, den man via new erhält auch mit delete löschen muss?
    Nimm einfach std::vector, der macht das von selber und wächst auch ggf.


Anmelden zum Antworten