|
char* a[9][2] = { "A+", "A0", "B+", "B0", "C+", "C0", "D+", "D0", "F" }; 를
char a[9][3] = { "A+", "A0", "B+", "B0", "C+", "C0", "D+", "D0", "F" };로 바꾸셔야 되고..
stu[i].sub[j].gpa = 4.5 * stu[i].sub[j].grade; 에서
hakjum 을 곱해야 되는데 char[10] 형인 grade를 곱하고 있네요.
종료는, switch(menu) 앞에 아래처럼 분기를 넣어보세요
if (menu==3)
break;
else
switch(menu)
.
.
.
전성훈 님이 쓰신 글 :
: 안녕하세요. 현재 대학교에서 컴퓨터를 전공하고 있는 학생입니다.
:
: 다름 아니라 과제를 수행하는 중에 도저히 문제 해결 방법에 감이 안잡혀서
:
: 중간에 막혀버린 상태입니다.
:
: C++를 배우는 과목인데 C++를 배우는 과정이다보니 지금 당장은 객체지향 개념을 사용하지 않고
:
: 그냥 C처럼 코딩을 해버려야하는게 특징이구요.
:
: 제가 막힌 문제는 교과목들의 평점 계산 부분입니다.
:
: A+일때 4.5 * 과목당 학점
: A0일때 4 * 과목당 학점
: B+일때 3.5 * 과목당 학점
: ...
: F일때 0점
:
: 이 부분을 구현하려 strcmp를 사용했는데 자꾸 오류가 떠버리는데 여기서 어떻게 해야
:
: 제가 원하는 방향으로 데이터 처리를 하게 만들지 모르겠어서 문제입니다. ㅜㅜ
:
: 두번째는 while문으로 계속 메뉴를 반복시켜야하는데 이때 3번 프로그램 종료를 입력했을때는
:
: 프로그램을 종료시켜야하는데 while문 내의 switch문 안에 들어가 있다보니
:
: 프로그램을 종료시키고 싶지만 계속 메뉴화면이 구현되는데 이때 제가 switch문이 아닌 다른 형태로
:
: 코딩을 해야하는거 같은데 이것도 어떤 다른 대안이 있는지를 모르겠습니다.
:
:
: 아래 소스코드 보시고 제가 학점을 구현하기 위해서 어떻게 해야되는지
:
: 메뉴 종료시 프로그램을 종료시키는 방법 등등 알려주시면 감사하겠습니다.
:
: 막 배우는 입장이다보니 실력있는 분들의 조언이 절실한 상태입니다.
:
:
: #include <iostream>
: #include <iomanip>
: #include <cstring>
: using namespace std;
: struct subject
: {
: char subName[30]; // 과목 이름
: int hakjum; // 과목 학점
: char grade[10]; // 과목 등급
: float gpa; // 과목 평점
: };
:
: struct student
: {
: char stdName[30]; // 학생 이름
: int hakbun; // 학번
: subject sub[3]; // 과목
: float ave_gpa; // 교과목 평균 평점
: };
:
: int main(void)
: {
: struct student stu[2];
: int menu, i, j, k;
: char* a[9][2] = { "A+", "A0", "B+", "B0", "C+", "C0", "D+", "D0", "F" };
:
: while (1)
: {
: cout << "---- 메뉴 ----" << endl;
: cout << "1. 학생 성적 입력" << endl;
: cout << "2. 전체 학생 성적 보기" << endl;
: cout << "3. 프로그램 종료" << "\n\n";
:
: cout << "원하는 기능을 입력하세요 : ";
: cin >> menu;
: cout << "\n";
:
: switch (menu)
: {
: case 1:
:
: for (i = 0; i < 2; i++)
: {
: cout << "* " << i + 1 << " 번째 학생 이름과 학번을 입력하세요." << endl;
: cout << "이름 : ";
: cin >> stu[i].stdName;
: cout << "학번 : ";
: cin >> stu[i].hakbun;
: cout << "\n\n\n";
: cout << "* " << "수강한 과목 3개와 각 교과목명, 과목학점, 과목등급을 입력하세요." << endl;
:
: for (j = 0; j < 3; j++)
: {
: cout << "교과목명 : ";
: cin >> stu[i].sub[j].subName;
: cout << "과목학 점수 : ";
: cin >> stu[i].sub[j].hakjum;
: cout << "과목등급(A+ ~ F) : ";
: cin >> stu[i].sub[j].grade;
: cout << "\n\n";
:
: if (strcmp(stu[i].sub[j].grade, a[0]) == 0)
: stu[i].sub[j].gpa = 4.5 * stu[i].sub[j].grade;
: else if (strcmp(stu[i].sub[j].grade, a[1]) == 0)
: stu[i].sub[j].gpa = 4 * stu[i].sub[j].grade;
: else if (strcmp(stu[i].sub[j].grade, a[2]) == 0)
: stu[i].sub[j].gpa = 3.5 * stu[i].sub[j].grade;
: else if (strcmp(stu[i].sub[j].grade, a[3]) == 0)
: stu[i].sub[j].gpa = 3 * stu[i].sub[j].grade;
: else if (strcmp(stu[i].sub[j].grade, a[4]) == 0)
: stu[i].sub[j].gpa = 2.5 * stu[i].sub[j].grade;
: else if (strcmp(stu[i].sub[j].grade, a[5]) == 0)
: stu[i].sub[j].gpa = 2 * stu[i].sub[j].grade;
: else if (strcmp(stu[i].sub[j].grade, a[6]) == 0)
: stu[i].sub[j].gpa = 1.5 * stu[i].sub[j].grade;
: else if (strcmp(stu[i].sub[j].grade, a[7]) == 0)
: stu[i].sub[j].gpa = 1 * stu[i].sub[j].grade;
: else
: stu[i].sub[j].gpa = 0;
: }
: }
: break;
:
: case 2:
: cout.width(10);
: cout << "전체 학생 성적 보기" << endl;
: cout << "========================================================" << endl;
:
: for (i = 0; i < 2; i++)
: {
: cout << "이름 : " << stu[i].stdName << " 학번 : " << stu[i].hakbun << endl;
: cout << "========================================================" << endl;
: cout.width(20);
: cout << "과목명";
: cout.width(20);
: cout << "과목학점";
: cout.width(20);
: cout << "과목등급";
: cout.width(20);
: cout << "과목평점" << endl;
: cout << "========================================================" << endl;
:
: for (j = 0; j < 3; j++)
: {
:
: cout.width(20);
: cout << stu[i].sub[j].subName;
: cout.width(20);
: cout << stu[i].sub[j].hakjum;
: cout.width(20);
: cout << stu[i].sub[j].grade;
: cout.width(20);
: cout << stu[i].sub[j].gpa;
: }
:
: cout << "========================================================" << endl;
: cout.width(40);
: cout << "평균평점 : xx \n" << endl;
: }
: break;
:
: case 3:
: cout << "프로그램을 종료합니다." << endl;
: break;
:
: default:
: cout << "잘못 입력되었습니다. \n" << endl;
: break;
: }
: }
:
: return 0;
: }
|