tutorials.de Buch-Aktion 05/2012
Like Tree3Danke
  • 1 Beitrag von Jennesta
  • 1 Beitrag von Jennesta
  • 1 Beitrag von Vereth
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
929
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    om1krnoy om1krnoy ist offline Mitglied
    Registriert seit
    May 2010
    Beiträge
    13
    Hallo,
    ich habe gestern ein Programm geschrieben welches Permutation ausgibt. Und zwar gibt man ein 4- stelliges Wort ein und erhält alle Permutation.
    Habe das ganze mit 4 for Schleifen gelöst. Jetzt habe ich aber dass Problem dass er mir bei z.B. dem Wort "halo" auch kombinationen wie hhhh ausgibt.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    
    #include <stdio.h>
    #include <string.h>
     
    #include <math.h>
     
    int main (void)
    {
        int i, j, o, u;
        char z[4];
        
        printf("Permutationen zu einem Wort\n"
               "===========================\n"
               "Gib ein Wort mit 4 Zeichen ein: ");
     
        z[0] = getchar(); 
        z[1] = getchar();
        z[2] = getchar();
        z[3] = getchar();
        getchar ();
     
     
        for (i = 0; i <= 3; i++){
            for (j = 0; j <= 3; j++)
                    for (o = 0; o <= 3; o++)
                            for (u = 0; u <= 3; u++)
                                    if (?)
                                        
                                        printf("%c%c%c%c ", z[i], z[j], z[o], z[u]);
                                    
        }
                        
                        
                
        return 0;
    }
    Ich weiß dass ich noch eine if Funktion anhängen muss weiß aber nicht wie ich das überprüfen kann.
    Dachte mir er soll schauen dass alle Werte von z[0] - z[1] gleich der werte z[i] - z[u] sind. Weiß aber nicht wie ich das abfragen kann.
    Wäre net wenn mir jemand helfen könnte.

    Gruß Benny
     

  2. #2
    Avatar von Jennesta
    Jennesta Jennesta ist gerade online Mitglied Gold
    Registriert seit
    Sep 2007
    Ort
    Aachen
    Beiträge
    215
    Hi,
    wenn ich dich richtig verstanden habe, möchstest du das jeder Buchstabe auch nur einmal vokommt. Wenn dem so ist, musst du ab der zweiten for-Schleife übrprüfen, ob der Buchstabe schon benutzt wird.
    z.B.

    Code cpp:
    1
    
     if(z[i] == z[j]) continue;

    Dadurch überspringt das Programm den Schleifendurchlauf. Dies müsstest du entsprechend für die anderen fors auch realisieren.

    Grüße
    om1krnoy bedankt sich. 
    Was soll daran kompliziert sein? Es muss doch nur ein Rad bewegt werden, man kann aufsteigen, es kommt die Matschhütte und durch den Regenbogen gelangst du zum hungrigen Affen, der Affenschwanz wird gezogen und bums kommst du zum Paradispark.

  3. #3
    om1krnoy om1krnoy ist offline Mitglied
    Registriert seit
    May 2010
    Beiträge
    13
    Ja will ich im Prinzip schon aber wenn ich z.B. "woro" eingebe dann würde er mich ja rausschmeisen weil zwei Buchstaben gleich sind und des will ich nicht

    Gruß
     

  4. #4
    Avatar von Jennesta
    Jennesta Jennesta ist gerade online Mitglied Gold
    Registriert seit
    Sep 2007
    Ort
    Aachen
    Beiträge
    215
    Achjo...das hab ich ganz unterschlagen.
    Was mir sonst spontan einfällt wäre zusätzlich ein counter, der auch die Anzahl zählt und diese in der if vergleicht.
    Mir fällt jedoch nicht auf die schnelle ein, ob es eine schnellere bzw effektivere Lösung gibt, da müsste ich mir dann morgen drüber mehr Gedanken machen.

    Grüße
    om1krnoy bedankt sich. 
    Was soll daran kompliziert sein? Es muss doch nur ein Rad bewegt werden, man kann aufsteigen, es kommt die Matschhütte und durch den Regenbogen gelangst du zum hungrigen Affen, der Affenschwanz wird gezogen und bums kommst du zum Paradispark.

  5. #5
    Avatar von Vereth
    Vereth Vereth ist offline Mitglied Brokat
    Registriert seit
    Nov 2009
    Ort
    Dortmund
    Beiträge
    372
    Ich habe mal in einem Beitrag ein Beispielprogramm in Java zum Zulosen ohne Zurücklegen veröffentlicht; die dortige Methodik kannst du leicht anpassen, um sie in deinem C-Programm zu verwenden.
    Außerdem habe ich in einem anderen Beitrag eine Java-Klasse veröffentlicht, die den SEPA-Algorithmus verwendet, um bei Bedarf Permutationen iterativ liefern zu können; du darfst sie gerne als Vorlage für Klassen in C++ verwenden.
    Eine englische Erklärung des SEPA-Algorithmus inklusive einer C-Implementierung findest du hier.
    om1krnoy bedankt sich. 
    Vielen Dank für die Nutzung des Bewerten- und Danke-Buttons

    Wenn man sieht, dass man einen anderen glücklich gemacht hat, ist die Welt um zwei glückliche Menschen reicher.

  6. #6
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.
    Zitat Zitat von Vereth Beitrag anzeigen
    Ich habe mal in einem Beitrag ein Beispielprogramm in Java zum Zulosen ohne Zurücklegen veröffentlicht; die dortige Methodik kannst du leicht anpassen, um sie in deinem C-Programm zu verwenden.
    Außerdem habe ich in einem anderen Beitrag eine Java-Klasse veröffentlicht, die den SEPA-Algorithmus verwendet, um bei Bedarf Permutationen iterativ liefern zu können; du darfst sie gerne als Vorlage für Klassen in C++ verwenden.
    Eine englische Erklärung des SEPA-Algorithmus inklusive einer C-Implementierung findest du hier.
    In C++ ist der Algorithmus bereits in der STL implementiert: http://www.cplusplus.com/reference/a...t_permutation/

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  7. #7
    om1krnoy om1krnoy ist offline Mitglied
    Registriert seit
    May 2010
    Beiträge
    13
    Vielen Dank hat wunderbar funktioniert
     

Ähnliche Themen

  1. Permutation eines Arrays
    Von 'GreenDragon' im Forum PHP
    Antworten: 1
    Letzter Beitrag: 04.10.10, 09:27
  2. Permutation erzeugen
    Von Thomas Darimont im Forum Algorithmen & Datenstrukturen mit Java
    Antworten: 0
    Letzter Beitrag: 26.06.10, 11:59
  3. C - Permutation mit 10 Zahlen
    Von sheester im Forum C/C++
    Antworten: 10
    Letzter Beitrag: 27.12.09, 14:52
  4. Permutation (kombinationen anzeigen)
    Von hemorieder im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 05.04.06, 11:57