C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[71111] Re:Re:C++ 함수 프로토타입 수정 도움 좀 부탁드려요ㅠㅠ
전성훈 [crheart7] 2970 읽음    2014-03-26 20:14
프로그램을 작성하면서 함수입력출력 형태에 상관없이 일단 만들어보고

프로토타입을 체크한다음 수정하면 쉽게 변형시킬 줄 알았습니다.

하지만 막상 함수 하나씩 수정을 하려는데

먼저  printone 함수를 printall 함수에 연결시킨다는게 이해가 안되고

search 함수도 주소를 반환해서 함수에 연결하는 형태가 이해가 안됩니다.

지금 계속해보고 있는데 오류만 생기고 진도를 뺄수가 없네요...
(오류는 건드리지도 않은 average 함수가 계속 에러가 나네요. 코드 지웠다가 복사하고 붙여넣으면 제대로 실행되는데 왜 이러는건가요??)

지식이 짧다보니 제가 막히는 부분을 똑부러지게 설명을 못하겠습니다;;;

물론 제가 작성한 프로그램은 맞구요



아루스 님이 쓰신 글 :
: 본인이 작성하신 코드가 맞다면 작성된 코드의 내용으로 보아 수정내용을 다 수행할 수 있을 것으로 보입니다.
: "과제를 해주세요" 가 아닌 "이 부분이 모르겠어요" 정도의 질문을 해주셔야 할 듯 합니다.
: 그런데 아무리 보아도 로직은 다 만들어진 상태에서 코드의 위치만 바꾸는 정도의 작업이 어려운 이유를 모르겠습니다.
:
:
:
: 전성훈 님이 쓰신 글 :
: : 안녕하세요. 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;
: : }  
: :

+ -

관련 글 리스트
71102 C++ 함수 프로토타입 수정 도움 좀 부탁드려요ㅠㅠ 전성훈 3605 2014/03/26
71104     Re:C++ 함수 프로토타입 수정 도움 좀 부탁드려요ㅠㅠ 아루스 2983 2014/03/26
71111         Re:Re:C++ 함수 프로토타입 수정 도움 좀 부탁드려요ㅠㅠ 전성훈 2970 2014/03/26
71113             Re:Re:Re:C++ 함수 프로토타입 수정 도움 좀 부탁드려요ㅠㅠ 빌더초보 2983 2014/03/27
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.