반응형
문제).
계산 할 과목 갯수를 입력받고, 입력 받은 과목의 갯수만큼의 과목 데이터를 입력받아서 과목별 평균과 전체 평균을 구하시오.
입력 방법.
과목 개수: 3
과목 1 시험 개수, 점수: 4 2 3 4 5 (첫 숫자 4는 뒤에 입력된 데이터 수, 뒤의 데이터 4개는 실제 데이터)
과목 2 시험 개수, 점수: 2 4 5 (첫 숫자 2는 뒤에 입력된 데이터 수, 뒤의 데이터 2개는 실제 데이터)
과목 3 시험 개수, 점수: 3 4 4 5 (첫 숫자 3는 뒤에 입력된 데이터 수, 뒤의 데이터 3개는 실제 데이터)
결과 출력 방법.
과목 1: 평균 3.50, 점수 2 3 4 5
과목 2: 평균 4.50 점수 2 4 5
과목 3: 평균 4.33 점수 4 4 5
총 평균: 4.11
실 데이터 입력
3
4 2 3 4 5
2 4 5
3 4 4 5
결과 출력
Cource 1: final 3.50, grade: 2 3 4 5
Cource 2: final 4.50, grade: 4 5
Cource 3: final 4.33, grade: 4 4 5
Overall final 4.11
답은 아래에... ↓
스스로 풀어보시고... ↓
아래 답과 비교해보세요. ↓
문제풀이
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define SEPERATOR " \r\n\t"
typedef struct
{
int count;
int score[100];
int sum;
double average;
} course_t;
int main(int argc, char **argv)
{
int count;
double total_average;
int idx, idx2;
course_t course[100];
char input[1024];
char *ptr;
memset(course, 0x00, sizeof(course));
/* 몇 개의 과목의 값을 받을 것인지 입력 */
printf("Input Course count: ");
fgets(input, sizeof(1024), stdin);
count = atoi(input);
for(idx = 0; idx <count; idx++) {
/* 한 과목의 데이터를 입력받습니다. 한 과목의 데이터는 몇개일지 모르겠지만... */
fgets(input, sizeof(input), stdin);
/* 입력받은 데이터 중 첫번째 데이터 분리 (데이터 건수) */
if((ptr = strtok(input, SEPERATOR)) == NULL) {
printf("Input error\n");
return 1;
}
course[idx].count = atoi(ptr);
/* 데이터 건수만큼 데이터를 분리 */
for(idx2 = 0; idx2 < course[idx].count; idx2++) {
/* 점수를 1개씩 분리하는 부분 */
if((ptr = strtok(NULL, SEPERATOR)) == NULL) {
printf("Input Error : score 입력 갯수 미달\n");
return 1;
}
course[idx].score[idx2] = atoi(ptr);
course[idx].sum += course[idx].score[idx2];
}
course[idx].average = (double)course[idx].sum / course[idx].count;
}
/* Course별 결과 출력 */
total_average = 0;
for(idx = 0; idx < count; idx++) {
printf("Cource %d: final %.2lf, grade:", idx + 1, course[idx].average);
for(idx2 = 0; idx2 < course[idx].count; idx2++) {
printf(" %d", course[idx].score[idx2]);
}
total_average += course[idx].average;
printf("\n");
}
/* 전체 평균 계산 및 출력 */
total_average /= count;
printf("Overall final %.2lf\n", total_average);
return 0;
}
반응형
'C언어 문제 > 함수 활용' 카테고리의 다른 글
[strtok] 문자열에 포함된 단어의 수 출력하기 (0) | 2020.06.12 |
---|---|
[strtok] 띄어쓰기 단위(단어 단위)로 잘라서 단어를 역순으로 출력 (0) | 2020.06.12 |
[rand] 컴퓨터와 가위, 바위, 보 게임하기 (0) | 2019.11.19 |
[rand] 100 개의 데이터를 임의로 생성하여 정렬하시오. (0) | 2019.11.06 |
[rand] 윷놀이 프로그램 (0) | 2019.11.03 |