[01-1] 문제

김민성·2022년 7월 10일
post-thumbnail

문제 1

사용자로부터 총 5개의 정수를 입력 받아서, 그 합을 출력하는 프로그램을 작성해 보자. 단, 프로그램의 실행은 다음과 같이 이뤄져야 한다.

1번째 정수 입력: 1
2번째 정수 입력: 2
3번째 정수 입력: 3
4번째 정수 입력: 4
5번째 정수 입력: 5
합계: 15

이는 데이터의 입력에 사용되는 std::cin을 활용하면 된다. 그리고 for문을 활용해 1번째부터 5번째까지 입력받으면 된다.

#include <iostream>

int main(void) {

    int num = 0;
    int input = 0;
    
    for(int i=0; i<5; i++) {
        std::cout<<i+1<<"번째 정수 입력: ";
        std::cin>>input;
        num+=input;
    }

    std::cout<<"합계: "<<num<<std::endl;

    return 0;
}

위는 교재 내의 답안이고, 나는 for문을 활용하지 않고 코드를 짰었다.

int main(void) {
    int num1=0;
    std::cout<< "1번째 정수 입력: ";
    std::cin>>num1;

    int num2=0;
    std::cout<< "2번째 정수 입력: ";
    std::cin>>num2;

    int num3=0;
    std::cout<< "3번째 정수 입력: ";
    std::cin>>num3;

    int num4=0;
    std::cout<< "4번째 정수 입력: ";
    std::cin>>num4;

    int num5=0;
    std::cout<< "5번째 정수 입력: ";
    std::cin>>num5;

    std::cout<<"합계: "<<num1+num2+num3+num4+num5<<std::endl;

    return 0;
}

결과는 같으나 for문을 활용한 코드가 짧고 간결해 더 좋은 코드 같다.

문제 2

프로그램 사용자로부터 이름과 전화번호를 문자열의 형태로 입력 받아서, 입력 받은 데이터를 그대로 출력하는 프로그램을 작성해 보자.

이 또한 문제1과 같이 데이터의 입력에 사용되는 std::cin을 활용하면 된다. 단, 이름과 전화번호를 문자열의 형태로 입력 받아야 한다.

#include <iostream>

int main(void) {
    char name[100];
    std::cout<<"이름을 입력하세요: ";
    std::cin>>name;

    char phoneNum[100];
    std::cout<<"전화번호를 입력하세요: ";
    std::cin>>phoneNum;

    std::cout<<"이름: " <<name<<std::endl;
    std::cout<<"전화번호: " <<phoneNum<<std::endl;

    return 0;

}

이름과 전화번호에 대한 변수를 할당해주고, 이를 입력받아서 출력해주는 형태이다.

문제 3

숫자를 하나 입력 받아서 그 숫자에 해당하는 구구단을 출력하는 프로그램을 작성해 보자. 예를 들어서 사용자가 5를 입력한다면 구구단에서 5단을 출력해야 한다.

지겹도록 한 예제이다. 구구단은 1~9까지 곱하는 형태를 취하는데, 특정 숫자 하나를 입력받아 이에 해당하는 구구단을 for문을 활용해 출력하면 되겠다.

#include <iostream>

int main(void) {
    int num =0;
    std::cout<<"숫자를 입력하세요: ";
    std::cin>>num;

    for(int i=1; i<10; i++) {
        std::cout<<num<<"x"<<i<<"="<<num*i<<std::endl;
    }

    return 0;
}

문제 4

판매원들의 급여 계산 프로그램을 작성해 보자. 이 회사는 모든 판매원에게 매달 50만원의 기본 급여와 물품 판매 가격의 12%에 해당하는 돈을 지급한다. 예를 들어서 민수라는 친구의 이번 달 물품 판매 금액이 100만원이라면, 50+100x0.12=62, 따라서 62만원을 급여로 지급 받는다. 단, 아래의 실행의 예에서 보이듯이 이러한 급여의 계산은 -1이 입력될 때까지 계속 되어야 한다.

판매 금액을 만원 단위로 입력(-1 to end): 100
이번달 급여: 62만원
판매 금액을 만원 단위로 입력(-1 to end): 200
이번달 급여: 74만원
판매 금액을 만원 단위로 입력(-1 to end): -1
프로그램을 종료합니다.

민수의 물품 판매금액을 입력 받고, -1을 입력 받으면 프로그램을 종료하게끔 짜야한다. -1이 입력 되지 않는 한, 프로그램은 계속 실행되게끔 코드를 구성하면 되겠다.

#include <iostream>

int CalSalary(int sales) {
    return (int)(50+sales*0.12);
}

int main(void) {
    int sales;
    
    while(1){
        std::cout<<"판매 금액을 만원 단위로 입력(-1 to end): ";
        std::cin>>sales;
        if(sales==-1) 
            break;

        std::cout<<"이번달 급여: ";
        std::cout<<CalSalary(sales)<<"만원"<<std::endl;
    }
    std::cout<<"프로그램을 종료합니다."<<std::endl;
    
    return 0;

}

위는 교재에서 제공하는 답안이다. 나는 또 다른 방식으로 코드를 짜보았다.

#include <iostream>

int main(void) {
    int sales=0;
    
    while(1){
        std::cout<<"판매 금액을 만원 단위로 입력(-1 to end): ";
        std::cin>>sales;
        if(sales==-1) {
                std::cout<<"프로그램을 종료합니다."<<std::endl;
                break;
        } else {
                std::cout<<"이번달 급여: "<<50+sales*0.12<<"만원"<<std::endl;
        }
    }

    return 0;
}

교재의 답안에는 급여를 계산하는 부분을 따로 함수로 작성해두었다. 내가 짠 코드는 함수로 따로 빼지 않고 main함수 내에 계산식을 직접 넣은 것이다.

profile
다양한 활동을 통해 인사이트를 얻는 것을 즐깁니다. 저 또한 인사이트를 주는 사람이 되고자 합니다.

0개의 댓글