|
본인이 작성하신 코드가 맞다면 작성된 코드의 내용으로 보아 수정내용을 다 수행할 수 있을 것으로 보입니다.
"과제를 해주세요" 가 아닌 "이 부분이 모르겠어요" 정도의 질문을 해주셔야 할 듯 합니다.
그런데 아무리 보아도 로직은 다 만들어진 상태에서 코드의 위치만 바꾸는 정도의 작업이 어려운 이유를 모르겠습니다.
전성훈 님이 쓰신 글 :
: 안녕하세요. C++ 코드 함수 프로토타입 변형에 관련되어 애로가 많아 질문드립니다.
:
: 현재 문제에서 주어진 요구사항을 출력시키는데는 전혀 문제가 없지만
:
: 문제가 제시한 상세 사항(함수)을 충족시키려하는데 어려움이 많아 도움을 구해보고 싶습니다.
:
: 요구 사항은 다 제대로 작동하기에 함수 프로토타입 요구 조건만 충족시켜서 첨삭해주실 고수 분 찾아봐요ㅜㅜ...
:
: =========================================================================================
:
: 1. 개인 학생의 교과목 평균 평점을 구할 때 사용하는 코드를 묶어 CalcAveGPA()라는 함수를 구현
:
: 함수의 프로토타입 : float CalcAveGPA(Subject* Sub, int SubjectNum);
:
: // Sub : 교과목 정보가 담긴 Subject 포인터 변수
:
: // SubjectNum : 과목 수
:
:
: 2. 개인의 신상 정보와 성적 정보를 출력하는 PrintOneData()라는 함수를 구현
:
: Student 구조체 매개변수 인자는 반드시 레퍼런스로...
:
: 함수의 프로토타입 : void PrintOneData(const Student& rSt);
:
: // rSt : 학생 정보가 담긴 Student 레퍼런스 변수
:
:
: 3. 전체 학생의 신상 정보와 성적 정보를 출력하는 부분을 PrintAllData()라는 함수를 구현
:
: 이 함수는 개인의 학생 정보를 출력하는 PrintOneData() 함수를 호출하여 사용
:
: 함수의 프로토타입 : void PrintAllData(const Student* pSt, int StudentNum);
:
: // pSt : 학생 정보가 담긴 Student 포인터 변수
:
: // StudentNum : 전체 학생 수
:
: // 모든 학생의 정보를 출력하기 위해 학생 개인의 정보를 출력하는 PrintOneData() 함수 호출
:
:
: 4. 특정 학생의 이름을 검색하여 해당 학생 정보가 있는 주소를 리턴하는 기능을 가진 StdSearch()라는 함수를 구현
:
: 특정 학생의 이름을 사용자로부터 입력받고, 해당되는 학생이 있는지 검색한 후, 검색에 성공하면 해당 학생의 정보가 있는 곳의 주소를, 성공하지 못하면 NULL을 리턴받고 에러 메시지 출력.
:
: 함수의 프로토타입 : Student* StdSearch(Student *pSt);
:
: // pSt : 학생정보가 담긴 Student 포인터 변수
:
: // 리턴값 : 해당 학생의 정보가 있는 곳의 주소
:
:
:
: #include <iostream>
: #include <iomanip>
: using namespace std;
:
: const char jumsu[8][3] = { "D0", "D+", "C0", "C+", "B0", "B+", "A0", "A+" };
: typedef struct subject
: {
: char subName[30];
: int hakjum;
: char grade[10];
: float gpa;
: }SubJect;
:
: typedef struct student
: {
: char stdName[20];
: int hakbun;
: SubJect sub[3];
: float ave_gpa;
: }Student;
:
: void PrintMenu(void)
: {
: cout << "===== 메뉴 =====" << endl;
: cout << "1. 학생 성적 입력" << endl;
: cout << "2. 전체 학생 성적 보기" << endl;
: cout << "3. 학생 이름 검색" << endl;
: cout << "4. 프로그램 종료" << endl << endl;
: cout << "원하는 기능을 입력하세요 : ";
: }
:
: float average(int hakjum, char* grade)
: {
: for (int i = 0; i < 9; i++)
: {
: if (strcmp(jumsu[i], grade) == 0)
: return hakjum * ((i * 0.5f) + 1);
: }
: return 0;
: }
:
: void CalcGPA(SubJect& Sub)
: {
: cout << "교과목명 : ";
: cin >> Sub.subName;
: cout << "과목 학점수 : ";
: cin >> Sub.hakjum;
: cout << "과목등급(A+ ~ F) : ";
: cin >> Sub.grade;
: Sub.gpa = average(Sub.hakjum, Sub.grade);
: cout << endl;
: }
:
: void PrintAllData(Student* stu)
: {
: cout << "이름 : " << stu->stdName << " 학번 : " << stu->hakbun << endl;
: cout.width(10); cout << "========================================================" << endl;
: cout.width(20); cout << "과목명";
: cout.width(10); cout << "과목학점";
: cout.width(10); cout << "과목등급";
: cout.width(10); cout << "과목평점" << endl;
: for (int j = 0; j < 3; j++)
: {
: cout.width(20); cout << stu->sub[j].subName;
: cout.width(7); cout << stu->sub[j].hakjum;
: cout.width(10); cout << stu->sub[j].grade;
: cout.width(11); cout << stu->sub[j].gpa << endl;
: }
: cout << "========================================================" << endl;
: stu->ave_gpa = (stu->sub[0].gpa + stu->sub[1].gpa + stu->sub[2].gpa) / 3;
: cout.width(46); cout << "평균평점 : " << stu->ave_gpa << endl;
: cout << endl << endl;
: }
:
: void StdSearch(char* inname, student *pSt)
: {
: if (strcmp(inname, pSt->stdName) == 0)
: PrintAllData(pSt);
: }
:
: int main(void)
: {
: bool check = true;
: int menu_input = 0;
: int student_num = 0;
: Student stu[10];
: cout.setf(ios::fixed, ios::floatfield);
: cout.precision(2);
: while (check)
: {
: PrintMenu();
: cin >> menu_input;
: switch (menu_input)
: {
: case 1:
: student_num++;
: cout << endl << "* " << student_num << "번째 학생 이름과 학번을 입력하세요." << endl;
: cout << "이름 : ";
: cin >> stu[student_num - 1].stdName;
: cout << "학번 : ";
: cin >> stu[student_num - 1].hakbun;
: cout << endl << "* 수강한 과목 3개와 각 교과목명, 과목학점, 과목등급을 입력하세요." << endl;
: for (int i = 0; i < 3; i++)
: CalcGPA(stu[student_num - 1].sub[i]);
: break;
: case 2:
: cout << "전체 성적 보기" << endl;
: cout << "========================================================" << endl;
: for (int i = 0; i < student_num; i++)
: PrintAllData(&stu[i]);
: system("pause");
: break;
: case 3:
: cout << endl << endl << endl << endl;
: char inname[20];
: cout << "검색 할 학생 이름 : ";
: cin >> inname;
: for (int i = 0; i < student_num; i++)
: StdSearch(inname, &stu[i]);
: system("pause");
: break;
: case 4:
: check = false;
: break;
: default:
: break;
: }
: system("cls");
: }
: cout << "프로그램을 종료합니다." << endl;
: return 0;
: }
:
|