Hallo Searcher
Deine Lösung funktioniert leider auch nicht richtig, weil sie nicht alle Ziffern von '0' bis 9' berücksichtigt. Ausgabe deiner Variante:
Kombinationen und Anzahl der Kombinationen. Richtig wäre 10*9*8*7=5040 Kombinationen. Hier die Kombinationen mit drei Stellen:Code:0123 0132 0231 0213 0312 0321 1230 1203 1302 1320 1023 1032 2301 2310 2013 2031 2130 2103 3012 3021 3120 3102 3201 3210 24
https://www.roboternetz.de/community...2&d=1312105805
Gruß
mic
[Edit]
Das C-programm macht genau desselbe wie die Bascom-Variante. Es wird ein Array mit der Anzahl der gewünschten Stellen erzeugt und jede Stelle nacheinander mit allen Werten ausprobiert. Wenn der Wert für die aktuelle Stelle schon im Array vorhanden ist, wird dieser Wert übersprungen. Wenn man mit dem Wert für die erste Stelle startet, kann man alle weiteren Stellen mit dem selben Algorithmus errechnen:
Code:void suchen(uint8_t z) // z ist der Index im Array, es wird also die z-Stelle erzeugt { for(x[z]=0; x[z]<10; x[z]++) // Werte von 0 bis 9 erzeugen { gefunden=0; // flag wird gestezt, wenn Wert schon im Array erhalten ist for(y=0; y<z; y++) if(x[y]==x[z]) gefunden=1; // Alle Elemente im Array vor aktuellem Index prüfen if(!gefunden) // Wenn der Wert erstmalig im Array auftritt wird er im Array unter dem aktuellen Index espeichert { if(z < (ziffern-1)) suchen(z+1); // Rekursion! // Wenn noch nicht alle Stellen berechnet sind wird die nächste Stelle berechnet else { ausgabe(); // Ausgabe der Ziffernkombinationen in x[0] bis x[ziffern-1] nr++; } } } }







Hoffentlich liegt das Ziel auch am Weg


Lesezeichen