Anzahl der unterschiedlichen Zahlenwerte bestimmen
-
@wob
ja mit der verschachtelun hast du defintiv rechtich hab es auch schon versucht beide aufgaben getrennt zu machen, aber hatte dasselbe ergebnis..
leider darf ich schlüsselwörte wie auto, oder pointer.. bzw du hast da glaube ich ne referenz nicht verwenden -.-.....
ich muss mit dem arbeiten, was bei uns zugelassen ist und das sind nur schleife, if, arrays...
aber trotzdem danke
-
@mmm_1482_ sagte in Anzahl der unterschiedlichen Zahlenwerte bestimmen:
auto
kannst du durch den passenden Datentyp ersetzen.
-
@mmm_1482_ sagte in Anzahl der unterschiedlichen Zahlenwerte bestimmen:
pointer
ist kein Schlüsselwort
-
@manni66 habs schlecht formulierte.. also wir dürfen keine pointer wie auto verwenden und auch keine Pointer
-
@wob wenn ich zb ausmiste kommt als ergebnis immer 6 verschiedene Zahlen
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 z = 0;
int tmp_anz = 1;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; } for (; z < 6; z++) { if (zaehle_vorkommen [tmp_anz] != 0) { zaehle_unterschiedliche_zahlen++; } } cout << " Es gibt: " << zaehle_unterschiedliche_zahlen << " unterschiedliche Zahlen. " << endl;
-
@mmm_1482_ sagte in Anzahl der unterschiedlichen Zahlenwerte bestimmen:
keine pointer wie auto
Auto ist kein Pointer! Auto ist ein Platzhalter für einen konkreten Datentyp. Den kan man immer einsetzten:
const int a = 1; auto b = a; int b = a; // int statt auto;
-
@manni66 ich weiß, dass es sich um zwei verschiedene Dinge handelt.. ich habe nur aufgezählt, was ich nicht verwenden darf
-
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 nichtaber 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 schleifebesten 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;
}
-
@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?
-
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)
bisend(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 haltenich denke es gibt sehr viele einfachere arten, aber bin leider dazu gezwungen mich daran zu halten
-
@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.