Problem z generatorem hasla c++ , dlugosc hasla

0

Witam.
Mam problem zwiazany z generatorem hasla w jezyku c++. Nie potrafie zrobic zeby uzytkownik wpisywal jaka zyczy sobie dlugosc hasla.

#include <iostream>
#include <ctime>
#include <cstdlib>
#include <string>

using namespace std;



string spolgloska = "bcdfghjklmnpqrstvwxyz" , samogloska = "aeiouy";
	

int los(int A , int B){
	return rand()%(B - A + 1) + A; 
}

char losc(string s){
	return s[los(0 , s.length() - 1)];
}

bool ins(char c , string s){
	return s.find(c , 0) !=- 1;
}

int main() {
   
	srand(time(NULL));
	
	string haslo;
	haslo = losc(samogloska + spolgloska);
	
	 cout<<"Dlugosc hasla?\t"<<endl;
    float n;
	cout<<"n=";
	 cin>>n;
	 cout<<endl;
	
	
	   for(int i = 0; i < n; i++){
		if(ins(haslo[haslo.length() - 1] , samogloska)){
			haslo += losc(spolgloska);
		} else haslo += losc(samogloska);
		haslo += los(33 , 47);
		haslo += los(48 , 57);
	}

	cout << haslo<<endl;
	return 0;
}
5
Daniel R napisał(a):

Nie potrafie zrobic zeby uzytkownik wpisywal jaka zyczy sobie dlugosc hasla.

Nieprawda. Ładnie pyta i przyjmuje wpisane n. Skąd taki wniosek? Masz jakiś inny bład.

BTW ilosc liter jako float to bardzo dziwna decyzja. Dlaczego nie int?

5

Przecież pytasz i użytkownik wpisuje. Co prawda ten kod ma inne problemy, ale długość hasła zależy od wpisanej wartości.

Problemy:

Ale tak btw: jeśli jesteś początkującym, to i tak dobrze. Kod jest w miarę ustrukturyzowany, a pytanie zadanie sensownie.

1

To może byc krotsze, np:

#include <iostream>
#include <algorithm>
using namespace std;

char randChar() {
	return 'a' + rand() % ('z' - 'a' + 1);
}

int main() {
	int len;
	cout << "Len: ";
	if (!(cin >> len)) return 0;
	string pwd(len, ' ');
	std::generate (pwd.begin(), pwd.end(), randChar);
	cout << "Pwd: " << pwd << endl;
	return 0;
}

https://ideone.com/gOdGz5

Funkcję randChar można napisać lepiej, tutaj tylko najprostsza wersja.

1 użytkowników online, w tym zalogowanych: 0, gości: 1