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
[71051] Re:Re:Re:Re:Re:Re:코딩 질문드립니다.
prism [handebug] 2763 읽음    2014-03-18 17:51
혹시 필요하시면 각 항목별 색상값을 알려드릴까요 ?

테마궁금 님이 쓰신 글 :
: 아 그렇군요 ㅎㅎ 잘해 놓으셨네요
:
:
: prism 님이 쓰신 글 :
: : 직접 설정한 건데여.
: : 요런 테마는 없어요.
: :
: : ^^;;;
: :
: :
: :
: : 테마궁금 님이 쓰신 글 :
: : : 답변은 아니지만 캡쳐보니까 테마 색깔이 이쁜데 무슨 테마 쓰시는지 알고 싶어요.
: : :
: : :
: : :
: : : prism 님이 쓰신 글 :
: : : : 몇 가지 더 수정해야 하겠지만,
: : : : 그냥 그대로 실행한 화면을 캡쳐해서 올렸습니다.
: : : :
: : : : 시간이 남아서......
: : : :
: : : :
: : : : ^^;;;;
: : : :
: : : :
: : : :
: : : :
: : : :
: : : : prism 님이 쓰신 글 :
: : : : : 아직 배열, 포인터 관련한 부분을 배우지 않은 상태인가요 ?
: : : : : 배우셨으면, 정확하게 이해를 못하시고 계신 것으로 보입니다.
: : : : :
: : : : : char* a[9][2] = { "A+", "A0", "B+", "B0", "C+", "C0", "D+", "D0", "F" };
: : : : :
: : : : : 이와 같이 정의하면 char*형을 가르키는 2차원 배열을 정의하시게 된 것입니다.
: : : : : 2차원 배열이 필요가 없죠.
: : : : :
: : : : : 실제 필요한 것은 char* 형을 item으로 가지는 1차원 배열만 있으면 되는 것입니다.
: : : : : 따라서,
: : : : : char* a [9] =  { "A+", "A0", "B+", "B0", "C+", "C0", "D+", "D0", "F" };
: : : : : 하시면 됩니다.
: : : : :
: : : : :
: : : : :
: : : : :
: : : : : strcmp에서 오류가 나는 이유는
: : : : : int strcmp(const char *s1, const char *s2);
: : : : :
: : : : : 가 prototype입니다.
: : : : : 그런데, 2차원 배열로 정의하면
: : : : : if (strcmp (stu [i].sub [j].grade, a [0]) == 0)
: : : : :
: : : : : 이와 같이 했을 때 a [0]이 가르키는 것은 char* 가 아니라 char* [] 가 됩니다.
: : : : : 따라서 정상적으로 처리 되지 않습니다.
: : : : :
: : : : : 전반적으로 너무 어렵게 생각하시는 것 같은 느낌입니다.
: : : : : 쉽게 생각하시고, 쉽게 구현하세요.
: : : : : 쉬운 소스가 최상의 소스입니다.
: : : : :
: : : : : new / delete 까지 배우셨는지 모르겠는데,
: : : : : 구현이 제대로 되면 다음 단계로는 new / delete를 이용하여
: : : : : 자료를 위한 동적 메모리 할당을 하여 처리하는 것까지 해 보시면 좀 더 나은
: : : : : 풀그램이 될 듯 합니다.
: : : : :
: : : : :
: : : : :
: : : : :
: : : : :
: : : : :
: : : : : 전성훈 님이 쓰신 글 :
: : : : : : 안녕하세요. 현재 대학교에서 컴퓨터를 전공하고 있는 학생입니다.
: : : : : :
: : : : : : 다름 아니라 과제를 수행하는 중에 도저히 문제 해결 방법에 감이 안잡혀서
: : : : : :
: : : : : : 중간에 막혀버린 상태입니다.
: : : : : :
: : : : : : 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;
: : : : : : }

+ -

관련 글 리스트
71044 코딩 질문드립니다. 전성훈 2952 2014/03/18
71046     Re:코딩 질문드립니다. prism 2950 2014/03/18
71047         Re:Re:코딩 질문드립니다. prism 2901 2014/03/18
71048             Re:Re:Re:코딩 질문드립니다. 테마궁금 2927 2014/03/18
71049                 Re:Re:Re:Re:코딩 질문드립니다. prism 2893 2014/03/18
71050                     Re:Re:Re:Re:Re:코딩 질문드립니다. 테마궁금 2788 2014/03/18
71051                         Re:Re:Re:Re:Re:Re:코딩 질문드립니다. prism 2763 2014/03/18
71052                             Re:Re:Re:Re:Re:Re:Re:코딩 질문드립니다. 테마궁금 2726 2014/03/18
71054                                 Re:Re:Re:Re:Re:Re:Re:Re:코딩 질문드립니다. prism 2813 2014/03/18
71055                                     Re:Re:Re:Re:Re:Re:Re:Re:Re:코딩 질문드립니다. 테마궁금 2935 2014/03/18
71045     Re:코딩 질문드립니다. 빌더초보 2931 2014/03/18
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.