실행결과는 정상적으로 나오는것 같은데 심사통과가 안됩니다.
틀린 부분이 있으니 통과가 안되는거 같은데...;;
틀린 부분을 찾지 못 하겠습니다.
조언 부탁드립니다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int row, col;
scanf("%d %d", &row, &col);
if (row < 3 || row > 10 || col < 3 || col > 10)
goto EXIT;
char** matrix = malloc(sizeof(char*) * row);
for (int i = 0; i < row; i++)
{
matrix[i] = malloc(sizeof(char) * col + 1);
memset(matrix[i], 0, sizeof(char) * col);
}
for (int i = 0; i < row; i++)
{
scanf("%s", matrix[i]);
}
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
{
if (matrix[i][j] == '*')
continue;
else
matrix[i][j] = '0';
}
}
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
{
for (int y = i - 1; y <= i + 1; y++)
{
for (int x = j - 1; x <= j + 1; x++)
{
if (y < 0 || x < 0 || y >= row || x >= col)
continue;
else if (matrix[i][j] == '*')
{
if (matrix[y][x] == '*')
continue;
else
matrix[y][x] += 1;
}
}
}
}
}
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
{
printf("%c", matrix[i][j]);
}
printf("\n");
}
for (int i = 0; i < row; i++)
{
free(matrix[row]);
}
free(matrix);
EXIT:
return 0;
}
Visual Studio에서 F5로 실행해보세요.
예외가 발생하면 프로그램이 버그로 강제 종료된 상황을 뜻합니다.
즉, 잘못된 코드입니다.
입력은 간단하게
3 3
...
...
*..
UNIT 6을 참고해서 조사식 창에서 변수의 값을 직접 확인하면서 문제를 해결하세요.
액세스 위반은 메모리 접근을 잘못한 경우가 대부분입니다.