Wörterlistenprogramm
-
Danke schon für die Antworten

Hat mir schon geholfen mit Permutation!
-
Hoppala

Hab das mal so abgeändert:#include <iostream> #include <algorithm> using namespace std; int main () { char mychars[] = {'A','a','B','b','C','c','D','d','E','e','F','f','G','g','H','h','I','i','J','j','K','k','L','l','M','m','N','n','O','o','P','p','Q','q','R','r','S','s','T','t','U','u','V','v','W','w','X','x','Y','y','Z','z'}; cout << "The 3! possible permutations with 3 elements:\n"; sort (mychars,mychars+52); int i = 0; do { cout << mychars[i] << mychars[i++] << endl; i++; } while ( next_permutation (mychars,mychars+52) ); cin.get(); return 0; }Aber wenn ich das Programm dann starte, flimmert die Konsole erst und dann fängt mein Computer wie wild an zu piepsen ein paar mal und nach ner Zeit kommt ne Fehlermeldung: "Permutator.exe funktioniert nicht mehr"...und wenn man dann in die Konsole schaut sind da lauter Herzchen und Smiles und sowas nur xD Eindeutig der coolste Programmfehler den ich bisher gesehen hab :D:D
Manchmal piepst auch nur die ganze Zeit und rattert in der Konsole lauter Buchstaben, Smiles und Herzchen runter
Aber mal wieder Ernst...
woran liegt das? Braucht zu viel Ressourcen? Oder kann Permutation einfach nicht mit 52 Elementen umgehen?Hoffe auf Antwort!

Finn
-
Dein mychars hat 52 Elemente. Dein i wird aber deutlich größer als 52, daher gibts du einfach wahlos Speicherstellen aus bis du auf Speicher zugreifst der dem Programm nicht zugewiesen wurde. Die Smilies, Herzen und Beeps sind übrigens werte irgendwo zwischen 0 und 0x20.
Edit: Die Permutation scheint hier aber auch nicht zu passen. Damit kriegt man nur alle Anordnungen. Was hier gesucht ist sind Auswahlen. Dafür reichen die verschachtelten for Schleifen wenn du die Länge der gebildeten Wörter vorher festlegst.
-
Nein ich möchte schon alle Möglichkeiten bekommen

-
so das hier hab ich jetzt:
#include <iostream> #include <algorithm> using namespace std; int main () { char mychars[] = {'A','a','B','b','C','c','D','d','E','e','F','f','G','g','H','h','I','i','J','j','K','k','L','l','M','m','N','n','O','o','P','p','Q','q','R','r','S','s','T','t','U','u','V','v','W','w','X','x','Y','y','Z','z'}; int a = 0; int b = 0; do { cout << mychars[a] << mychars[b] << endl; b++; if(b == 52){a++;b = 0;} } while ( a <= 52 ); cin.get(); return 0; }Aber funktioniert so nicht
Probierts mal aus...warum auch immer fängt das bei xg an 
Help pls

-
ok, mit next_permutation geht es doch nicht, weil ja abc.......YZ nix anderes ist als abc........ZY ^^
wirst es also doch mit schleifen machen müssen:ist aber gar nicht so trivial, wenn du die gleichen ergebnisse nicht haben möchtest:
ist aber gar nicht mal so trivial^^sollte aber mit 3 forschleifen, nem array, 2 continue gehen, wenn mich nicht alles täuscht:
pseudo-c++:
vector = "A..Z a..z" for(i = vector.begin; i != vector.end; ++i) { for(j = vec.begin; j != vec.end; ++j) { if(*i == *j) continue; for(k = vec.begin; k != vec.end; ++k) { if(*k == *i || *k == *y) continue; std::cout << *i << *j << *k << std::endl; } } }bb
edit: oh - du wolltest ja nur die ersten beiden zeichen... ^^
dann kannst du die innerste schleife weglassen ;o)
-
Finn schrieb:
Aber funktioniert so nicht
Probierts mal aus...warum auch immer fängt das bei xg an 
Also bei mir kommt es in folgender Form raus:
AA
Aa
AB
AbAlso so wie mychars angelegt ist. Allerdings gibt der sehr viel aus und es kann sein das man die Konsole nicht so weit hochscrollen kann.
-
Ja...danke meine Version funktioniert auch! Wenn ich das in ne File schreiben lass steht dann auch alles drin! Man kann in der Konsole einfach nicht weit genug hochscrollen

Danke an alle für die Hilfe...hab halt zu kompliziert gedacht, dabei wars ganz einfach
Danke!
Finn
-
Ach übrigens...hab das mal ausgeführt, dass es mir alle 1-5 stelligen anzeigen soll...mit 61 Zeichen

Hab das Programm ca. 2 Stunden laufen lassen, CPU-Auslastung 100%, Outputfile schon über 7 Gig und immer noch net fertig...habs dann abgebrochen, weil ich das mit keinem programm öffnen konnte
Stand überall "Fehler" oder "Datei zu groß!" xD
Mit 1-4 stelligen hats ca. 15 mins. gedauert bis es fertig war...und ich konnte es noch öffnen!^^Danke nochmal für die Hilfe
Finn
-
Finn schrieb:
Ach übrigens...hab das mal ausgeführt, dass es mir alle 1-5 stelligen anzeigen soll...mit 61 Zeichen

Hab das Programm ca. 2 Stunden laufen lassen, CPU-Auslastung 100%, Outputfile schon über 7 Gig und immer noch net fertig...habs dann abgebrochen, weil ich das mit keinem programm öffnen konnte
Stand überall "Fehler" oder "Datei zu groß!" xD
Mit 1-4 stelligen hats ca. 15 mins. gedauert bis es fertig war...und ich konnte es noch öffnen!^^Danke nochmal für die Hilfe
Finndu solltest für so etwas ja auch kein next_permutation verwenden(weil eben auch jede Menge Müll ausgegeben wird, Bsp.: asd....AZ, asd....AY, asd....AX, ... obwohl du nur die ersten 5 zeichen brauchst...
du siehst ja, wie ich das gemacht habe - wenn bei dir ein und der selbe buchstabe mehrfach vorkommen darf, dann lässt du dasif(*a == *b) continue;einfach weg. Du musst einfach nur noch paar Mal die Schleife copy&pasten und ein wenig abändern ;o)
-
Na ich hab doch next_permutation gar net drinne...lasse mir einfach linear alle möglichen Kombinationen anzeigen