A sentimental robot

Call by address 본문

C

Call by address

GOD03219 2018. 1. 2. 14:12

#include<stdio.h>
#pragma warning(disable : 4996);
void input(int *clas, char *pname, int *pscore);
void oper(int *pscore, float *pavg);
void output(int *clas, char*pname, int *pscore, float *pavg);
void main() {


 int clas[3] = {0,};
 char name[3][3][10];
 int score[3][3][4] = {0,};
 float avg[3][3] = {0,};


 input(clas, **name, **score);        // 1차원 주소로 맞추기
 oper(**score, *avg);
 output(clas, **name, **score, *avg);



}


void input(int *clas, char *pname, int *pscore) {


 int i, j, k;


 for (k = 0 ; k<3 ; k++) {

  printf("Class number:");
  scanf("%d", clas + k);
 
  for (i = 0; i<3 ; i++) {

   printf("Name input : ");
   scanf("%s",(pname + k * 30) + (i * 10));
   
   for (j = 0 ; j<3 ; j++) {
    printf("Score input :");
    scanf("%d", ((pscore + k * 12) + (i * 4)) + j);
     
   }
  }
 }
}


void oper(int *pscore, float *pavg) {

 int i, j, k;


 for (k = 0; k<3; k++) {
  for (i = 0; i<3; i++) {
   for (j = 0; j<3; j++) {
    *(((pscore + k * 12) + i * 4) + 3) += *(((pscore + k * 12) + i * 4) + j);

   }
   *((pavg + k * 3) + i   ) = *(((pscore + k * 12) + i * 4) + 3) / 3.f;
  }

 }

}


void output(int *clas, char*pname, int *pscore, float *pavg) {

 int i, j, k;


 for (k = 0; k<3; k++) {
  printf("%d\n", *(clas + k));


  for (i = 0; i<3; i++) {

   printf("%s\t",( pname + k * 30 )+ i * 10);


   for (j = 0; j<4; j++) {
    printf("%d\t", *(((pscore + k * 12) + i * 4) + j));

   }
   printf("%f\n", *(pavg + k * 3) + i);
  }

 }

}

'C ' 카테고리의 다른 글

2차원배열 동적할당  (0) 2018.01.02
다차원포인터 활용  (0) 2018.01.02
문자열 비교함수  (0) 2018.01.02
문자열  (0) 2018.01.02
for문 연습  (0) 2018.01.02