2014-02-26 3 views
0

2 차원 어레이에 대한 제 이해가 잘못되었습니다. 그래서 나는이 질문에 다른 방법으로 접근 할 것이다. 다음 변수가 있다고 가정 해보십시오.C, 다차원 배열 연습

int student_id[10], course_id[5]; 

int student_course[10][2]; 

학생 수는 10 명입니다. 5 코스 만있을 수 있습니다. 학생은 2 과목 만 수강 할 수 있습니다.

/*prompt user for student id*/ 

/* 
say that the value for: 
student_id[0]=123 
*/ 

/*prompt user for course id*/ 

/* 
say that the value for: 
course_id[0]=101 
course_id[1]=102 
course_id[2]=103 
course_id[3]=104 
course_id[4]=105 
*/ 

은 내가 밖으로 인쇄 할 것은
student_course[value_of_student_id][value_of_course_id]입니다. 내가 원하는 결과를 얻을 수있는 올바른 방법은 무엇인가, 이것은 잘못된 방법입니다 경우

int student_id[10], course_id[5], student_course[10][2] 

int i, j, k; 

for(i=0; i<10;i++){ 
    for(j=0; j<5; j++){ 

     /*prompt user for student id*/ 
     printf("Enter User ID: "); 
     scanf("%d", &student_id); 

     /*prompt user for course id*/ 
     printf("Enter Course ID: "); 
     scanf("%d", &course_id); 

     for(k=0; k<2; k++){ 
      student_course[i][j]=student_course[i][k]; 
     } 

    } 
} 

:

그래서 나는 이런 식으로 일을 생각? 아마도 3 차원 어레이일까요? 아직 그럴 준비가되지 않았을 수도 있습니다.

+0

이 코드에 더 많은 의견을 추가하십시오 참석와 배열을 초기화 대신이

typedef struct { int student_id; int course_id[2]; } Student Student Students[10]; 

처럼 할 수 – Cynede

+0

2D 배열을 단순한 단일 차원 배열로 생각하면 배열의 모든 부분은 또 다른 별도의 배열입니다. – Coderchu

+0

"제가 프린트하고자하는 것은 student_course [value of student_id] [value of course_id]입니다." 내부 배열의 길이가 2로 선언되어있는 동안 "value of course_id"값은 101에서 105 사이의 5 가지 값을 가질 수 있으므로이 작업을 수행 할 수 없습니다. – Coderchu

답변

3

그런 다음 student_id의 어떤 과정은 그가 정말 감각을하지 않기 때문에

+0

나는 Claptraps의 대답을 이해했다고 생각했지만 나는 그렇지 않았다. 학생 [0]이 수강중인 과목을 화면에 인쇄하려고했습니다. 나는 어떻게 할까? 학생 [0] 만 인쇄하려고하면 오류가 발생합니다. – user2816227

+0

@ user2816227 Students [0]이 (가) 취하는 과정을 인쇄하려면 'printf ("id : % d, courses : % d, % d \ n", Students [0] .student_id, Students [0] ] .course_id [0], students [0] .course_id [1]);' –