C/C++ 예제

시삽: 레드플러스 님 
게시판 이동:
 제목 : 학점 계산 프로그램V0.3
글번호: 223
작성자: 레드플러스
작성일: 2005/11/16 오전 11:27:23
조회수: 4789
/*
    프로그램명 : 학점 계산 프로그램V0.3
*/
#include <stdio.h>

#define N 3    //상수

//[0] 구조체 설계
struct Record{
    int Num;            //번호
    int Eng;            //영어
    int Jap;            //일어
    int Tot;            //총점
    float Avg;            //평균
    char Grade;            //학점
};

//[!] 입력 전담용 함수 원형 : 참조형
void Input(
    struct Record *objInputData);
//[!] 처리 전담용 함수 원형 : 반환형
struct Record* MyProcess(
    struct Record InputData[]);
//[!] 출력 전담용 함수 원형 : 값형
void Output(
    struct Record objInputData[]);

//[!] 메인 함수
void main(void){
    //[1] Init
    struct Record InputData[N];//입력
    //[2] Input(8.1.7) : 참조형 전달
    Input(InputData);//주소전달
    //[3] Process(8.1.8) : 참조형 전달
    memcpy(InputData, MyProcess(InputData));
    //[4] Output(8.1.6) : 값형 전달
    Output(InputData);//구조체 넘기기
}

//[!] 입력 전담용 함수 선언
void Input(
    struct Record *objInputData){
        int i;
        for(i = 0;i < 3;i++){
            printf("\n학생번호 : _\b");
            scanf("%d", &objInputData[i].Num);
            printf("\n영어점수 : ___\b\b\b");
            scanf("%d", &objInputData[i].Eng);
            printf("\n일어점수 : ___\b\b\b");
            scanf("%d", &objInputData[i].Jap);
        }    
}

//[!] 처리 전담용 함수 선언
struct Record* MyProcess(
    struct Record InputData[]){
    int i;
    for(i = 0;i < N;i++){
        //[i]총점
        {
            InputData[i].Tot =
                InputData[i].Eng
                    + InputData[i].Jap;
        }
        //[ii]평균
        {
            InputData[i].Avg =
                InputData[i].Tot / 2.0;
        }
        //[iii]학점
        {
            if(InputData[i].Avg > 90
                && InputData[i].Avg <= 100){
                InputData[i].Grade = 'A';
            }
            else if(InputData[i].Avg > 80){
                InputData[i].Grade = 'B';
            }
            else if(InputData[i].Avg > 70){
                InputData[i].Grade = 'C';
            }
            else if(InputData[i].Avg > 60){
                InputData[i].Grade = 'D';
            }
            else{
                InputData[i].Grade = 'F';
            }
        }
        //[iv]평균 반올림 : 3.5 -> 4
        {
            InputData[i].Avg =
                (int)(InputData[i].Avg + 0.5);
        }
    }
    return InputData;
}

//[!] 출력 전담용 함수 선언
void Output(
    struct Record objInputData[])
{
    int i;
    printf("\n처리 데이터 출력\n");
    printf("번호 영어 일어 총점 평균 학점\n");
    for(i = 0;i < N;i++){
        printf(
            "%4d %4d %4d %4d %4.1f %4c\n"
            , objInputData[i].Num
            , objInputData[i].Eng
            , objInputData[i].Jap
            , objInputData[i].Tot
            , objInputData[i].Avg
            , objInputData[i].Grade
            );
    }
    printf("\n원본 데이터 출력\n");
    for(i = 0;i < N;i++){
        printf("%d %d %d\n"
            , objInputData[i].Num
            , objInputData[i].Eng
            , objInputData[i].Jap);
    }
}
 
이전 글   다음 글 삭제 수정 답변 글쓰기 리스트

(댓글을 남기려면 로그인이 필요합니다.)

관련 아티클 리스트
  제       목 파일 작성자 작성일 조회
이전글 !. C언어 기초 문법 정리용 미니 프로젝트 : 테트리스 게임 만들기 - 레드플러스 2005-07-26 18564
  15. 실전 프로그램 제작(종합예제) - 레드플러스 2005-07-26 5373
  학점 계산 프로그램V0.1 학점계산프로그램.c(1 KB) 레드플러스 2005-11-15 5477
  학점 계산 프로그램V0.2 학점계산프로그램.xlsx(10 KB) 레드플러스 2005-11-16 4745
현재글 학점 계산 프로그램V0.3 - 레드플러스 2005-11-16 4789
  학점 계산 프로그램V0.0.1 - 레드플러스 2013-01-26 5693
  15.2. 체중 관리 프로그램 - 레드플러스 2005-11-16 4295
  체중 관리 프로그램 - 레드플러스 2005-11-17 4618
  파일 처리 사용 종합예제용 데이터파일 abc0003.txt(51 KB) 레드플러스 2005-11-22 4299
  성적관리(파일처리) 종합예제 작성용 abc0001.txt 파일 abc0001.txt(32 KB) 레드플러스 2005-11-29 4475
  거래처 관리 프로그램 작성용 데이터 파일(abc0002.txt) abc0002.txt(30 KB) 레드플러스 2005-12-01 4824
  기사_제1회_주유요금관리 : 문제, 데이터, 소스 기사_제1회_주유요금관리(1).zip(293 KB) 레드플러스 2006-10-31 4334
  가위바위보_C.c : C언어로 만든 초간단 가위 바위 보 게임 가위바위보_C.png(117 KB) 레드플러스 2014-06-03 7518
다음글 14. 기타 - 레드플러스 2005-07-26 5179
 
손님 사용자 Anonymous (손님)
로그인 Home