Lấy từng phần tử của string

Đề bài: rạp chiếu phim có số chỗ ngồi là mảng 2 chiều (chỗ đã được ngồi là 1, chỗ chưa được ngồi là 0), Nhập vào số học sinh và điền tên, và tìm cho họ chỗ ngồi thích hợp.
Input:

3 4
0001
1010
0110
7
Nguyen Thanh Phuoc Loc
Vu Ngoc Quoc Khanh
Nguyen Thanh An
Rickie Lukas
Ly Dinh Minh Man
Doan Viet Tien Dat
Doan Anh Tuan

Output:

Nguyen Thanh Phuoc Loc 1 3
Vu Ngoc Quoc Khanh 3 1
Nguyen Thanh An 1 1
Rickie Lukas 2 2
Ly Dinh Minh Man 3 4
Doan Viet Tien Dat 1 2
Doan Anh Tuan 2 4

Em có dòng code sau:

#include <vector>
#include <iostream>
#include <string>
using namespace std;
typedef pair<int, int> ii;

const int N = 100 + 7; // max student

int numRow, numCol, numStudent;
vector<ii> slot;

// rapphim
signed main() {
freopen("rapphim.inp", "r", stdin);
freopen("rapphim.out", "w", stdout);

cin >> numRow >> numCol;
char table[numCol + 1]; // lỗi ở đây
for (int i = 1; i <= numRow; i++) {
    cin >> table;
    for (int j = 1; j <= numCol; j++) {
        if (table[j - 1] == '0') {
            slot.push_back(ii(i, j));
        }
    }
}

cin >> numStudent;
string studentName;
getline(cin, studentName); // getting rid of redundant space
for (int i = 1; i <= numStudent; i++) {
    ii availableSlot = slot[i - 1];
    getline(cin, studentName);
    cout << studentName << " " << availableSlot.first << " " << availableSlot.second << "\n";
}

return 0;
}

Mảng ký tự char[] bắt buộc cần constant value mà em cho vào numCol thì không được thì mình có cách nào lấy từng phần tử của string ra xét giá trị không ạ?

std::string vẫn xét được từng kí tự mà :smiley:

2 Likes

Mình làm cách nào vậy ạ?

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?