01/10/2018, 00:41

Newbie hỏi về chương trình trong C++

Mình muốn tạo chương trình Generator Password, nói chung thì code có trên mạng rồi, mình muốn chỉnh sửa cho nó nhiều chức năng tí.
Ý tưởng là yêu cầu người dùng nhập vào chiều dài pass muốn tạo, max 30. nếu người dùng nhập quá số 30 thì chương trình báo lỗi và yêu cầu nhập lại. Mình đang bí chỗ nhập lại nên muốn nhờ mn giúp đỡ. Code trên mạng đã qua chỉnh sửa của mình:

#include <iostream>
#include <string>
#include <cstdlib>
#include <ctime>
using namespace std;

static const char alphanum[] =
"0123456789"
"!@#$%^&*"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz";

int stringLength = sizeof(alphanum) - 1;

char genRandom()  // Random string generator function.
{

	return alphanum[rand() % stringLength];
}

int main()
{
	int i;
	cout << "---------------------------------------------------------
";
	cout << "Tool Generator Password 
" << "Language: C++ 
";
	cout << "
";
	cout << "Type the length of your password (max 30): "; cin >> i; cout << "
";
	if (i <= 30)
	{
		cout << "Your General Password is: ";
		srand(time(0));
		for (int z = 0; z < i; z++)
		{
			cout << genRandom();

		}
		cout << "
";
		cout << "---------------------------------------------------------
";
		cout << "
";
	}
	else
	{
		cout << "Error !!! The length of your password mustn't be over 30. Please try again 
";
		cout << "Type the length of your password (max 30): "; cin >> i; cout << "
";
	}
	return 0;

}

Cảm ơn mọi người nhiều

Nguyễn Hoàng Trung viết 02:50 ngày 01/10/2018

Bạn có thể dùng vòng lặp while, tạo ra 1 biến bool để check xem đã thỏa yêu cầu chưa, nếu chưa thì tiếp tục vòng lặp

Hide viết 02:54 ngày 01/10/2018

mình hiểu bạn, nhưng mà mình vẫn chưa code được

viết 02:48 ngày 01/10/2018

Code của mình sửa từ code của bạn:

#include <iostream>
#include <string>
#include <cstdlib>
#include <ctime>
using namespace std;
static const char alphanum[] =
    "0123456789"
    "!@#$%^&*"
    "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    "abcdefghijklmnopqrstuvwxyz";
int stringLength = sizeof(alphanum) - 1;
char genRandom()  // Random string generator function.
{
	return alphanum[rand() % stringLength];
}
int main()
{
	int i;
	cout << "---------------------------------------------------------\n";
	cout << "Tool Generator Password \n" << "Language: C++ \n";
	cout << "\n";
	do
	{
		cout << "Type the length of your password (max 30): "; cin >> i; cout << "\n";
		if (i > 30) {
			cout << "Error !!! The length of your password mustn't be over 30. Please try again \n";
		}
	} while (i > 30);
	if (i <= 30)
	{
		cout << "Your General Password is: ";
		srand(time(0));
		for (int z = 0; z < i; z++)
		{
			cout << genRandom();
		}
		cout << "\n";
		cout << "---------------------------------------------------------\n";
		cout << "\n";
	}
	return 0;
}

Bạn thêm vòng do-while để kiểm tra tính hợp lệ của độ dài (cụ thể ở đây là biến i).
Nếu i > 30 thì vòng do-while tiếp tục xảy ra, thêm câu lệnh thông báo lỗi trong if, và không cần else nữa vì đã check hợp lệ ngay từ đầu.
Chúc bạn học tốt!

Nguyễn Tấn Khoa viết 02:49 ngày 01/10/2018

dạng thế này nè

do
{
    cout << "Nhap chieu dai mat khau: ";
    cin >> text;
}
while(strlen(text) > 30);
Hide viết 02:46 ngày 01/10/2018

à mình hiểu rồi, cảm ơn bạn nha

Bài liên quan
0