Zahlen vergleichen
-
Ich habe in meinem Programm 6 Zufallszahlen:
randomize() Z1=random(5) Z2=random(5) Z3=random(5) Z4=random(5) Z5=random(5) Z6=random(5)Ich möchte kontrollieren ob 3 Zahlen gleich sind.
Nur wie stelle ich das an?
Danke schon mal.
MFG.
-
Schritt 1: Zahlen in ein Array packen
Schritt 2: über dieses iterieren und vergleichen
Schritt 3: Profit.
-
- Zahlen merken (zB in'nem std::vector)
- Sortieren
- Durchlaufen und testen ob 3 aufeinanderfolgende Elemente gleich sind.
-
danke erstmal für die schnellen antworten.
hat von euch vielleicht jemand kurz zeit mir solch einen array vorzustellen. hab keine ahnung wie ich das hinbekommen soll.
mfg.
-
int Z[5] = {random(5), random(5), random(5), random(5), random(5)};
-
int main () { int a[2]; // erstelle Array mit 2 Elementen vom Typ int a[0] = 5; // erstes Element bei Index 0 a[1] = 2; // zweites einfach +1 }Ich denke das sollte reichen. Allerdings solltest du das in einem guten Buch nachschalgen. Siehe mal im FAQ für Anfängerbücher.
@Fellhuhn
Das wollte ich zuerst auch machen, dachte aber, dass er sich gescheiter mit der Materie befässt, als es von uns lösen zu lassen.
-
Fellhuhn schrieb:
int Z[5] = {random(5), random(5), random(5), random(5), random(5)};danke danke.
ich hab einfach viel viel viel zu kompliziert gedacht.
-
Naja, wenn er es nicht versteht wird er eh einen auf den Deckel bekommen wenn sein Prof/Lehrer/Domina eine Erklärung verlangt.

Und das eigentliche Problem kommt ja erst noch. :p
-
Man kann das Array natürlich auch mit einer Schleife füllen. Bei mehr Elementen wird das dann auch schöner sein

-
ok ich wollte es ja selbst lösen wenn ihr hier schon schreibt das dass problem erst kommen wird

also ihr wisst es ja schon das es kommt
.
wie sortier und verlgeiche ich die zahlen?DANKE

-
florian.dulzky schrieb:
ok ich wollte es ja selbst lösen wenn ihr hier schon schreibt das dass problem erst kommen wird

also ihr wisst es ja schon das es kommt
.
wie sortier und verlgeiche ich die zahlen?DANKE

Ja, das haben wir erwartet
Aber du kannst für den Anfang den Bubblesort-Algorithmus nutzen:
-
gjghjgh schrieb:
florian.dulzky schrieb:
ok ich wollte es ja selbst lösen wenn ihr hier schon schreibt das dass problem erst kommen wird

also ihr wisst es ja schon das es kommt
.
wie sortier und verlgeiche ich die zahlen?DANKE

Ja, das haben wir erwartet
Aber du kannst für den Anfang den Bubblesort-Algorithmus nutzen:klingt gut hab ich in einem buch auch mal gelesen davon

-
BubbleSort ist aber ineffizient. Wenn Du es professionell machen willst, dann steige auf MergeSort (QuickSort etc.) um. Ich habe mich damit letztens beschäftig, weshalb DU den Code über die Suchefunktion finden solltest.
lg, freakC++
-
Warum nicht gleich STL?
-
freakC++ schrieb:
BubbleSort ist aber ineffizient. Wenn Du es professionell machen willst, dann steige auf MergeSort (QuickSort etc.) um.
Er will doch nur 5 oder 6 Zahlen sortieren. Da können diese Verfahren ihre Stärken nicht wirklich ausspielen, sie werden wohl sogar langsamer sein. Eine "professionelle" Herangehensweise sollte das berücksichtigen. Ernsthafte Quicksort-Implementierungen schalten auch bei kleinen Arrays auf einen naiven Algorithmus um. Vielleicht nicht gerade Bubble Sort, da gibt es ja noch einige andere.
BTW die einfachste Lösung benutzt eine map: Einfach immer Map[Zahl]++ und am Schluss gucken ob irgendein Element >= 3 ist. Wenn man völlig unbeleckt ist kriegt man nämlich den Algorithmus, drei aufeinanderfolgende gleiche Zahlen in einem sortierten Array zu finden, auch nicht ohne weiteres fehlerfrei hin.
-
Achso, das stimmt natürlich. Bei solch kleinen Arrays ist es dann egal, ob er Bubble-, Selection-, Insertionsort nimmt. Trotzdem ist es eine interessante Ecke der Informatik!
lg, freakC++
-
Selbst ohne sortieren und STL sind es nur drei verschachtelte For-Schleifen mit zwei Abfragen.

-
Und mit STL ist das genau eine Zeile:
std::sort(Z,Z+arraySize);
-
Fellhuhn schrieb:
Selbst ohne sortieren und STL sind es nur drei verschachtelte For-Schleifen mit zwei Abfragen.

Drei? Pff...
#include <iostream> const int MAX_SIZE = 5; int main() { int a[MAX_SIZE] = {10, 30, 10, 30, 50}; unsigned int i; unsigned int count; for (i = 0; i < MAX_SIZE; ++i) { count = 0; for (unsigned int j = 0; j < MAX_SIZE; ++j) { if (count >= 3) { break; } if (a[i] == a[j]) { ++count; } } if (count >= 3) { break; } } if (count >= 3) { std::cout << a[i] << std::endl; } }
-
Ih, das ist ja mit Hilfsvariablen, bäh...