- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 25

Thema: Ein Zahlenproblem

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #15
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Ja, das sieht echt clever aus, vor allem die imponierende for-Schleife. Allerdings funktioniert es irgendwie nicht richtig. Da mein asuro die stdio.h nicht richtig anwendet habe ich versucht, das Programm anzupassen:
    Code:
    #include "asuro-probot.h"
    #include "asuro-probot.c"
    //#include <stdio.h>
    //#include <string.h>
    
    #define DIGITS "1234567890ABCDEF"
    
    int print_perm (unsigned int N, unsigned int n0)
    {
        char *l, letters[] = DIGITS;
        int j, digit[N];
        unsigned int n = n0;
        unsigned int i;
        
        // n0 in faktorielle Darstellung umwandeln
    
        for (i = 1; i <= N; i++)
        {
            digit[i-1] = n % i;
            n /= i;
    
    			//while(!(UCSRA & 0x20));
    			//UDR = digit[i-1]+'0';
        }
    		//SerWrite("\r\n\n",3);
    
        if (n)
            return 0;
    
        // n0-te Permutation ausdrucken
    
        //printf ("#%d: ", n0 + 1);
          PrintInt(n0+1);
          SerWrite(": ",2);
    
        for (i = N-1; i >= 0; i--)
        {
            for (j = -1, l = letters - 1; j < digit[i]; j += *++l != ' ');
            //printf ("%c", *l);
    
    			while(!(UCSRA & 0x20)); // Warten bis USART fertig ist
    			//UDR = *l; // Wert an Adresse l senden
    			UDR = *l+'0'; // Wert an Adresse l als Ascii-Zeichen senden
    			//UDR = i+'0'; // i als Ascii-Zeichen senden
    
            // Gedruckte Zeichen aus Liste entfernen
            *l = ' ';
        }
    
        //printf ("\n");
     		SerWrite("\r\n",2); // neue Zeile
    
        return 1;
    }
    
    int main (void)
    {
        unsigned int n=0, N=3;
    
    /*    printf ("\nAnzahl Zeichen: ");
        scanf ("%u", &N);
    
        printf ("\nPermutation Nr. (0 fuer alle): ");
        scanf ("%u", &n);
    
        if (N == 0 || N > strlen (DIGITS))
        {
            printf ("Ungueltige Eingabe: Anzahl Zeichen in 1..%d\n",
                    strlen (DIGITS));
            return 1;
        }
    */
     		SerWrite("\r\n\n",3); // neue Zeile
    
        if (n)
            print_perm (N, n-1);
        else
            while (print_perm (N, n++));
            
    	 while(1);
        return 0;
    }
    Die Ausgabe:
    Code:
    1    : 123R 6Eƈ "¤    "×"  ˆ Cø (usw....)
    Liegts an mir oder am Programm?

    Gruß

    mic

    [Edit]
    Die Lösung sollte doch so aussehen:

    Beispiel mit N = 3, n = 0
    #1: 123
    #2: 132
    ...
    #720: 098
    Geändert von radbruch (30.07.2011 um 01:31 Uhr)
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

Berechtigungen

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

LiFePO4 Speicher Test