거의다한것같은데 마지막에서 계속 삐끗하는것같아 질문드립니다. 제가생각했던 알고리즘은 matrix[i][j]를 기준으로 양옆이나 위아래에 지뢰가있으면 count를 샌후 그값을 대입하려는 방법을 사용하였으나 코드가 나오질않네요 ㅠㅠ 알고리즘이 틀렸는지 코드가 틀렸는지 대답해주실수있으신가요??
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(void)
{
int row, col, i, j, count, a, s;
scanf_s("%d %d", &row, &col);
char **m = malloc(sizeof(char*) * row);
for (i = 0; i < row; i++)
{
m[i] = malloc(sizeof(char*) * col);
}
for (i = 0; i < row; i++)
{
scanf_s("%s", &m[i]);
}
for (i = 0; i < row; i++)
{
for (j = 0; j < col; j++)
{
count = 0;
if (m[i][j] == '.')
{
for (a = i - 1; a < i + 1; a+2)
{
for (s = j - 1; s < j + 1; s+2)
{
if (a < 0 || s < 0 || a >= row || s >= col)
{
continue;
}
if (m[a][s] == '*')
{
count++;
}
}
}
m[i][j] = count;
}
else if (m[i][j] == '*')
{
continue;
}
}
}
for (i = 0; i < row; i++)
{
for (j = 0; j < col; j++)
{
if (m[i][j] == '*')
{
printf("%c", m[i][j]);
}
else
{
printf("%d", m[i][j]);
}
}
}
for (i = 0; i < row; i++)
{
free(m[i]);
}
free(m);
return 0;
}
/tmp/904148280/main.c:15:2: warning: implicit declaration of function 'scanf_s' is invalid in C99 [-Wimplicit-function-declaration] scanf_s("%d %d", &row, &col); ^ /tmp/904148280/main.c:56:34: warning: expression result unused [-Wunused-value] for (s = j - 1; s < j + 1; s+2) ~^~ /tmp/904148280/main.c:52:33: warning: expression result unused [-Wunused-value] for (a = i - 1; a < i + 1; a+2) ~^~ 3 warnings generated.scanf_s는 비표준 함수이므로 사용하면 온라인 심사를 통과할 수 없습니다.
표준 함수를 사용하세요.
나머지 2개의 경고는 저 연산이 아예 쓰이지 않는다는 뜻입니다.
a + 2는 변수 a의 값을 변경하지 않습니다.
a = a + 2가 의도라면 코드를 수정해야 합니다.
메모리 접근 오류가 있어서 실행 중에 오류가 발생합니다.
메모리 접근 오류는 배열 인덱스가 틀렸다는 뜻입니다. 검사를 위해 사용하는 배열 인덱스가 배열의 범위를 벗어나는 경우에 오류가 발생합니다.
포럼 오른쪽 상단에 38.8로 검색하면 이전 질답에서 다양한 질문 유형과 이전 답변을 참고할 수 있습니다.