안녕하세요 프로그래밍 공부하는 청년입니다. 다름이 아니라 학원에서 숙제 내준 프로그램 짜고 있는데 마지막 sum값이 자꾸 주소값이 나오네요 ㅠㅠ 답답해 미치겠습니다. 도와주세요~~
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
void main(void)
{
short *base=NULL;
short *sum=NULL;
long width;
long height;
srand((unsigned)time(NULL));
printf("세로와 가로의 숫자를 입력하세요.");
scanf("%d %d", &height, &width);
base=new short[height*width];
sum=new short[(height-1)*(width-1)];
//랜덤값 출력하는 부분
for(int i=0; i<height*width; i++)
{
base[i]=rand()%10;
}
//랜덤으로 출력된 값을 줄맞춤 하는 부분
for(int i=0; i<height; i++)
{
for(int j=0; j<width; j++)
{
printf("%d\t",base[i*width+j]);
}
printf("\n");
}
//줄맞춤된 맵에 sum값 계산및 출력 부분
//1차적으로 sum값계산
for(int i=0; i<height-1; i++)
{
for(int j=0; j<width-1; j++)
{
sum[(i*width)+j]=sum[i*width+j]+sum[i*width+j+1]+sum[(i+1)*width+j]+sum[(i+1)*width+j+1];
}
}
//계산된 결과값을 출력
for(int i=0; i<height-1; i++)
{
for(int j=0; j<width-1; j++)
{
printf("%d\t",sum[(i*width)+j]);
}
printf("\n");
}
//포인터에 사용된 값을 초기화
delete []base;
delete []sum;
}
sum배열의 최대크기는 (height-1)*(width-1) 인데 위에 sum[(i*width)+j]=sum[i*width+j]+sum[i*width+j+1]+sum[(i+1)*width+j]+sum[(i+1)*width+j+1]; 에서의 sum배열의 최대 크기는 (height)*width+(width)인거 같은데요 ㅡ,.ㅡ?