#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int m, n;
scanf("%d %d", &m, &n);
if (m < 3 || n < 3 || m>10 || n>10)
goto EXIT;
char** matrix = malloc(sizeof(char*) * m);
for (int i = 0; i < m; i++)
{
matrix[i] = malloc(sizeof(char) * (n + 1));
memset(matrix[i], 0, sizeof(char) * n);
}
for (int i = 0; i < m; i++)
scanf("%s", matrix[i]);
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
if (matrix[i][j] == '*')
continue;
else
{
matrix[i][j] = 0;
}
}
}
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
{
if (matrix[i][j] == 0)
{
for (int y = i - 1; y <= i + 1; y++)
{
for (int x = j - 1; x <= j + 1; x++)
{
if (y < 0 || x < 0 || y >= m || x >= n)
continue;
else
{
if (matrix[y][x] == '*')
matrix[i][j] += 1;
else
continue;
}
}
}
}
}
}
for (int i = 0; i < m; i++)
{
printf("%s\n", matrix[i]);
}
EXIT:
return 0;
}
이렇게 작성했는데 어디가 문제인지 모르겠습니다ㅠㅠ
문제에 입력을 다음과 같이 넣으면
3 3
*..
...
..*
출력은
*
입니다.
온라인 컴파일러에서 실행해도 됩니다.
https://glot.io/snippets/fl0h0ueius
포럼 상단 오른쪽에 38.8로 검색하면 이전 질문과 답변이 있으니 참고할 수 있습니다.
UNIT 6 디버거 사용하기를 학습하고, 디버거를 사용해서 문제를 해결해보세요. 이전 답변을 보면 디버거를 사용한 예도 있습니다.
디버거는 프로그래머의 기본 소양이고, 지뢰찾기처럼 복잡한 프로그램에서 버그를 찾을 때 유용하게 사용할 수 있습니다.
그래도 어려울 때는 건너 뛰고 다음 단계를 학습하고, 프로그래밍이 좀 더 익숙해지면 도전하세요.