본문 바로가기
대학/어서와 C++은 처음이지!

[어서와 C++은 처음이지!] chapter 02. 연습문제

by JJO.A 2022. 9. 27.

PROGRAMMING EXERCISE(p.117)

 

9번. 반복문을 이용하여 화씨 온도 0도부터 100까지의 구간에 대하여 10도 간격으로 섭씨 온도로 환산하는 표를 작성하라. c = (f-32.0) * 5.0 / 9.0; 수식으로 화씨 온도를 섭씨 온도로 변환할 수 있다.

 

코드

#include<iostream>
using namespace std;

int main() {
	int f = 0;	//화씨온도
	double c = 0;	//섭씨온도
	for (f; f < 100; f++) {
		if (f % 10 == 0 ) {	//10도 간격으로 구하기
			c = (f - 32.0) * 5.0 / 9.0;
			cout << f <<"°F == " << c << "°C" << endl;
		}
	}
}

 

실행 화면

 

PROGRAMMING EXERCISE .9번


PROGRAMMING EXERCISE(p.118)

13. 피보나치 수열을 계산하는 프로그램을 작성해보자. 피보나치 수열은 01부터 시작하며 앞의 두 수를 더하여 뒤의 수를 만든다.

[ 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, … ]

 

코드

#include <iostream>
using namespace std;

int Fibonacci(int n);
int main()

{
	int num, i;

	cout << "몇 항까지 구할까요: ";
	cin >> num;

	for (i = 0; i < num; i++)
		cout << Fibonacci(i) << "\t" ;

}
int Fibonacci(int n)

{
	if (n < 2)
		return n;
	else
		return Fibonacci(n - 1) + Fibonacci(n - 2);
}

실행화면

programming exercise(p.118) 13번


PROGRAMMING EXERCISE(p.119)

16. 라스베가스에서 50달러를 가지고 도박을 하는 사람이 있다. 한 번의 도박에 1달러를 건다고 가정하자. 돈을 따거나 잃을 확률은 0.5로 동일하다고 가정하자. 도박사는 가진 돈을 다 읽거나 목표 금액인 250달러에 도달하면 도박을 중지한다. 도박사가 목표 금액에 도달하는 확률이 얼마나 되는지를 계산해 보자.

 

코드

#include<iostream>
#include<cstdlib>
#include<ctime>

using namespace std;
int bets = 0;//배팅 횟수

int betFun();

int main() {
	
	int betSuccessCnt = 0;
	
	cout << "초기 금액 : $50" << endl;
	cout << "초기 금액 : $250" << endl;

	for (int i = 0; i < 1000; i++) {
		int a = betFun();

		if (a == 1) {
			betSuccessCnt++;
			//cout << betSuccessCnt;
		}
	}

	cout << "1000번 중에 " << betSuccessCnt << "번 승리" << endl;
	cout << "이긴 확률 = " << ((double)betSuccessCnt / 1000) *100<< endl;
	cout << "평균 배팅 횟수 : " << ((double)bets / 1000);
}

int betFun() {	//도박의 성공과 실패를 구하는 함수
	int cash = 50;	//금액
	
	srand((unsigned int)time(NULL)); //seed값으로 현재시간 부여

	while (1) {	//금액이 0 또는 250이 될때까지 도박을 반복함.
		bets++;
		if (cash == 250 || cash == 0) break;
		else {
			if ((double)rand() / RAND_MAX < 0.5)cash++;	//0.5보다 작을 경우 이겼다고 간주
			else cash--;	//그 외에 경우 졌다고 간주
		}
	}
	//cout << cash << endl;

	if (cash == 0) return 0;	//돈을 전부 잃었을 경우 '0'을 리턴
	else if (cash == 250) return 1;	//250원을 얻었을 경우 '1'을 리턴
}

실행화면

 

programming exercise(p.119) 16번