Vòng lặp do-while

Mình nghĩ không thêm được dòng “Sai tài khoản” , nếu thêm dòng đó thì bạn dùng while … .

ví dụ :

const int ID = 123;
const int password = 123456;

int main()
{
     int id_user, password_user;
     cout << " Nhap vao ID: " ; cin >> id_user; 
     cout << " Nhap vao password: " ; cin >> password_user ; 

     while ((id_user != ID) || (password_user != password))
{
    cout << " Bạn đã nhập sai đề nghị bạn nhập lại";
    cout << " Nhap vao ID: " ; cin >> id_user;
    cout << " Nhap vao password: " ; cin >> password_user ; 
}
   cout << " Bạn đã đăng nhập thành công";
return 0;
}

P/s: có bạn nào cao kiến hơn thì chỉ dẫn thêm. Dùng while thì phải thêm bước nhập ban đầu ngoài vòng lặp để kiểm tra điều kiện.

1 Like

Thì đúng rồi, mình có nói gì đâu, nếu dùng hoặc (||) thì nó sẽ trả về True nếu 1 trong 2 biểu thức đúng và thoát vòng lặp. Nhưng ở đây bài toán đặt ra là : người dùng nhập vào user và pass, kiểm tra cả 2 điều kiện, là user và pass phải đúng nên phải dùng toán tử và (&&) thì mới đúng được. Dùng toán tử hoặc (||) sẽ cho kết quả sai.

Em suy nghĩ lại nhé.

1 Like

Cạn lời :angry:. Test chụp hình luôn đây
&&

||

1 Like

Ok, mình có sự nhầm lẫn. Cám ơn @Luu_Thanh_Vuong nhé. Để mình sửa code lại :smiley:

1 Like

Bạn nào đưa mình cái file .exe của chương trình này đi. đổi user và password bất kỳ luôn. :wink:
Mình vừa tìm ra cách để crack mật khẩu :sunglasses:

2 Likes

Mình gặp lỗi thế này, khi nhập sai password thì nó hiện như thế . Lần đầu mình tự viết cũng ra như vậy luôn, mình chép thử code của bạn @mrche cũng bị như thế

1 Like

2 posts were merged into an existing topic: Cách post Code dùng Markdown trong Category Programming

1 Like

em làm được bài tập đó rồi, nhưng em thấy vẫn chưa hoàn chỉnh và hợp lý cho lắm, ví dụ ở phần điều kiện của while(), em không nghĩ ra được cái gì nên đành cho một biến bool ma_xac_minh =true rồi cho vào phần điều kiện để vòng lặp thực hiện được, vậy mong các tiền bối cao kiến góp ý và chỉnh sửa, hậu bối xin cảm tạ :smiley: :smiley: , dưới đây là toàn bộ code của em

  #include <iostream>
int main() {
const int32_t  id = 123;
const int32_t password = 123456;
int32_t id_;
int32_t password_;
bool ma_xac_minh = true;
do {
	std::cout << "enter your id : \n";
	std::cin >> id_;
	std::cout << "enter your password : \n";
	std::cin >> password_;
	if (id_ == id && password_ == password) {
		
		std::cout << "logged in successfully :D \n";
		break;
	}
	else
	{
		std::cout << "have some problem with your id or password, please try again : \n";
	}

} while (ma_xac_minh);
     return 0;
     }
1 Like

Mình nghĩ làm vậy cũng được mà.
Thường thì khởi tạo biến boolean ban đầu sẽ là false;

bool ma_xac_minh = false;
if (id_ == id && password_ == password) {

		std::cout << "logged in successfully :D \n";
		ma_max_minh = true;
	}
while (ma_xac_minh == false);

Hoặc

if (id_ == id && password_ == password) {
		std::cout << "logged in successfully :D \n";
	}
while (id_ != id || password_ != password);
2 Likes

Theo mình nghĩ thì đây là bản hoàn chỉnh nhất đến bấy giờ. :slight_smile:

bài của mình. Bạn nào biết cách làm giới hạn số lần nhập ID và password không nhỉ :slight_smile:

#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
    const int ID = 123;
    const int password = 123456;
    int a;
    int b;
    do 
    {
        cout << " Selection your ID: ";
        cin >> a;
        cout << " Selection your password: ";
        cin >> b;
        if (a == ID && b == password)
        {
            cout << " your ID and password are correct !  Thank You" << endl;
        }
        else
        {
            cout << "Your ID and password are not correct! Please try agian! " << endl;
        }
    }

    while (a!=ID || b!= password);
    {
        //cout << " Your ID and password are  correct !" << endl;
    }

    system("pause");
    return 0;
}
#include <iostream>

const int ID = 123;
const int password = 123456;
int main()
{
	int a, b;
	do{
		std::cout << "ID : "; std::cin >> a;
		std::cout << "Password : "; std::cin >> b;
		if (ID != a || password != b) std::cout << "Password or ID incorrect, please try again !";
		else std::cout << "Login success, launch processing !" << std::endl;
	} while (ID != a || password != b);
	return 0;
}
#include <iostream>
using namespace std;
// Hằng **const** dùng để cố định giá trị cho biến, ở đây là ID và password.
const int ID = 123;
const int password = 123456;

