300x250
반응형

간단한 성적 관리 프로그램을 만들어 보았습니다.

내 학점을 계산하기  귀찮거나 그럴경우 이용하시면 괜찮을 것 같습니다.

 

grade.h

 

#include<stdio.h>
#include<stdlib.h>

#define A_PLUS 4.5
#define A   4
#define B_PLUS 3.5
#define B   3
#define C_PLUS 2.5
#define C   2
#define D_PLUS 1.5
#define D      1
#define F   0

#define MAX 10

typedef struct Grade
{
 double num;
 double total;

}GRADE;

void calc(int,int,GRADE *ga);

 

 

calc.c

 


void calc(int in1,int in2, GRADE *ga)

 
 switch(in2)  //성적번호입력
 {  
 case 1:
  ga[in1].num = A_PLUS;  //for문 안의 i값을 넘겨준다.
  break;
 case 2:
  ga[in1].num = A;
  break;
 case 3:
  ga[in1].num = B_PLUS;
  break;
 case 4:
  ga[in1].num = B;
  break;
 case 5:
  ga[in1].num = C_PLUS;
  break;
 case 6:
  ga[in1].num = C;
  break;
 case 7:
  ga[in1].num = D_PLUS;
  break; 
 case 8:
  ga[in1].num = D;
  break;
 case 9:
  ga[in1].num = F;
  break;
 }

  
}

 

main.c

 


void main()
{
 GRADE ga[MAX];

 int in;   //수강 학점입력
 int in_2;  //성적입력
 int in_3;  //해당 학점입력
 int in_4;  //총 수강 학점 입력
 int i;
 double result = 0;

 printf("----학점 계산 프로그램----\n");
 printf("총 몇과목 수강 하셧습니까? ");
 scanf("%d",&in);

 for(i=0;i<in;i++)
 {
  printf("성적 입력 하세요\n");
  printf("1.A+ 2.A 3.B+ 4.B 5.C+ 6.C 7.D+ 8.D 9.F\n");
  scanf("%d",&in_2);

  printf("몇학점 입니까 : ");
  scanf("%d",&in_3);
  calc( i, in_2, ga); 
 }

 printf("총 수강 학점을 입력 하세요 : ");
 scanf("%d",&in_4);

 for(i=0;i<in;i++)
 {
  ga[i].total = ga[i].num * in_3;
  result += ga[i].total;
 }
 
 printf("총점 : %0.2lf",result/in_4);

 printf("\n");
}

728x90
300x250
반응형

오랜만에 복습 할겸.

리눅스에서 라이브러리를 만들어 보려고 합니다.

함수를 라이브러리화 시켜서 공류를 해서 각각에서 쓸수 있도록 하려고 합니다.

나중에 Makefile 이 더 익숙해지면 아마 더 편해 지겠지만

일단 하드하게 직접 만들어 보도록 하겠습니다.~

 


머 이순서는 크게 중요치 않는데요, 저는 일단 헤더파일은 하나 생성 해주었습니다.

func_test.h 파일을 생성해서 내가 정의할 함수를 헤더에서 선언을 해주었습니다.

 


자 그리고, func_test.c 파일을 만들어서

내가 헤더에서 선언한 함수를 정의 하도록 하겠습니다.

이렇게 간단하게 덧셈과 뺄셈으로 정의를 해서

메인 소스에서 func1 func2함수를 사용하도록 할겁니다.

그리고 오브젝트 파일을 먼저 만듭니다.

 


자 사용하기에 앞서 이제 라이브러리를 만들겁니다. 위에  정의한대로 라이브러리를 만들건데요,

위에 보이는 명령어대로 정적 라이브러리를 만듭니다.

옵션에 대해서는 man ar 를 해보시면 더욱 자세히 알 수 있습니다.

그리고, 여기서 중요한것 라이브러리 명이니다. 저는

libfunc.a 라고 했는데요, 내가 만들 라이브러리 명에서 lib 이거는 무조건 해주셔야

만들수가 있습니다. 자 그러면 libfunc.a 라는 라이브러리가 생성이 되었습니다.

 

 

 

그러면 이제 func_main.c 소스를 만들어서 내가 직접 제작한

라이브러리를 사용하도록 하겠습니다.

func_test.c 에 정의된 함수를 사용할건데요, 보시면 func1 func2라는 함수를 사용합니다.

만약에 라이브러리화를 시키지 않았다면 오류가 발생하겠죠??

func_test.c가 선언된 헤더파일을 추가해주시고 프로그래밍 하시면 되겠습니다.

 


자 그리고 실행파일을 만들도록 하겠습니다. 위에 보이는 명령어 되로 실행하시면되겠고,

-L./ -lfunc :현재 경로에서 라이브러리를 추가한다는 것입니다.

만들때는 libfunc.a 라고 했지요? 명령어를 사용하여 최종 만들때는 lib -> l로 변경하여 이렇게 추가 해주시면 됩니다.

 

그리고 실행을 해보시면 결과값이 출력이 됩니다.

 

이상 포스팅을 마치겠습니다^^

728x90

+ Recent posts