Serial mit Zufallszahlen und Buchstaben! Immer gleiche...
-
Hallo,
ich versuche grad einen Serial in c++ zu erstellen, mit zufaelligen Zahlen und zufaelligen Buchstaben...
Warum kommen hier trotzdem immer die selben Zahlen raus, kann mir dass jemand sagen?
Hab schon einiges Probiert und die Schleifen erweitert und erweitert, dann kommen zwar andere Zahlen doch diese bleiben dann auch wieder gleich...char buchstabe[26] = {"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"}; int X=0, Z=0; int ersetzen; char zeichen[4]; for (int l=0; l<4; l++) // 4 Random Buchstaben aus der Liste Waehlen { X = (rand() % 1000); Memo1->Lines->Add (X); } if ( Z<4 && X < 26) { zeichen[Z] = buchstabe[X]; Z++; Memo1->Lines->Add (X); } } Memo1->Lines->Add (zeichen[0]); Memo1->Lines->Add (zeichen[1]); Memo1->Lines->Add (zeichen[2]); Memo1->Lines->Add (zeichen[3]); int wert1[15]; // 16 Zufaellige Zahlen generieren und in Array Schreiben int i=0; randomize(); for(i=0; i<16; i++) { wert1[i] = (rand() % 10); } AnsiString a, b, c, d, e, r, g, h, q, j, k, l, m, n, o, p; a = wert1[0]; b = wert1[1]; c = wert1[2]; d = wert1[3]; e = wert1[4]; r = wert1[5]; g = wert1[6]; h = wert1[7]; q = wert1[8]; j = wert1[9]; k = wert1[10]; l = wert1[11]; m = wert1[12]; n = wert1[13]; o = wert1[14]; p = wert1[15]; // wert1[0] = zeichen[0]; Edit1->Text = a + b + c + d; Edit2->Text = e + r + g + h; Edit3->Text = q + j + k + l; Edit4->Text = m + n + o + p; AnsiString minus = "-"; // Verketten; AnsiString f = Edit1->Text + minus + Edit2->Text + minus + Edit3->Text + minus + Edit4->Text; serial=f; Memo1->Lines->Add (f); }
In Delphi ging es so einfach mit der ANSI Tabelle, da braucht man nur chr und die Nr. angeben...
Danke schonmal
mfg
Simon
-
Zufallszahlen müssen initialisiert werden.
As far as i know mit irgendwas wie:
srand(time);
Google einfach mal nach "srand"
-
Hmm, irgendwie verwirrt mich dein Code ziemlich. Du willst einfach eine Serial mit beliebigen Buchstaben oder Zahlen? Mein Vorschlag:
/* 5 blocks each with 5 chars */ int numberBlocks = 5; int numberChars = 5; /* length of serial, for each block except the last an additional '-' */ length = numberBlocks * numberChars + numberBlocks - 1; char serial[length]; int counter = 0; /* initialize random generator */ srand ( time(NULL) ); char chr; for( int i = 0; i < numberBlocks; i++ ) { for( int j = 0; j < numberBlocks; j++ ) { do { chr = (char) (rand() % 128); } while( !isalnum(chr) ); serial[counter++] = chr; } if(i != numberBlocks-1) serial[counter++] = '-'; }
Hoffe mal der Code hilft dir.
-
Das ganze sieht stark nach BCB aus. Mal ehrlich du hast es dir echt schwer gemacht.
Anstatt char und AnsiString zu nutzen, brauchst du nur AnsiString. Da kannst du genaus zugreifen wie bei einem char-Array.
Was du allerdings hiermit bezwecken wolltest:
AnsiString a, b, c, d, e, r, g, h, q, j, k, l, m, n, o, p; a = wert1[0]; b = wert1[1]; c = wert1[2]; d = wert1[3]; e = wert1[4]; r = wert1[5]; g = wert1[6]; h = wert1[7]; q = wert1[8]; j = wert1[9]; k = wert1[10]; l = wert1[11]; m = wert1[12]; n = wert1[13]; o = wert1[14]; p = wert1[15]; // wert1[0] = zeichen[0]; Edit1->Text = a + b + c + d; Edit2->Text = e + r + g + h; Edit3->Text = q + j + k + l; Edit4->Text = m + n + o + p; AnsiString minus = "-"; // Verketten; AnsiString f = Edit1->Text + minus + Edit2->Text + minus + Edit3->Text + minus + Edit4->Text;
verstehe ich überhaupt nicht.
Zum Umwaneln von int nach String nimmt man im Übrigen IntToStr() und setzt nicht auf die Konstruktoren/Operatoren von AnsiString.
Statt Memo1->Lines->Add (zeichen[3]); geht auch einfach Memo1->Lines->Add (zeichen);
Am besten einfach mal das Text-Edito Beipiel im %BCB%\Examples Ordner durcharbeiten.
-
was macht eigentlich memo, und warum braucht man dafür nen zeiger
-
AnsiString ist kein Standart? Also kein std...
Ghost