본문 바로가기

c++

[c++] 제어문 및 반복문 이용하여 성적 입력 프로그램 작성

성적 입력받아 배열에 저장하는 프로그램

 

#include <iostream>


using namespace std;
void main() {
	int num = 0;
	cout << "학생 수 입력: ";
	cin >> num;
	addScore(num);

}

void addScore(int num) {
	//성적 정보(num(총 학생 수) 만큼 성적 배열 생성)
	int* stu_no = new int[num]; // 포인터 이용해 배열 동적 할당
	int* ko_score = new int[num];
	int* en_score = new int[num];
	int* mt_score = new int[num];
	float* avg = new float[num];
	
	//종료여부
	bool boo = true;
	
	//현재 성적 입력한 학생 수
	int all_std = 0;

	//프로그램 실행
	while (boo) {
		cout << "\n----------메뉴----------\n";
		cout << "1. 성적추가\n";
		cout << "2. 전체 성적 보기\n";
		cout << "3. 종료하기\n";
		cout << "\n-----------------------\n";
		cout << "번호 입력: ";
		char selNum;
		cin >> selNum;
		//선택한 메뉴 처리 위한 조건문
		switch (selNum) {
		
		//성적 조회
		case '1':
		{	
			//입력받은 학생수가 총 학생수와 같으면 실행 x
			if (all_std == num) {
				cout << "모든 학생의 성적이 입력되었습니다.\n";
				break;
			}

			//성적 입력받고 성적 리스트에 저장
			cout << endl << "성적추가 메뉴 선택 \n";
			int ko, en, mt;
			cout << "국,영,수 점수 입력: ";
			cin >> ko >> en >> mt;
			float av = (ko + en + mt) / 3.0f;
			stu_no[all_std] = all_std+1;
			ko_score[all_std] = ko;
			en_score[all_std] = en;
			mt_score[all_std] = mt;
			avg[all_std] = av;
			all_std++;
			break;
		}

		case '2':
			cout << "\n전체 성적 보기 선택\n";
			//현재 입력된 학생 수 만큼 성적 출력
			for (int i = 0; i < all_std; i++) {
				cout << stu_no[i] << "번 학생 성적\n";
				cout << "국어: " << ko_score[i] << "  수학: " << mt_score[i] << "  영어: " 
					<< en_score[i] << "  총점: "<< avg[i] << endl;
				cout << endl;
			}
			break;
		case '3':
			cout << "\n종료\n";
			//동적 할당받은 배열들 삭제 후 bool 타입 false 설정하여 종료
			free(ko_score);
			free(en_score);
			free(mt_score);
			free(avg);
			boo = false;
			break;
		default:
			cout << "\n잘못된 입력\n";
		}
	}
}