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
[68847] missing ')' before '!=' 좀 해결부탁 드립니다...
김동석 [dsk5754] 1339 읽음    2012-12-20 13:34
#include "stdafx.h"
#include "stdio.h"                //text파일로 출력을 위해서는 헤더파일에 stdio.h파일이 있어야한다.

struct score                    //score라는 구조체를 만들었습니다.
{
    char* name[100];
    char* sub[5];                //sub라는 변수의 내용은 char형태이고 이 포인터는 다른 함수에서 내용을 참조할 수 있습니다. 배열크기는 과목이 5개이므로 5를 주었습니다.
    int data[5];                //data는 점수이고 정수이므로 int형태이다. 이 역시 과목 5개 대한 점수를 입력하기 위해 크기를 5로 주었습니다.
    char* grade[5];                //grade는 학점이고 변수내용은 char형태이입니다. 이 역시 포인터를 사용해 다른함수에서 내용을 참조할 수 있습니다. 이것을 설정한 이유는 나중에 텍스트파일 출력에 사용하기 위해서 입니다.
};

class evaluation                //evaluation 이라는 class를 만들었습니다. class는 struct의 확장적 의미입니다.
{
    public:                        //타입은 public타입을 사용하였으며, public경우 모든 곳에서 접근할 수 있습니다.

    struct score sc;            //class안에 위에 설정한 score라는 struct를 설정하였습니다.
    void input();                //멤버함수를 쓰기위해 void타입으로 나중에 입력할 input과 학점을 넣을 project도 선언하였습니다.
    void project(int i);        //이때, input에서는 아직 입력받은게 없으므로 ()가 비었지만 project는 input에서 입력받은 점수를 가지고 학점을 매기므로 int i를 넣었습니다.
};

void evaluation::input()        //evaluation class의 input라는 멤버함수를 만들었습니다.
{
    int i, j, temp;                        //이 경우는 선택정렬입니다. 인터넷을 통해 소스를 다운받았습니다.
    char* tempa;   

    sc.sub[0] = "C";            //이때, 구조체서 만든 과목sub의 배열의 값을 각각 지정해주었습니다.
    sc.sub[1] = "CPP";
    sc.sub[2] = "DB";
    sc.sub[3] = "CAD";
    sc.sub[4] = "CATIA";

    printf("이름을 입력해 주세요.");
    scanf("%s", &sc.name);

    printf("\n");
    for(i=0; i<5; i++)
    {
        printf("%s의 점수를 입력하시오. ", sc.sub[i]);
        scanf("%d", &sc.data[i]);            //이때 각 점수는 그 배열에 맞게 놓여지도록 설정하였습니다.
    }

       
    printf("[\n%s의 성적\n]", sc.name);
    //이때 점수에 따라 높은 것부터 낮은 것으로 정렬시키게 만드는 것이고
    for(i=0; i<4; i++)                    //거기에 따라 프린트 되어지는 문자도 같이 정렬되게 만들었습니다.
    {                                    //변수를 두개 지정하고 정수에 관한 temp도 지정해주었습니다, 그리고 점수에 따른 문자도 이동해야하므로 tempa도 사용해주었습니다.
        for(j=i+1; j<5; j++)            //선택정렬을 sc.sub[0]의 점수를 기준으로 했을시 sc.sub[1]의 점수가 sc.sub[0]보다 높으면 높은게 앞쪽으로 오도록 하고
        {                                //만약 점수가 같거가 sc.sub[0]가 더 클시에는 그냥 그대로 위치하도록 해놓는 것을 말합니다.
            if(sc.data[i]<sc.data[j])
            {
                temp=sc.data[i];        //점수에 맞게 이동하고 난뒤에, 문자도 역시 이동해야하므로 temp와 tempa를 이용하여 만들었습니다.
                sc.data[i]=sc.data[j];
                sc.data[j]=temp;

                tempa=sc.sub[i];        //그리고 점수 입력을 5번하므로 for문이 4번 반복되도록 설정했습니다.
                sc.sub[i]=sc.sub[j];
                sc.sub[j]=tempa;
            }
        }
    }

}

