본문 바로가기
  • _^**_
무근본 IT 지식 공유

시스템 프로그래밍 makefile 간단 문제 예시

by 크리드로얄워터 2023. 9. 19.
반응형

[문제]


메인함수: 변수 a, b, c
함수1:
- 변수 x
- ax^2+bx+c에 대한 결과 출력

함수2:
- 변수 x, y
- ax+by+c에 대한 결과 출력

함수3:
- ax^2+bx+c 함수의 두 해를 출력(근해 공식)

a, b, c, x, y의 값은 임의로 지정

Makefile 및 소스코드 포함
Makefile은 clean 명령어가 포함되어야 하고, 실행파일을 제외한 object 파일을 삭제 해야 함
제출은 tar 파일 하나로 제출하며, tar파일에 제출에 필요한 파일들이 포함 되어야 함


-------------------------------------------

main.c

#include <stdio.h>
#include "functions.h"

int main() {
    double a = 1, b = 2, c = 1; // 임의의 값
    double x = 3, y = 4; // 임의의 값
    
    printf("Function 1 Result: %f\n", func1(a, b, c, x));
    printf("Function 2 Result: %f\n", func2(a, b, c, x, y));

    double root1, root2;
    func3(a, b, c, &root1, &root2);
    printf("Roots of the equation: %f and %f\n", root1, root2);
    return 0;
}

Functions.h

double func1(double a, double b, double c, double x);
double func2(double a, double b, double c, double x, double y);
void func3(double a, double b, double c, double* root1, double* root2);

Functions.c

#include <math.h>
#include "functions.h"

double func1(double a, double b, double c, double x) {
    return a * x * x + b * x + c;
}

double func2(double a, double b, double c, double x, double y) {
    return a * x + b * y + c;
}

void func3(double a, double b, double c, double* root1, double* root2) {
    double discriminant = b * b - 4 * a * c;
    *root1 = (-b + sqrt(discriminant)) / (2 * a);
    *root2 = (-b - sqrt(discriminant)) / (2 * a);
}

Makefile

all: program

program: main.o functions.o
    gcc -o program main.o functions.o -lm

main.o: main.c
    gcc -c main.c

functions.o: functions.c
    gcc -c functions.c

clean:
    rm -f *.o program



모든 파일들은 동일한 디렉토리에 저장되어야 합니다.

제출을 위한 `tar` 파일을 만들려면, 터미널에서 다음 명령어를 실행하세요:


tar cvfz program.tar.gz main.c functions.c functions.h Makefile


이제 `program.tar.gz`라는 이름의 tar 파일이 생성되었으며, 이 파일에는 모든 필요한 소스 파일과 Makefile이 포함되어 있습니다.
반응형

댓글