실습(2023.01.03 ~ing)

최현진·2023년 1월 6일
0

ㅇMpeon

목록 보기
8/9

실습

지금까지 공부한 내용을 바탕으로 작은 프로젝트를 만들었다

요구사항

  • 간단한 사칙연산 프로그램
  • 연산기능들이 각기 다른 소스파일로써 존재할것
  • main함수에서는 입출력만을 담당할것
  • 정,동적 라이브러리를 생성할것
  • git,github에 업로드 해볼것

준비한 프로그램의 구조는 다음과 같다

각 헤더파일에는 값을 저장하는 클래스들이 있고,cal폴더의 cc파일에서 헤더를 포함하여 계산을 진행한다.
메인에서는 숫자를 입출력 할수있는 코드와 메뉴 항목을 추가했다.
예시로 들 add 함수(add.cc파일)
계산의 동작부이며 더하기 계산을 담당한다

add.h파일에서는 다음과같이 Add클래스를 생성하여 값을 저장해주고 setValue를 통해 메인에서 계산을 진행하게끔 해준다.

#include <cstdlib>
#include <iostream>

#include "logic/logic.h"

using namespace std;

char selectMenu();

int main(int argc, char *argv[])
{
    Add a;
    Sub s;
    Mul m;
    Div d;

    int x, y;

    while(1){


        cout<<"------ 사칙연산 프로그램 -----"<<endl;
        cout<<"두 정수를 입력하세요. : ";

        cin >> x >> y;

        switch(selectMenu()){
            case '1':{
                a.setValue(x, y);
                cout << "결과 : "<<a.calculate();
            }
            break;

            case '2':{
                s.setValue(x, y);
                cout << "결과 : "<<s.calculate();
            }
            break;

            case '3':{
                m.setValue(x, y);
                cout << "결과 : "<<m.calculate();
            }
            break;

            case '4':{
                d.setValue(x, y);
                cout << "결과 : "<<d.calculate();
            }
            break;

            case 'q' :
            return 0;
            break;
        }

        cout << endl;
        
        system("PAUSE");
        system("cls");
    }
    return EXIT_SUCCESS;
}

char selectMenu()
{
    char menu;
    cout<<"----------------------------------------\n";
    cout<<"1.덧    셈\n";
    cout<<"2.뺄    셈\n";
    cout<<"3.곱    셈\n";
    cout<<"4.나 눗 셈\n";
    cout<<"q.종    료\n";
    cout<<"----------------------------------------\n";
    cout<<"메뉴선택 : ";
    cin>>menu;

    return menu;
}

main.cc파일은 다음과 같은 코드를 가지고있다.

여러 조건중 git에 업로드해야하는 조건도 있었기에
git에 커밋,푸시해가면서 저장하며 여러장소에서 코딩을 진행했다.(회사컴퓨터,집 노트북)
그냥 레포지토리를 하나 더 만들수도 있지만, 기존에 사용하던 레포지토리 내에서 브랜치 만들기를 연습해보기 위해 브랜치를 따로 생성한 후 git으로 github에 연동시켜 업로드도 시켜보았다.

빌드는 cmake로 진행했으며 새로운 명령어인 source_group을 사용해보기 위해 main에서 참조할 cc파일들을 source_group명령어를 통해 참조시켜줬다
(main.cc를 빌드할 CMakeLists.txt파일)
중간에 오류가 발생했다.
cmake에서 참조시켜준 각 기능들과 함수가 undefined reference로 참조되었다.
읽어보니 cc파일에서 숫자를 입력받아 a 와 b를 각각 x와 y로 변환시켜주고 계산을 진행해 리턴시키는 코드가 메인에서 링킹이 안되는 문제였다.

------------------------------------2023.01.06

profile
Lorem ipsum dolor sit amet

0개의 댓글