Anzahl der unterschiedlichen Zahlenwerte bestimmen



  • a) du hast immer noch 2 verschachtelte Schleifen. Das brauchst du nicht, siehe mein Beispiel.
    b) ersetze in meinem Beispiel einfach "auto" durch "int". Meinetwegen kannst du auch "const auto &" durch "int" ersetzen. Dann hast du weder Referenzen noch auto.



  • @wob ich verstehe deinen code leider gar nicht.. was beduetet das : ? und schleifen haben, so wie ich es gelernt haben immer eine bedingung, die ich bei dir leider nicht sehen kann..
    ich glaube dir, dass dein weg richtig ist, aber so zu formulieren kenn ich überhaupt nicht 😃 aber ich versuch mal weiter auf meine art zu entschachteln



  • @wob ich hab jetzt endlich den fehler gefunden 😃 so klappt es
    Beim debuggen ist mir aufgefallen, dass ja tmp_anz bereits die korrekte anzahl darstellt also brauche ich gar keine neue schleife

    besten danke an alle 🙂

    //anzahl der eingaben
    int wert[6] = { 1, 2, 3, 4, 5, 6 }; 
    int zaehle_vorkommen[6] = { 0 }; // array um tmp_anz zu speichern
    int anz = 0;
    int zaehle_unterschiedliche_zahlen = 0;
    int tmp_anz = 0;
    
    for (int x=0; x < 6; x++)
    {
    	
    	for (int y = 0; y < 9; y++)
    	{
    		
    		if (eingabe[y] == wert[x]) // prüfe, wie oft eine Zahl vorkommt
    		{
    			anz++;
    		}
    	}
    
    	if (anz > 0) // beginne mit der prüfung, wie viele unterschiedliche Zahlen vorkommen 
    	{
    		tmp_anz++; // PROBLEM: wird zwar um eins erhöht, aber der wert wird nicht gespeichert==> dadurch ist tmp_anz immer 0
    	}
    
    	cout << wert[x] << " kommt : " << anz << " Mal vor. " << endl;
    	anz = 0;
    }
    
    
    cout << " Es gibt: " << tmp_anz << " unterschiedliche Zahlen. " << endl;
    
    
    system("PAUSE");
    return 0;
    

    }


  • Mod

    @mmm_1482_ sagte in Anzahl der unterschiedlichen Zahlenwerte bestimmen:

    so klappt es

    Da habe ich doch erhebliche Zweifel. Du solltest deine Testfälle überdenken.



  • @SeppJ ich hab jetzt einige durchgänge gemacht.. also es funktioniert.
    was genau meinst du denn?


  • Mod

    Ahh, du schließt schon bei deiner Eingabe aus, dass überhaupt Zahlen außerhalb von 1-6 vorkommen. Das sieht man natürlich nicht, wenn man nur deine neue Lösung sieht, da das nur aus einem Beitrag 6 Bildschirmseiten weiter oben hervor geht. Unter dieser Voraussetzung passt es. Ist aber etwas ungewöhnlich, solche starken Annahmen über einen ganz anderen Teil eines Programms zu machen. Das macht ein Programm schwer zu lesen und zu verändern, wenn alles so eng verzahnt ist.



  • @SeppJ ja musste einiges immer wieder berichtigen XD

    ja ich weiß, dass es bestimmt nicht die beste lösung ist, aber mir ist es wichtig, dass es ein lösungsweg ist, den ich selbst gut nachvollziehen kann 😃 mein prof muss damit leben XD

    vielen danke nochmal an all 🙂



  • @mmm_1482_ sagte in Anzahl der unterschiedlichen Zahlenwerte bestimmen:

    @wob ich verstehe deinen code leider gar nicht.. was beduetet das : ? und schleifen haben, so wie ich es gelernt haben immer eine bedingung, die ich bei dir leider nicht sehen kann..

    Die häufigste Schleife ist die über ALLE Elemente eines Containers. Nichts anderes macht der :. Die Schleife loopt automatisch von begin(container) bis end(container).

    for (int wert : array) { verarbeite(wert); } bedeutet also: für jeden Wert aus dem Array mach was ...

    Das ist eben viel einfacher zu lesen als
    for (size_t index = 0; index < std::size(array); ++index) { int wert = array[index]; verarbeite(wert); }

    Siehe z.B. hier: https://en.cppreference.com/w/cpp/language/range-for



  • @wob danke für die erklärung 🙂
    leider muss ich mich an denen in der vorlesungen besprochenen methoden halten 😞

    ich denke es gibt sehr viele einfachere arten, aber bin leider dazu gezwungen mich daran zu halten 😕


  • Mod

    @mmm_1482_ sagte in Anzahl der unterschiedlichen Zahlenwerte bestimmen:

    ich denke es gibt sehr viele einfachere arten, aber bin leider dazu gezwungen mich daran zu halten 😕

    Bist du Zwangsarbeiter in einem Gulag? Du bist zu gar nichts gezwungen, und ganz bestimmt nicht dazu, dir nicht besseres Wissen im Eigengang anzueignen.


Anmelden zum Antworten