 | Sie betrachten gerade: hashtable
|  |
14.05.2011, 13:15
| hashtable
#1 | | Erfahrener Benutzer
Registriert seit: 02.02.2010
Beiträge: 561
| hashtable
hallo an alle,
jetzt werden bestimmt einige von euch denken das ich damit etwas böses vorhabe, aber das ist nicht so.
also zu meinem thema wo ich hilfe brauch.
kann mir jemand einen tipp geben wie ich mit c++ buchstaben kombis erstellen kann?
also so:
a
b
c
...
x
y
z
aa
ab
ac
...
usw.
bisher habe ich es geschaft das alphabet aus kleinen buchstaben so zumachen, aber das ist zuviel code.
grüße
|
14.05.2011, 17:26
| hashtable
#2 | | C8H10N4O2 - Geniesser
Registriert seit: 05.07.2007 Ort: Nordamerika, CA, NB
Beiträge: 18.694
| AW: hashtable
Verwende die Character-Codes der Zeichen. Dann hast du einen begrenzten Raum an Zahlenwerten, den du via Schleifen beliebig miteinander kombinieren kannst (verschachtelte Schleifen).
|
14.05.2011, 17:42
| hashtable
#3 | | Erfahrener Benutzer Themenstarter
Registriert seit: 02.02.2010
Beiträge: 561
| AW: hashtable
also ich hab dsa so gemacht: Code: char alphabetKLEIN[27]={' ','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
for(int aa=0;aa<27;aa++)
{
for(int a=0;a<27;a++)
{
for(int b=0;b<27;b++)
{
for(int c=0;c<27;c++)
{
for(int d=0;d<27;d++)
{
for(int e=0;e<27;e++)
{
for(int f=0;f<27;f++)
{
for(int g=0;g<27;g++)
{
for(int h=0;h<27;h++)
{
for(int i=0;i<27;i++)
{
for(int j=0;j<27;j++)
{
for(int k=0;k<27;k++)
{
for(int l=0;l<27;l++)
{
for(int m=0;m<27;m++)
{
for(int n=0;n<27;n++)
{
for(int o=0;o<27;o++)
{
for(int p=0;p<27;p++)
{
for(int q=0;q<27;q++)
{
for(int r=0;r<27;r++)
{
for(int s=0;s<27;s++)
{
for(int t=0;t<27;t++)
{
for(int u=0;u<27;u++)
{
for(int v=0;v<27;v++)
{
for(int w=0;w<27;w++)
{
for(int x=0;x<27;x++)
{
for(int y=0;y<27;y++)
{
for(int z=0;z<27;z++)
{
cout <<alphabetKLEIN[aa] << alphabetKLEIN[a] << alphabetKLEIN[b] << alphabetKLEIN[c]<< alphabetKLEIN[d] << alphabetKLEIN[e] << alphabetKLEIN[f] << alphabetKLEIN[g] << alphabetKLEIN[h] << alphabetKLEIN[i] << alphabetKLEIN[j] << alphabetKLEIN[k] << alphabetKLEIN[l] << alphabetKLEIN[m] << alphabetKLEIN[n] << alphabetKLEIN[o] << alphabetKLEIN[p] << alphabetKLEIN[q] << alphabetKLEIN[r] << alphabetKLEIN[s] << alphabetKLEIN[t] << alphabetKLEIN[u] << alphabetKLEIN[v] << alphabetKLEIN[w] << alphabetKLEIN[x] << alphabetKLEIN[y] << alphabetKLEIN[z] <<endl;
}}}}}}}}}}}}}}}}}}}}}}}}}}}
ist halt seeeehr kompliziert...
|
14.05.2011, 17:55
| hashtable
#4 | | C8H10N4O2 - Geniesser
Registriert seit: 05.07.2007 Ort: Nordamerika, CA, NB
Beiträge: 18.694
| AW: hashtable
Du willst also Strings erzeugen, die 27 Zeichen lang sind und von
"..........................a" bis "zzzzzzzzzzzzzzzzzzzzzzzzzzz"
gehen?
(Anstelle der Punkte natuerlich Leerzeichen!)
Der Code ist nicht kompliziert, sondern unuebersichtlich.
|
14.05.2011, 18:05
| hashtable
#5 | | Erfahrener Benutzer Themenstarter
Registriert seit: 02.02.2010
Beiträge: 561
| AW: hashtable
jap genau. aber 27 zeichen sind übertrieben, 10 ziffern reichen auch schon.
|
15.05.2011, 09:24
| hashtable
#6 | | Erfahrener Benutzer
Registriert seit: 28.10.2005
Beiträge: 6.669
| AW: hashtable
Eigentlich würde sich Rekursion hier sehr anbieten, da die Schritte ja immer gleich sind..
Kuck dir mal das als Orientierungshilfe an: Brute-Force-Algorithmus in C++
Mit ein bisschen rumprobieren wirds ziemlich einfach.
Hier mal ein Halb-Pseudocode von mir (ich kann kein C.^^), daher nicht wundern wenn er nicht läuft / veränder ihn bitte noch. Code: string charset = "abcdefghijklmnopqrstuvwxyz";
int size = strlen(charset);
void function bruteforce(maxpermutations, position, string) {
for(i=0;i<size;++i) {
if(position < maxpermutations - 1) {
bruteforce(maxpermutations, position+1, string + charset[i]);
}
print(string + charset[i]);
}
}
#Wenn du das ganze 10mal willst
bruteforce(10, 0, ""); Wenn ich keinen größeren Denkfehler hab, müssts gehen. ^^
|
15.05.2011, 10:56
| hashtable
#7 | | Erfahrener Benutzer Themenstarter
Registriert seit: 02.02.2010
Beiträge: 561
| AW: hashtable
danke niko. werd ich mir mal anschauen.
hab da auch noch was rumprobiert, s geht auch, halt nur immer nur eine ziffer  und ich habe keine ahnung wo ich hier ne 2./3./4. schleife einbauen soll... Code: char cols[94];
for(int i = 0; i < 94; i++ )
{
cols[i] = 33+i;
cout << cols[i] << endl;
//cout << "'" << cols[i] << "',";
} EDIT:
sooo hab jetzt die "lösung", auch wen aus bisher ungeklärten ursache das program ab un an piept und sich dadruch aufhängt, deswegen die for schleife. findet ihr einen fehler? Code: for(int zaehle=0;zaehle<25500000;zaehle++)
{
long n = zaehle;
char zwischenspeicher[255];
_itoa(n, zwischenspeicher, 255 );
cout << zaehle << " - " <<zwischenspeicher << "\n";
//PAUSE SCHLEIFE
for(int x=0;x<10000000;)
{
x++;
}
//system("ping -n 1 localhost > nul");
} |  |  | | | Themen-Optionen | Thema durchsuchen | | | | | Ansicht | Linear-Darstellung | |