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 ạ!