C++/Report

2장 연습문제

gandus 2010. 4. 2. 22:07

 

 

1. 다음과 같은 수식의 값을 계산하여 화면에 출력하는 프로그램을 작성하라.

 

 #include<iostream>

#include<cstdio>

using namespace std;

void main ()

{

long double result;

result = (3.32 * 0.001 * 9.76 * 0.00000001) / (9.12 * 1000000 * 9.76 + 1000000000);

cout<<result; // 지수가 많아서 부동소수점으로 표현

}

   

2-1. Cm로 표현된 키를 입력받아, 피트와 인치로 변환하는 프로그램을 작성해보자. 1피트는 12인치이고, 1인치는 2.54cm이다.

 

-> 키를 입력하시오. : 163

163cm는 5피트 4.17323 인치입니다.

 

2-2. 반대의 경우도 작성하여 보자. 즉 피트와 인치로 표현된 키를 cm단위로 변환하여 보아라.

 

-> 키를 입력하시오.(피트) : 5

키를 입력하시오.(인치) : 4

5피트 4인치는 162.560cm입니다.


#include
<iostream>

#include<cstdio>

 

#define CTOI 2.54 // Cm to inch

#define ITOF 12 // inch to feet

 

using namespace std;

 

void main ()

{

double height , intfeet;

double inch, feet;

 

cout<<"당신의키를입력하시오. : ";

cin>>height; cout<<endl;

 

feet = height / CTOI / ITOF; // 피트를 구함

intfeet = (int)feet; // 나머지를 구하기 위해 인트형변환

inch = (feet - intfeet) * ITOF; // 피트의 정수부분 외 나머지 구함

 

cout<<height<<"cm는"<<intfeet<<"피트"<<inch<<"인치입니다."<<endl<<endl;

 

cout<<"키를입력하시오(피트) : ";

cin>>feet;

cout<<"키를입력하시오(인치) : ";

cin>>inch;cout<<endl;

 

height = (inch + (feet * ITOF)) * CTOI;

 

printf("%.0f피트%.0f인치는%.3fcm입니다\n",feet, inch, height);

}

 

3. 10000보다 작은 정수를 입력받아서 이것을 천의자리, 백의자리, 십의자리, 일의자리로 분리하여 출력하는 프로그램을 작성하라. 즉 사용자가 정수 5623을 입력하면 5,6,3,2을 차례로 출력하면 된다. 이것은 나눗셈과 나머지 연산을 이용하면 된다.

 

-> 점수를 입력하시오 : 5623

천의 자리 : 5 백의 자리 : 6 십의 자리 : 2 일의 자리 : 3

 

 #include <iostream>

#include<cstdio>

using namespace std;

 

void main()

{

int num, i=0;

int arr[4]={0}; // 숫자를 담을 배열

char location[4][30] = {"일의자리","십의자리","백의자리","천의자리"};

// 자릿수를 배열로 정함

while(1)

{

cout <<"10000미만의정수를입력하시오: ";

cin >> num;

if( num < 10000 && num >= 0) break; // 제대로 받으면 빠져나감

cout <<"10000미만의정수를입력하시오!" <<endl<<endl;

}

while(num)

{

arr[i] = num % 10; // 배열[0]부터 일의 자리를 받음

num = num / 10; // 자릿수를 줄인다

i++;

}

for(i=3; i >= 0; i--)

{

cout <<location[i]<<" : " << arr[i] << endl;

// 출력문

}

 

cout<<endl;

}

  

4. 2년간의 이자를 계산하는 프로그램을 작성하여 보자. 사용자로부터 예금액, 연이율을 입력받아서 이자를 계산한다. 이자는 복리로 계산된다고 가정하라. 즉 첫해의 이자는 예금액에 이율을 곱하면 되지만 둘째 해의 이자는 예금액과 첫해의 이자를 더한 액수에 이율을 곱하여야 한다.

 

-> 예금액을 입력하시오. : 1000

연이율을 입력하시오(단위 퍼센트) : 5.0

2년 후의 예금액은 1102.5입니다.

 

#include<iostream>

#include<cstdio>

 

#define YEAR 2 // 년수를정의 및 수정 가능하도록

 

using namespace std;

void main()

{

double won,sum=0,rate;

 

cout<<"예금액을입력하시오. : ";

cin>>won;

cout<<"연이율을입력하시오.(단위퍼센트) : ";

cin>>rate;cout<<endl;

rate = rate * 0.01; // 퍼센트로변경

 

for(int i=0; i<YEAR; i++) // 원하는 년수만큼 이자를 구함

{

sum = (won * rate) + won; // 이자를구함

won = sum; // 복리를 위해서 won을 다시 정의

}

 

cout<<YEAR<<"년후의예금액은"<<sum<<"입니다."<<endl<<endl;

}

5. 조건 연산자 ?만을 이용하여 2차원 공간의 x좌표와 y좌표를 입력받아서 그 좌표가 속하는 사분면을 출력하는 프로그램을 작성하라.

 

좌표의 부호

사분면

x > 0 , y > 0

1 사분면

x < 0 , y > 0

2 사분면

x < 0 , y < 0

3 사분면

x > 0 , y < 0

4 사분면

->

 

  #include<iostream>

#include<string> // 문자열을사용

#include<cstdio>

 

using namespace std;

void main()

{

string name;

 

int x, y;

char quart[4][10] = {"1사분면","2사분면","3사분면","4사분면"};

// 배열에사분면저장

 

cout<<"x, y 좌표를차례대로입력하시오. : ";

cin>>x>>y; cout<<endl;

 

name = (x > 0) ? ((y > 0) ? quart[0] : quart[3]) : ((y > 0) ? quart[1] : quart[2]);

// x 가양수? 참이면y를비교해서y가양수면1, 음수면4사분면

// x 가음수? 참이면y를비교해서y가양수면2, 음수면3사분면

cout<< name;

}