int main()
{
	int ID;
	int password;
	do 
	{
		
		std::cout << " (!) Luu y: ID va Password thuoc Integer." << std::endl;
		std::cout << " Vui long nhap ID: ";
		std::cin >> ID;
		std::cout << std::endl;

		std::cout << " Vui long nhap Password: ";
	    std:cin >> password;
		std::cout << std::endl;
	
	} while (ID != 123 && password != 123456); 

	 /* 
	 Nếu mà bạn khai báo while (ID == 123 && password == 123456) thì sẽ tạo ra một vòng lặp vô tận vì ID và password thỏa mãn condtion của while (hiểu ở đây là true).
	 Còn nếu ID và password không thỏa mãn condition của while (hiểu ở đây là false) thì chương trình sẽ thoát ra khỏi vòng lặp.
	 */

	std::cout << "Chuc mung! Ban da nhap dung ID va Password!!!" << std::endl;

	system("pause");
	return 0;
}

Nếu bạn nào chưa hiểu thì nên đọc kĩ lại bài học.

Bài Tập 1:

// Sua_BT_1_25.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include <string>

bool Set_text(bool variable)
{
	return variable;
}

bool Text(bool variable)
{
	Set_text(variable) ? std::cout << "Nhap Ten Dang Nhap: " : std::cout << "Nhap Mat Khau: ";
	return variable;
}

int main()
{
	std::string username{ "kvtuyen" };
	std::string pass_word{ "123456" };
	std::string Input_User{ "" };
	std::string Input_Pass{ "" };
	bool variable{ true };

	do
	{
		std::system("cls");
		Text(variable);
		std::cin >> Input_User;
		Text(!variable);
		std::cin >> Input_Pass;

		while (Input_User.length() > 20 || Input_Pass.length() > 20)
		{
			if (Input_User.length() > 20 || Input_Pass.length() > 20)
			{
				std::cout << "Co qua nhieu ki tu cho USERNAME hoac PASSWORD! xin moi nhap lai !" << std::endl;
				std::system("pause");
				std::system("cls");
				Text(variable);
				std::cin >> Input_User;
				Text(!variable);
				std::cin >> Input_Pass;
			}
		}

		if (Input_User != username || Input_Pass != pass_word)
		{
			std::cout << "Da nhap sai Ten hoac Mat Khau! xin moi nhap lai !" << std::endl;
			std::system("pause");
		}
		else
		{
			std::cout << "Dang Nhap thanh cong !" << std::endl;
		}
		
	} while (Input_User != username || Input_Pass != pass_word);

    return 0;
}

Mình dùng thêm một vòng While ở ngoài. Bạn tham khảo, hy vọng hữu ích :grin:

#include <iostream>
using namespace std;
int main(){
	const int ID =123;
	const int pw =123456789;
	int i, p;
	cout<<"Nhap vao ID va Pw: \n";
	cout<< "ID: "; cin>> i ; cout<< endl;
		cout<< "Pw: "; cin>> p; 
	while ( i!=ID || p!=pw )
	{
	

	do 
	{
		cout<< "Nhap sai, vui long nhap lai ID va pw: \n";
		cout<< "ID: "; cin>> i ; cout<< endl;
		cout<< "Pw: "; cin>> p; 
		
	} while ( i!=ID || p!=pw );
	}
	cout<<"Welcome to!";
	return 0;
}

duplicate post has been moved by noname00


Code đã post ở trên rồi thì không cần up lại hình chụp code nữa nha bạn.

1 Like
#include <iostream>
using namespace std;
int main()
{
    int ID,password;
    do{
        cout<<"nhap ID"<<"va"<<"pasword"<<endl;
    cin>>ID>>password;}
    while((ID!=123)&&(password!=12345));
    cout<<"Ban da nhap dung ID va pass";
    }
#include<iostream>
#include<cstdlib>
using namespace std;

const int ID = 123; 
const int password = 123456;
int main() {
	int ID, Password;
	do{
//		cout << "ID or Password is incorrect, please try again!" << endl;
		cout << "Input your ID: " << endl;
		cin >> ID;
		cout << "Input your Password: " << endl;
		cin >> Password;
		if (ID != 123) cout << "Your ID is incorrect, please try again." << endl;
		if (Password != 123456) cout << "Your Password is incorrect, please try again." << endl;
	} while (ID != 123 || Password != 123456);
	cout << "Correct. Keep going!" << endl;
	system("pause");
	return 0;
}
#include <iostream>
using namespace std;

const int ID = 123;
const int password = 123456;

int main()
{
	int maxacminh;
	cout<<"Vui long dang nhap de su dung C++";
int a,b;	
	do{
	cout<<"\n_________________________________";
	cout<<"\nID: "; cin>>a;
	cout<<"\nPASSWORD: ";cin>>b;
	
	 if ((a!=ID)||(b!=password)){
	 
	cout<<"Have some problem with your id or password, please try again";}
}
	while((a!=ID)||(b!=password));
	cout<<"Logged in successfully :D ";
	return 0;
}
1 Like
//Viết tiếp chương trình trên sử dụng vòng lặp do-while để kiểm tra userID và password được nhập từ bàn phím
//Chương trình chỉ thực hiện tiếp khi người dùng nhập đúng userID và password.
//Nếu nhập sai, chương trình sẽ yêu cầu người dùng nhập lại.

#include <iostream>
using namespace std;

const int ID = 123;
const int password = 123456;

int main()
{
	   int id_user, password_user;
       do
            {
            cout << "Nhap vao ID: " ;
            cin >> id_user; cout << endl;
            cout << "Nhap vao password: " ;
            cin >> password_user ; cout << endl;
            if ( id_user == ID && password_user == password)
                {
                    cout << "Chuc Mung Ban Da Dang Nhap Thanh Cong" << endl;

                }
             else
                {
                    cout << "Ban Da Nhap Sai ID hoac Mat Khau, Vui Long Nhap Lai: " << endl;
                }
            }

      while ((id_user != ID) || (password_user != password));

      system("pause");
      return 0;
}
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?