array groesste Zahl raus filtern?
-
zu 1)
Es wäre vielleicht wünschenswert, wenn Du in Deiner Nachricht zeigen könntest, was Du bisher schon gemacht bzw. versucht hast. Wenn Du ein Programm fertig hast, möchtest Du doch sagen können, daß es von Dir ist und nicht von 1000 Leuten aus dem Internet immer ein bißchen programmiert wurde.
Zum Thema: Im Prinzip kommt es darauf an, ob es sich um einen sortierten Array handelt oder nicht. Wenn Du einen sortierten Array hast, ist es natürlich einfach (->das erste bzw. letzte Feld abrufen). Wenn nicht, könntest Du z.B. jedes Feld durchlaufen und in einer seperatern Variablen immer die bis dahin höchste Zahl speichern und diese am Ende ausgeben.zu 2)
Du könntest einen Abgleich machen. Da die zufallsgenerierten Zahlen von Dir in einem Array gespeichert werden, könntest Du bevor eine neue Zahl hinzufügst, diese erst in dem Array suchen. Falls sie nicht gefunden wird, kann sie hinzugefügt werden.zu 2,5)
ich weiß ehrlich gesagt nicht genau, was Du mit eine Funktion in eine Funktion einbauen meinst. Du kannst aus jeder Funktion wieder eine Funktion aufrufen, solange diese in Deinem Zugriffsbereich liegt. Du kannst z.B. nicht von außerhalb einer Klasse auf private-deklarierte Funktionen dieser Klasse zu weisen, aber folgendes ist möglich:void foo1() { //do something }; void foo2() { //do something foo1(); //do someting };
Ich hoffe, ich konnte Dir weiterhelfen...
-
@dreaddy
Sorry, habe Deiner Nachricht leider erst gelesen, nachdem ich meine abgeschickt habe. Ich habe also nicht einfach Deine Antworten noch einmal runtergetippt.
-
@dreaddy: i läuft bei deiner Schleife deutlich weiter als bis zum Ende des Arrays,weil sizeof(int) normalerweise mehr als 1 ist. Und fütter deiner Schleife mal ein array, in dem nur negative Werte drinstehen.
-
jojo ^^ war bissl abgelenkt undso... *ausredesuch*.
Ist hoffentlich jetzt behoben
Und das mit den negativen Zahlen... naja ich ging mal vom Lottoprogramm aus, da gibts so wenig davon
-
Sollte mich wundern, wenn das so kompiliert. Du meinst sizeof(zahlen)/sizeof(int).
-
Noch ne verrückte Idee um doppelte zu vermeiden.
1 Erzeuge einen Vektor mit 50 Elementen, setzte alle Werte auf Null, benutze den Index 0 nicht. 2 Erzeuge eine Zählvariable unt setze sie auf 0; 3 Erzeuge Zufallszahlen aus dem Bereich 1..49. 4 Wenn das entsprechende Element im Vektor 0 ist setze den vektor auf 1 und erhöhe die Zählvariable um 1 5 Wenn das entsprechende Element im Vektor 1 fange wieder bei 2 an 6 Wenn die Zählvariable 6 ist bist du fertig 7 Gib die Indices des Vektors für die der Inhalt 1 aus
Somit ist die Hausaufgabe erledigt und du hast 6 Lottozahlen aufsteigende sortiert ausgegeben.
Nachteil: Array mit 50 Elementen wovon das Element 0 nicht genutzt ist.
Vorteil: keine ''umständlichen'' Suchaktionen ob die Zahl schon existiert.
-
Oder aber:
Liste mit 49 Werten füllen, zufällig einen Eintrag auswählen, speichern und aus der Liste löschen, nächsten Eintrag zufällig auswählen etc.
Am besten die ausgewählten Zahlen in nen Vector rein und dann mit sort sortieren... fertig.
-
#include <algorithm> //... int *max = std::max_element(array, &array[array_size]);
-
#include <algorithm> int zahlen[49]; for (unsigned i = 0; i < 49; ++i) zahlen[i] = i; std::random_shuffle(zahlen, zahlen + 49); int auswahl[6]; std::copy(zahlen, zahlen + 6, auswahl);
Solche Hausaufgaben macht man gerne :p
-
hey, fast hätte ich dasselbe gepostet
-
std::set<int> lottozahlen; while (lottozahlen.size() < 6) { lottozahlen.insert(std::rand()); }
Nur um mal ne Alternative zu posten.
-
Da fehlt allermindestens noch ein "% 49 + 1" :p
Aber interessanter Ansatz
-
Ups. Ja, das kann sich jeder selbst dazu denken