안녕하세요. C언어를 한번 공부하고 나니 "C++도 한번 배워봐야겠다" 생각이 들더라고요. 여러 C++관련된 책들을 보다가 윤성우의 열혈 C++의 책이 평도 좋고 제 눈데 딱 들어왔습니다. 그래서 윤성우의 열혈 C++ 책을 공부하면서 해당 예제를 직접 풀고 관련된 개념과 제가 생각하기에 중요한 내용을 정리할 예정이에요. 방문해 주신분들 감사하고 그럼 시작하겠습니다.
문제 01-1[C++ 기반의 데이터 입출력]
문제 1
사용자로부터 총 5개의 정수를 입력 받아서, 그 합을 출력하는 프로그램을 작성해 보자.
제가 작성한 코드는 다음과 같습니다.
include<iostream>
//문제 1
//사용자로부터 총 5개의 정수를 입력 받아서, 그 합을 출력하는 프로그램을 작성해 보자
int main(void) {
int n1, n2, n3, n4, n5;
std::cout << "1번째 정수 입력: ";
std::cin >> n1;
std::cout << "2번째 정수 입력: ";
std::cin >> n2;
std::cout << "3번째 정수 입력: ";
std::cin >> n3;
std::cout << "4번째 정수 입력: ";
std::cin >> n4;
std::cout << "5번째 정수 입력: ";
std::cin >> n5;
int result=n1+n2+n3+n4+n5; //합계를 나타내기 위한 변수
std::cout << "합계: " << result << std::endl;
return 0;
}
결과
1번째 정수 입력: 1
2번째 정수 입력: 2
3번째 정수 입력: 3
4번째 정수 입력: 4
5번째 정수 입력: 5
합계: 15
먼저 위 문제의 의도는 std, cout, cin 이라는 함수를 사용할 수 있는가? 를 묻는 문제라고 생각됩니다. C++은 C언어의 printf, scnaf 와 다르게 cout, cin 을 통해 입출력을 하거든요. 5개의 정수를 받기 위해 해당 변수를 선언해 주고 cin이라는 함수를 통해 각각의 정수를 입력하고 그 값을 result라는 변수에 저장하여 cout을 통해 출력하도록 하였습니다.
여기서 C++가 C 보다 편리한 점이 나오는데요. 그것은 바로 printf나 scanf의 경우 해당 변수를 사용할 때 %d,%f 등 별도의 출력 포멧을 지정해야 하지만 cout이나 cin의 경우에는 바로 이런 별도의 출력포맷을 지정하지 않아도 된다는 점 입니다.
문제 2
프로그램 사용자로부터 이름과 전화번호를 문자열의 형태로 입력 받아서, 입력 받은 데이터를 그대로 출력하는 프로그램을 작성해 보자.
코드는 다음과 같습니다.
#include<iostream>
//문제 2번
int main(void) {
char name[100],number[100];
std::cout << "이름을 입력하시오: ";
std::cin >> name;
std::cout << "전화번호를 입력하시오: ";
std::cin >> number;
std::cout << "이름: " << name << std::endl;
std::cout << "전화번호: " << number << std::endl;
}
결과
이름을 입력하시오: hong_gil_dong
전화번호를 입력하시오: 010-1234-5678
이름: hong_gil_dong
전화번호: 010-1234-5678
2번 문제는 1번 문제와 매우 유사합니다. 굳이 차이가 있다면 변수가 문자열이라는 점 정도가 있겠네요. 위의 문제 코드를 이해하였다면 2번 문제의 코드를 이해하는데 어려움이 없을 것이라 생각이듭니다.
문제 3
숫자를 하나 입력 받아서 그 숫자에 해당하는 구구단을 출력하는 프로그램을 작성해 보자. 예를 들어서 사용자가 5를 입력한다면 구구단에서 5를 출력해야 한다.
코드는 다음과 같습니다.
#include<iostream>
//문제 3
int main(void)
{
int num; //입력받을 숫자
std::cout << "숫자를 입력하시오: ";
std::cin >> num;
std::cout << num << "단은 다음과 같다" << std::endl;
for (int i = 1;i < 10;i++) //for을 통해 구구단 표현
{
std::cout << num << 'x' << i << '=' << num * i << std::endl;
}
}
결과
숫자를 입력하시오: 5
5단은 다음과 같다
5x1=5
5x2=10
5x3=15
5x4=20
5x5=25
5x6=30
5x7=35
5x8=40
5x9=45
저는 입력한 숫자에 해당하는 구구단 프로그램을 작성하기 위해 "for" 라는 함수를 사용하였습니다. "while","do-while" 같은 반복문 함수로도 구현할 수 있겠네요. 제가 위 프로그램을 작성하면서 멍청한 실수를 하나 했습니다. 바로 공간의 여유를 두기위해 'x' 가 아닌 안에 한칸을 더 띄워서 'x '로 코드를 작성하였는데요. 이는 엄청 큰 차이가 있죠. 바로 ''안에는 하나의 문자만 들어가야된다는 점이에요. 어쩐지 숫자가 이상하게 나오더라고요.. 공간을 띄우려면 ""을 사용해야 합니다.
문제 4
판매원의 급여 계산 프로그램을 작성해 보자. 이 회사는 모든 판매원에게 매달 50만원의 기본 급여와 물품 판매 가격의 12%에 해당하는 돈을 지급한다. 예를 들어 민수라는 친구의 이번 달 물품 판매 금액이 100만원 이라면, 50+100*0.12=62, 따라서 62만원을 급여로 지급 받는다. 단, 이러한 급여의 계산은 -1이 입력될 때까지 계속 되어야 한다.
위 문제를 해결하기 위해서는 급여 계산에 해당하는 식과 -1 이 입력되면 프로그램이 종료되도록 알고리즘을 짜야겠군요.
코드는 다음과 같습니다.
#include<iostream>
//문제 4
int main(void)
{
int price=0; //물품 판매 금액
int salary;
while (price != -1)
{
std::cout << "판매 금액을 만원 단위로 입력(-1 to end): ";
std::cin >> price;
salary = 50 + 0.12 * price;
if (price != -1) {
std::cout << "이번 달 급여: " << salary << "만원" << std::endl;
}
else {
std::cout << "프로그램을 종료합니다."<<std::endl;
}
}
}
결과
판매 금액을 만원 단위로 입력(-1 to end): 100
이번 달 급여: 62만원
판매 금액을 만원 단위로 입력(-1 to end): 300
이번 달 급여: 86만원
판매 금액을 만원 단위로 입력(-1 to end): 50
이번 달 급여: 56만원
판매 금액을 만원 단위로 입력(-1 to end): -1
프로그램을 종료합니다.
'-1'이 입력되기 전까지 프로그램이 종료되지 않고 계속 급여를 계산해주는 프로그램을 만들기 위해 while문을 사용하였다. '-1'이 입력되면 "프로그램을 종료합니다"라는 부분을 구현하기 위해 while문 안에 if-else문을 넣어 이 부분을 구현하였다. while문 부분에서 입력한 price 값이 '-1'이 아니면 계속 while문은 반복하도록 if-else문도 위와 같은 원리다.
위의 4개의 문제를 풀어보며 느낀점은 C에서 배웠던 for,while,if-else 등의 함수와 C++에서 새로 배운 std,cout,cin 함수를 접목하여 문제를 풀게끔 하였던거 같다. 아직 std,cout,cin같은 함수들이 무슨 원리로 작동하는지 어떤 의미를 내포하고 있는지 <<,>>는 무슨 의미를 가지고 있는지 모른다. 하지만 어떤 상황에 쓰이고 어떻게 활용되는지는 그 감각을 향상시키는 파트였던거 같다.
'C++ 공부(윤성우 열혈 C++ 프로그래밍)' 카테고리의 다른 글
윤성우 열혈 C++ 프로그래밍[chapter 1 01-2~01-3문제] (0) | 2022.02.03 |
---|