2차원 배열 구성하고 있는데, 어디서 틀린 걸까요??...
조회수 509회
#include <stdio.h>
#include <stdlib.h> // RAND_MAX
#include <Windows.h> // GetTickCount()
double randomDouble(void); //
double randomDouble(void)
{
return (double) rand() / RAND_MAX;
}
int main(void)
{
// 난수 발생기 초기화
srand(GetTickCount());
int spin_state[10][10];
int i,j ;
for( i=0; i< 10; i++)
{
for(j=0; j<10 ; j++)
{
if(randomDouble() > 0.5)
{
spin_state[i][j] = -1;
}
else
{
spin_state[i][j] = 1;
}
}
}
printf(" %d ", spin_state[i][j]);
return 0;
}
위와 같이 코드를 작성해봤는데요.
2차원 배열이 제대로 출력되는지 확인해보려고 하는데 어떤 숫자만 나오고
배열이 나오진 않더군요..
연구실 프로젝트 때문에 급하게 파이썬에서 C로 바꿔서 공부중인데 1단계도 통과를 못하고 있습니다.
도와주세요 고수님들 ㅠ.ㅠ...
1 답변
-
배열은 잘 만들고 값 잘 넣으셨는데 출력을 제대로 안하신 것이 이유입니다.
printf(" %d ", spin_state[i][j]);
이 부분이 이상하다고 생각하셔야 합니다.
i
와j
는 이 시점에서 둘 다10
입니다.
spin_state[i][j]
는spin_state[10][10]
이 되죠.
배열의 크기가 10x10이기 때문에 잘못된 인덱스 접근이 발생합니다.
올바른 인덱스 값을 사용하시면, 예를 들어spin_state[9][9]
라고 바꾸시면 그 위치에 해당하는 정수 값이 하나 출력될겁니다.잠깐, 제가 하나라고 했죠?
파이썬에서 C로 넘어오시면 이 부분에서 헷갈리실 수 있는데 파이썬은 그냥a = [[1, 2, 3], [4, 5, 6]] print(a)
하면 알아서 2차원 배열
a
전체를 출력하잖아요?
하지만 C는 그렇게 친절하지 않습니다.
2차원 배열의 모든 값을 반복문을 통해 일일히 하나씩 출력하셔야 배열 전체를 출력하실 수 있습니다.
아래 코드를 사용해보세요.for (i = 0; i < 10; i++) { for (j = 0; j <10; j++) { printf("%d ", spin_state[i][j]); // (i, j) 위치의 값 하나 출력 } printf("\n"); // 개행 }
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력