Buchstaben generieren
-
Hallo!
Ich will einen Keygen für ein Programm von mir schreiben.
Er sol zuerst eine 2-stellige zahl , dann einen buchstaben (groß oder klein, egal),wieder 3Zahlen und 1 Buchstaben.
Mein Problem ist nun:
Wie kann ich dann Die 'Zufallsbuchstaben' generiern?!?
Wie das mit Zahen
([cpp]math.h
rand()%...)
geht weis ich ja.vielleicht muss man das ja nurnoch einwenig erweitern
bzw. umwandeln?!?
danke für jede hilfe
martinustreveri
-
martinustreveri schrieb:
...math.h...
Du meinst wohl <cmath>
martinustreveri schrieb:
Wie kann ich dann Die 'Zufallsbuchstaben' generiern?!?
Ascii-Codes sind dir bekannt?
Ansonsten versuch einfach mal auf einen character eine Zahl zu addieren...
char test = 'a';
test += 4;Edit: such einfach mal nach ASCII Codes
-
int zahl = ( rand() % 26 ) + 97; char buchstabe = zahl;Das erstellt dir einen kleinen Buchstaben von a bist z.
Erklärung:
Dem Integer zahl wird eine zufällige Zahl von 0 bis 25 erstellt. Dazu wird dann 97 addiert. Die zugewiesene Zahl reicht dann von 97 bis 122. Und das sind die ASCII-Werte der Kleinbuchstaben a bis z.
Dann den Integer-Wert an ein Char abgeben und du hast deinen Buchstaben.Mit freundlichen Grüßen
DerRatlose
-
ja.sorry hatte mich verschreiben.
und: ja, danke, funktioniert super.
jetzt habe ich es geafft.
-
Zur Info: srand() dient dazu, den seed zu setzen. mit rand() aus <cmath> bekommst du eine zufallszahl. die kannst du verwenden, um dir einen Zufälligen Buchstaben in einer Spanne des ASCII Zeichensatzes ausgeben zu lassen.
Übersicht:
http://www.asciitable.com/Du kannst allerdings auch alle gültigen Zeichen in ein Array schreiben und einen pseudo-zufälligen Index generieren.
#include <iostream> #include <vector> #include <cmath> #include <ctime> int main() { std::srand(std::time(0)); std::vector<char> mychars; for(char i('0'); i <= '9'; ++i) mychars.push_back(i); for(char i('A'); i <= 'Z'; ++i) mychars.push_back(i); for(char i('a'); i <= 'z'; ++i) mychars.push_back(i); std::cout << "Wieviele zufällige Buchstaben? "; int n = 0; std::cin >> n; for(int i = 0; i < n; ++i) std::cout << mychars[rand() % mychars.size()]; std::cout.flush(); }Code ist nicht getestet!
-
DerRatlose schrieb:
int zahl = ( rand() % 26 ) + 97; char buchstabe = zahl;Das erstellt dir einen kleinen Buchstaben von a bist z.
Erklärung:
Dem Integer zahl wird eine zufällige Zahl von 0 bis 25 erstellt. Dazu wird dann 97 addiert. Die zugewiesene Zahl reicht dann von 97 bis 122. Und das sind die ASCII-Werte der Kleinbuchstaben a bis z.
Dann den Integer-Wert an ein Char abgeben und du hast deinen Buchstaben.Mit freundlichen Grüßen
DerRatlosedonköö!
funzt auch super