Dừng vòng lập có điều kiện

Hi mọi người, mình đang viết 1 class để nhập thông tin của Striker và Defender.
Phần chương trình chính gồm

  1. Định nghĩa trước n_player: số cầu thủ tối đa có thể nhập
  2. Yêu cầu nhập: tên cầu thủ, chỉ số, vị trí (Striker hoặc Defender)

Mình đang muốn dừng việc nhập thông tin nếu nhấn phím q lúc nhập tên cầu thủ nhưng chưa tìm đc giải pháp, mong mọi người giúp đỡ (phần cài đặt các class ok nên mọi người chỉ cần tập trung hàm main)

#include <iostream>
#include <string>
const int n_player = 3;
using namespace std;

class Player{
int overall;
string name;

public:
Player(int ovr=0, string n="None") : overall(ovr), name(n) {};
virtual void BasicSkill() { cout << "Chuqa chulai\n"; };
virtual void Info() = 0;

};

class Striker: public Player{
int overall;
string name;
public:
Striker(int ovr=0, string n="None") : overall(ovr), name(n) {};
void BasicSkill() { cout << "Lua bong qua thu mon\n"; };
void Info() { cout << "Name: " << name << " | " << "Overall: " << overall << endl;}
};

class Defender: public Player{
int overall;
string name;
public:
Defender(int ovr=0, string n="None") : overall(ovr), name(n) {};
void BasicSkill() { cout << "Cuu thua va giu sach luoi\n"; };
void Info() { cout << "Name: " << name << " | " << "Overall: " << overall << endl;}
};

int main(int argc, const char * argv[]) {
// insert code here...

Player * player[n_player];
string n;
char c;
int ovr;

for(int i=0; i<n_player; i++){
    cout << "Enter player's name(q to quit): ";
    getline(cin,n);
    cout << "Enter player's overall: ";
    cin >> ovr;
    cout << "Enter 1 for Striker\n or 2 for Defender\n";
    while ( cin >> c && (c != '1' && c != '2'))
        cout << "Either 1 or 2\n";
    if (c=='1')
    {
        player[i] = new Striker(ovr, n);
    }
    else{
        player[i] = new Defender(ovr, n);
    }
    
    while(cin.get() != '\n')
        continue;
}

for(int j=0; j<n_player; j++){
    player[j]->Info();
    player[j]->BasicSkill();
    }


return 0;
}

OUTPUT của chương trình:

Enter player's name(q to quit): R.Jiminex
Enter player's overall: 70
Enter 1 for Striker
 or 2 for Defender
1
Enter player's name(q to quit):

Không có cầu thủ nào tên có chứa ký tự ‘q’ hả?

Thử làm thế này đi bạn :smiley:

cout << "Enter player's name(q to quit): ";
if( (c = getchar()) == 'q' || c == 'Q')
	break;
2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?