4번 째 문제다.
왼쪽이 input, 오른쪽이 output이다.
왼쪽과 같이 이름, 그리고 행마다 점수 3개가 입력이 되면, 출력할 때 하나씩 출력하고 마지막에 각 점수의 합계를 출력하면 된다. 전 문제와 비교해서는 제법 간단해보여서 다행이다.
아래 손코딩을 먼저 보자:
name 배열을 선언하고, 각 점수를 korean, english, math 점수로 가정하고 배열을 각각 따로 설정해 주었다.
그리고 이전에 배운 delimiter 변수와 ptoken 변수를 사용해서, 문자열에서 단어 하나 하나를 추출하여 각 배열에 넣어주면 된다. 다만 입력 받은 점수는 int 형이 아니고 문자형이기 때문에 atoi()함수를 이용해서 문자형->정수형으로 꼭 반환 해주어야 한다.
최종 코드는 아래와 같다:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(){
char name[5][100]; int korean[5]; int english[5]; int math[5];
char div[]=" ";
int sum[5]={0};
char *ptoken=NULL;
char temp[100];
for(int i=0;i<4;i++){
gets(temp);
ptoken=strtok(temp,div);
strcpy(name[i],ptoken);
while(ptoken!=NULL){
ptoken=strtok(NULL,div);
sum[i]+=atoi(ptoken);
korean[i]=atoi(ptoken);
ptoken=strtok(NULL,div);
sum[i]+=atoi(ptoken);
english[i]=atoi(ptoken);
ptoken=strtok(NULL,div);
sum[i]+=atoi(ptoken);
math[i]=atoi(ptoken);
ptoken=strtok(NULL,div);
}
}
for(int i=0;i<4;i++){
printf("%s %d %d %d %d\n",name[i],korean[i],english[i],math[i],sum[i]);
}
return 0;
}