Zufallszahlen erzeugen und vergleichen mit Eingabe (Masterminde)
-
Printf ist mit den Arrays auch falsch
-
manni66 schrieb:
Ich bezweifle, dass scanf mit der Adresse eines Arrays aufgerufen werden darf, aber ich programmiere schon lange nicht mehr C.
Das ist ausnahmsweise korrekt, da die Adresse des Arrays gerade auch die Adresse des ersten Elements ist (genauso wie in C++). Sieht aber trotzdem stark nach einem Verständisfehler aus.
Bei printf ist es aber eindeutig falsch und gibt die Adresse des Arrays aus, was zu der Vermutung führt, dass die Zufallszahl größer als gewollt und länger ist.
-
Also ja, stimmt ist C. Da habe ich mich im Forum vertan sorry.
Ansonsten also den Zufallsgenerator nur einmal initialisieren, ok mache ich.Was dass mit der Zufallszahl angeht, so bin ich der Meinung mich zu erinnern, dass diese nicht größer als "max" werden sollt, wird sie aber.
-
feps schrieb:
Was dass mit der Zufallszahl angeht, so bin ich der Meinung mich zu erinnern, dass diese nicht größer als "max" werden sollt, wird sie aber.
Das Problem ist, dass du die falschen Werte ausgibst.
Die Ausgabe sollte so aussehen:printf("\n\n %d %d %d \n %d", trye[0], rp, rf, ziel[0]);
(oder rf/rp anstatt 0)
-
cxx schrieb:
..., da die Adresse des Arrays gerade auch die Adresse des ersten Elements ist (genauso wie in C++).
Aber der Adressoperator ist bei einem Array² selten sinnvoll, da ja schon der Name alleine für die Adresse steht.
²gemeint ist das ganze Array, nicht ein Element davon.
-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (alle ISO-Standards) in das Forum C (alle ISO-Standards) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Nachdem jetzt erläutert wurde, was alles falsch ist, bleibt eine Frage.
Wie kann ich das Problem (möglichst einfach zu verstehen) lösen?
-
feps schrieb:
Wie kann ich das Problem (möglichst einfach zu verstehen) lösen?
Indem man ein minimal compilierbares Beispiel liefert?
Indem man dort die schon gegebenen Fehlerhinweise berücksichtigt?
Indem man die Forumsregeln liest und befolgt?
Indem man die C Codetags benutzt?
-
cxx schrieb:
manni66 schrieb:
Ich bezweifle, dass scanf mit der Adresse eines Arrays aufgerufen werden darf, aber ich programmiere schon lange nicht mehr C.
Das ist ausnahmsweise korrekt, da die Adresse des Arrays gerade auch die Adresse des ersten Elements ist (genauso wie in C++).
Ja und?
Was soll das aussagen?
Nur dass du verständnislos das nachplapperst, was du irgendwo aufgeschnappt hast.int trye[10]; scanf("%d", &trye);
Und das ist UB. Deine Schlussfolgerung, es sei alles OK weil die Zeigerwerte gleich sind bezeugt nur, dass du keine Ahnung von Zeigern hast (und von Arrays auch nicht).
-
feps schrieb:
Wie kann ich das Problem (möglichst einfach zu verstehen) lösen?
Wie wärs, wenn du beim einlesen der Nutzereingabe diese auch in die entsprechenden Elemente des Arrays speicherst.