Hỏi về bài tạo bản đồ mìn

a/c giúp e với ạ. e có bài sau:
Viết chương trình nhận đầu vào từ bàn phím một bản đồ mìn dạng bảng, trong đó ∗ có nghĩa là có mìn, … là không có mìn. In ra màn hình bản đồ mìn sao cho giá trị của mỗi ô là một dấu ∗ nếu như ô đó có mìn, nếu không thì là một giá trị trong khoảng [0,8] là số mìn nằm trong các ô xung quanh.
nếu input:

3 3
* * *
* . *
* * *

thì sẽ đúng

3 5
* * . . .
. . . . .
. * . . .

sai

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

int main()
{
    int n, m;
    cin >> n >> m;
    string SS[100][100];
    for (int i=0; i<n; i++)
    for (int j=0; j<m; j++)
        cin >> SS[i][j];
    for (int i=0; i<n; i++)
    for (int j=0; j<m; j++)
    {
        if(SS[i][j]==".")
        {
            int n=0;
// 8 trường hợp có bom
            if(i>0 && SS[i-1][j]=="*")n++;
            if(i>0 && j>0 && SS[i-1][j-1]=="*")n++;
            if (i>0 && j<m-1 && SS[i-1][j+1]=="*")n++;
            if(j>0&& SS[i][j-1]=="*") n++;
            if(j<m-1&& SS[i][j+1]=="*") n++;
            if(i<n-1 && j>0 && SS[i+1][j-1]=="*")n++;
            if(i<n-1 && SS[i+1][j]=="*")n++;
            if(i<n-1 && j<m-1 && SS[i+1][j+1]=="*")n++;
// gán lại giá trị ở vị trí đó            
            SS[i][j]=to_string(n);
        }
        else continue;
    }
    for (int i=0; i<n; i++)
    {
        for (int j=0; j<m; j++)
            cout << SS[i][j] << " ";
        cout << endl;
    }
    return 0;
}

e sai chỗ nào mn chỉ giúp e với.
e cảm ơn nhiều ạ!

đổi char thử xem, có thể khi bạn nhập string thì nó sẽ đi theo một số tí tự ẩn, nên nhập là * thì chưa chắc chỉ là *
hoặc bạn có thể thêm 1 vài dòng code để show ra các bạn đếm xem đang sai ở ô nào

4 Likes

Mình có đổi sang char r nhưng kết quả vẫn giống string. mình có in ra để check xem nó cộng ở chỗ nào, nhưng có khi nó cộng thêm, có khi không.
Đoạn cộng bom kia, nếu đổi chỗ mấy trường hợp với nhau thì lại ra kq khác… Mình ko hiểu là nó khác nhau chỗ nào nữa.

biến n, đổi thành biến khác đi

4 Likes

đúng r a, cảm ơn nhiều ạ!!:heart_eyes::heart_eyes::heart_eyes:

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