fehlersuche...
-
icepacker schrieb:
-wenn alle ziffern unterschielich sind komm ich auf 24 ?
Wie kommst du darauf? Für jede Ziffer gibt es vier Möglichkeiten. Bei vier Stellen macht das 4 hoch 4 = 256 Kombinationen. 24 hättest du nur, wenn jede Zahl genau einmal vorkommen soll. Das prüft dein Algorithmus aber nicht.
wenn bei der rand() funktion 4* hintereinander die selbe zahl rauskommt passiert auch nichts, entweder die zahl gehört dazu und kommt ins arry oder nicht.
Was heißt denn "gehört dazu"? Angenommen, der Benutzer gibt 1, 2, 3 und 4 ein. Gehört 1111 dann dazu? Falls ja, hast du mehr als 24 Kombinationen. Falls nein, fängt das dein Algorithmus nicht ab.
-
waenn du abfragen willst ob eine zahl schon mal vorgekommen ist bei 4 wuerfen koenntes du einen array mit 4 elementen anlegen dann nach folgenden algorythmus vorgehen
generiere eine zahl gehe den array durch pruefe ob zahl im array vorhanden falls ja generiere eine zahl durchlaufvariable = 0 schleife von forne beginnen falls nein schreibe zahl in array und verwaende die zahl
-
MFK schrieb:
Was heißt denn "gehört dazu"? Angenommen, der Benutzer gibt 1, 2, 3 und 4 ein. Gehört 1111 dann dazu? Falls ja, hast du mehr als 24 Kombinationen. Falls nein, fängt das dein Algorithmus nicht ab.
ah
jetzt hats klick gemacht
. 1111 soll halt nicht dazu gehöhren.
ginge ja so zu vermeiden oder ?int doppelt=0; if (wuerfel==z1 && doppelt==0) //ich denke es ist klar wo im programm das steht { code=code * 10 + z1; doppelt=1; }
@--linuxuser--
bin mir noch nicht sicher ob ich deinen vorschlag verstanden habe, naja mal schauen^^lg icepacker
-
icepacker schrieb:
ah
jetzt hats klick gemacht
Gut.
icepacker schrieb:
1111 soll halt nicht dazu gehöhren. ginge ja so zu vermeiden oder ?
Du würdest jeweils einen dieser Merker für jede Position brauchen.
Ich rate dir dringend, dich von diesem Zufallsalgorithmus zu verabschieden. Stell dir doch mal vor, wie du an einem Kombinationsschloss jede Kombination ausprobieren würdest. Dann übertrag diesen Algorithmus in C. Stichwort verschachtelte Schleife.
-
@icepacker waenn du verschachtelte schleifen verstehen willst musst du auch das blockkonszept in c verstehen:
int main(){ int i = 0; {/*anfang block*/ int i = 4; int y = 0; {/*anfang block*/ printf("%d\n", y); /*---> FEHLER*/ }/*end block*/ printf("%d, %d\n", i, y); }/*end block*/ printf("%d\n", i); }/*end main*/
-
--linuxuser-- schrieb:
int main(){
Seit ANSI C von 1990 gibt es folgende Formen fuer main:
int main( int argc, char** argv ); int main( void );
die Konstruktion
int main();
ist identisch mit:
int main( int, ... );
Manche ANSI C konforme Compiler geben bei falscher Formulierung von main zumindest eine Warnung aus.
-
ok schuldigung
-
--linuxuser-- schrieb:
int y = 0; {/*anfang block*/ printf("%d\n", y); /*---> FEHLER*/ }/*end block*/ printf("%d, %d\n", i, y);
Kein Fehler. "y" ist innerhalb des Blocks definiert, weil Bezeichner von aeusseren Geltungsbereichen (scopes) an innere Geltungsbereiche weitergeleitet werden.
-
--linuxuser-- schrieb:
@icepacker waenn du verschachtelte schleifen verstehen willst musst du auch das blockkonszept in c verstehen:
Eigentor... (wie PowerOff ja auch schon gemerkt hat)
... int y = 0; {/*anfang block*/ printf("%d\n", y); /*---> FEHLER*/ }/*end block*/ ...
-
ja weis PEINLICH PEINLICH das passiert immer im unguenstigsten augenblick
-
MFK schrieb:
Ich rate dir dringend, dich von diesem Zufallsalgorithmus zu verabschieden. Stell dir doch mal vor, wie du an einem Kombinationsschloss jede Kombination ausprobieren würdest. Dann übertrag diesen Algorithmus in C. Stichwort verschachtelte Schleife.
ja also verschachtelte schleifen und blöcke sind, von der syntax her, kein problem
aber wie ich das programm machen soll ohne die funktion mit der zufallsmethode habe ich keine ahnung, da steh ich grad uff'm schlauch
und das progg mit dem kombination schloss würde ich so lösen:#include <stdio.h> int main(void) { int z1=2, //die einzelnen ziffern z2=5, z3=7, z4=3, code=0, //die kombination count, d1=0, d2=0, d3=0, d4=0 ; for (count=1; code < 1000; count++) { if ((count==z1) && (d1==0)) { code=code * 10 + z1; d1=1; } else if ((count==z2) && (d2==0)) { code=code * 10 + z2; d2=1; } else if ((count==z3) && (d3==0)) { code=code * 10 + z3; d3=1; } else if ((count==z4) && (d4==0)) { code=code * 10 + z4; d4=1; } } printf("die kombination lautet: %d\n", code); return 0; }
allerdings weiß ich net wie mir das helfen soll ?
vlt ein beispiel oder so?
lg icepacker
Ps: ich seh grad das progg oben, funzt net einwandfrei, aber vom prinzip her bringts mirs trotzdem nichts...