-         
Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 25 von 25

Thema: Ein Zahlenproblem

  1. #21
    Erfahrener Benutzer Roboter Genie Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.532
    Blog-Einträge
    127
    Anzeige

    Zitat Zitat von iBot Beitrag anzeigen
    @Searcher:
    Wenn ich mich nicht irre macht doch das Programm von radbruch das Selbe oder?
    Hi,
    ich kann radbruchs C Programme nicht verstehen. Seine Bascom Programme, wenn ich das richtig verstehe, nehmen Ziffern und vergleichen, ob diese schon in der Kombination vorhanden sind.???

    Mein Programm verzichtet darauf und tauscht stur die Stellen durch.

    Bitte um Berichtigung, wenn ich da was falsch interpretiert habe.

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  2. #22
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    56
    Beiträge
    5.788
    Blog-Einträge
    8
    Hallo Searcher

    Deine Lösung funktioniert leider auch nicht richtig, weil sie nicht alle Ziffern von '0' bis 9' berücksichtigt. Ausgabe deiner Variante:

    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
    Kombinationen und Anzahl der Kombinationen. Richtig wäre 10*9*8*7=5040 Kombinationen. Hier die Kombinationen mit drei Stellen:
    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++;
    			}
    		}
    	}
    }
    Geändert von radbruch (31.07.2011 um 14:49 Uhr)

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #23
    Erfahrener Benutzer Roboter Genie Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.532
    Blog-Einträge
    127
    Hallo radbruch,
    das war ja schnell getestet! Die Ausgabe ist Absicht.

    Wenn die Anzahl der Stellen auf 4 begrenzt ist, werden alle Permutationen der Ziffern 0, 1, 2, 3 ausgegeben. Zu Testzwecken durch die REMs auf 4 begrenzt.

    Wenn die Anzahl der Stellen auf 10 ist, werden alle Permutationen der Ziffern 0, 1, 2, 3 ... 9 ausgegeben.

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  4. #24
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    56
    Beiträge
    5.788
    Blog-Einträge
    8
    Wenn die Anzahl der Stellen auf 10 ist, werden alle Permutationen der Ziffern 0, 1, 2, 3 ... 9 ausgegeben.
    Achso, das habe ich natürlich nicht versucht. Sorry. Dann bin ich mit meiner Lösung eigentlich übers Ziel hinausgeschossen.

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  5. #25
    Erfahrener Benutzer Roboter Genie Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.532
    Blog-Einträge
    127
    Zitat Zitat von radbruch Beitrag anzeigen
    Achso, das habe ich natürlich nicht versucht.
    Das mit den 10 Stellen hab ich, ehrlich gesagt, auch nicht ausprobiert.

    Bis 5 Stellen mit 0, 1..4 hat es geklappt und das hat mich schon einige Kästchen auf kariertem Papier und Radiergummi gekostet.

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

Seite 3 von 3 ErsteErste 123

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •