알고리즘 - 성적 처리 프로그램

김혜진·2022년 9월 21일
0

알고리즘

목록 보기
8/13

성적 처리 프로그램

성적 처리 프로그램을 작성하고자 한다. 학생은 5명이고 과목은 국어, 영어, 수학인 3과목을 대상으로 한다.
학생 별 총점이 필요하고 각 과목당 총점과 평균을 계산할 필요가 있다. 성적의 값은 정수 값으로 입력되어지고 평균은 실수(double)값으로 처리한다.
이 프로그램을 포인터를 이용하여 작성하시오.

  • 입/출력 조건
    입력 조건
    5명의 학생에 대한 국어, 영어, 수학 점수를 100점을 기준으로 입력한다.
    입력화면)

첨부 그림 참고

  • 출력 조건
    각 개인별 성적 리스트와 총점
    과목별 총점과 평균 데이터

출력화면)

=================================

번호 국어 영어 수학 총점
1 78 87 55 220
2 68 97 80 245
3 99 97 94 290
4 69 88 76 233
5 91 93 76 260

=================================

과목총점 405 462 381 1248

=================================

과목평균 81.00 92.40 76.20 249.60

=================================


내 코드

#include<stdio.h>

void main()
{
	int scores[5][5] = { 0 };
	int total[4] = { 0 };
	double aves[4] = { 0.0 };
	int i, j;

	printf("입력화면)\n");
	printf("학생성적을 입력하세요. (5명의 학생 자료)\n");

	for (i = 0; i < 5; i++)
	{
		int sum = 0;
		printf("%d번(국어, 영어, 수학) : ", i + 1);
		scores[i][0] = i + 1;

		for (j = 1; j < 4; j++)
		{
			scanf_s("%d", &scores[i][j]);
			sum += scores[i][j];
		}

		scores[i][4] = sum;
	}

	printf("\n\n출력화면)\n");
	printf("========================================\n");
	printf("   번호   국어   영어   수학   총점\n");
	printf("========================================\n");

	for (int i = 0; i < 5; i++)
	{
		for (int j = 0; j < 5; j++)
		{
			printf("     %d", scores[i][j]);
		}
		printf("\n");
	}

	printf("========================================\n");
	printf("  과목총점");

	for (int i = 0; i < 4; i++)
	{
		int subject = 0;

		for (int j = 0; j < 5; j++)
		{
			subject += scores[j][i + 1];

			if (j == 4)
			{
				total[i] = subject;
				printf("  %d", total[i]);
			}
		}
	}

	printf("\n========================================\n");
	printf("  과목평균");

	for (int i = 0; i < 4; i++)
	{
		aves[i] = double(total[i]) / 5;
		printf("  %.2f", aves[i]);
	}

	printf("\n========================================\n");

}

세로로 가려면 어떻게 해야하지... 이거 빼고 출력하려면 어떻게 해야하지.. 에 대한 고민이 많았다.
저번에 한 번 2차원배열에 대한 예시를 봐두었던 게 생각나서 무사히 스스로의 머리로 작성할 수 있었다.
효율적으로 잘 작성한걸까..?ㅠㅠ 함수화가 가능한지도 잘 모르겠다..

profile
알고 쓰자!

0개의 댓글