void evaluation::project(int i)            //evaluation class의 input라는 멤버함수를 만들었습니다. int i는 scanf 받은 점수를 가지고 학점을 매기기 위해 넣었습니다.
{
    int score;

    score = sc.data[i];                        //이때 C라는 것을 구조체의 점수배열로 만들었습니다.


    if(score >= 90 && score <= 100)                //그리고 if와 else if를 사용해 점수때별 학점을 매기게 만들었습니다.
    {
        sc.grade[i] = "A";                //이때 아까 위에 학점 grade의 배열을 5칸 만들어서 점수 5번 입력시 학점도 저장할 수 있도록 배열로 받았습니다.
    }
    else if(score >= 80 && score < 90)
    {
        sc.grade[i] = "B";
    }
    else if(score >= 70 && score < 80)
    {
        sc.grade[i] = "C";
    }
    else if(score >= 60 && score < 70)
    {
        sc.grade[i] = "D";
    }
    else if(score < 60)
    {
        sc.grade[i] = "F";
    }

    printf("%s\t%d\t<%s>\n", sc.sub[i], score, sc.grade[i]);        //그리고 프린트 f서 먼저 과목명과 점수, 학점이 뜨도록 printf를 설정하였으며 이때 줄간격을 맞추기 위해 tab기호인 \t를 썼습니다.
}


int main(int argc, char* argv[])    //마지막으로 메인문에다가 이때까지 만든 class와 멤버함수를 인식시켜야합니다.
{
    int i;

ret:
    printf("원하시는 모드를 선택해 주십시오.\n1.성적 입력 모드\n2.성적 조회 모드\n3.프로그램 종료\n");
    scanf("%d", &i);
    switch(i)
    {
        case(1):
            goto insert;
        case(2):
            goto search;
        case(3):
            goto exit;
        default:
            printf("잘못 입력하셨습니다 다시 입력해 주십시오.\n");
            goto ret;
    }

insert:

    evaluation ev;                    //evaluation라는 class를 넣었습니다.
    ev.input();                        //그리고 class의 멤버함수인 input을 넣었습니다.
    printf("과목명\t점수\t학점\n");
    for(
        i=0; i<5; i++)            //project 멤버함수도 넣는데 이경우 점수를 5번입력하므로 그 입력한 값에 대한 각각의 학점이 다 나와야 하므로 for문을 이용하여 5번 반복시켰습니다.
    {
        ev.project(i);
    }
   

search:


   
    int* name;
    printf("조회하려는 학생의 이름을 입력하시오.(처음으로 되돌아가려면 0을 입력) : ");
    scanf("%s", name);

    if(name[0]=='0')
        goto ret;
   
        while(evaluation!=NULL)
        {
        if(strcmp(evaluation->sub,name) == 0)
        {
            printf("%s의 성적\n", evaluation->grade);
            printf("과목명  점수  학점\n");
            for(i=0; i<5; i++)
            {
                printf("%s %d %c\n", evaluation->sub[i], evaluation->data[i], evaluation->grade[i]);
            }
        }
        evaluation = evaluation->link;

   
   
    char fname[100] = "grade.txt";
   
    FILE *f;
    int cnt = 0;

    while (!feof(stdin))
    {
        fprintf(f,"%d",++cnt);
        fputs(name,f);
        fgets(name,100,stdin);
    }
    fclose(f);
   
   
   

    }




   

exit:
    return 0;
}
<
<
<
<
<
<


+ -

관련 글 리스트
68847 missing ')' before '!=' 좀 해결부탁 드립니다... 김동석 1339 2012/12/20
68848     Re:missing ')' before '!=' 좀 해결부탁 드립니다... 송신영 1271 2012/12/20
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.