1. 0이 아닌 3개의 좌표값(x1,y1)(x2,y2)(x3,y3)를 입력받아서 삼각형을 만들 수 있는지를 검사하는 프로그램을 작성하라.
// (x1,y1), (x2, y2) 두점으로선의기울기는(y2-y1)/(x2-x1) 이다.
#include<iostream>
using namespace std;
void main()
{
int x[4] = {0}; // x좌표저장
int y[4] = {0}; // y좌표저장
double g[3]; // gradient(기울기)
double check; // 0 계산을 방지
for(int i=1; i<= 3; i++) // 3개의좌표값을입력받는다.
{
cout<<"x"<<i<<"과"<<"y"<<i<<"의좌표를입력하시오. : ";
cin>>x[i]>>y[i];
} cout<<endl;
for(int i=1; i< 3; i++) // 오류를체크
{
check = (double) (x[i+1] - x[i]);
// 정수를 0으로나누면에러나서미리방지.
if( check == 0 ) // 0으로 연산시 종류시킨다.
{
cout<<"정수를0으로나누게되어서종료합니다.\n"<<endl;
break;
}
else
{
g[i] = (double) ( (y[i+1] - y[i]) / (x[i+1] - x[i]) );
continue;
}
}
if(g[1] == g[2])
cout<<"삼각형이될수없습니다. !!"<<endl;
else
cout<<"삼각형이될수있습니다. !!\n" << endl;
}
2. 0과 1로 되어 있는 2진수를 입력 받아서 10진수로 변환하는 프로그램을 작성하여보자.
여기서 2진수 문자열로 입력받는 것이 아니라 정수로 입력받는다고 가정하라. 따라서 나머지 연산자 %와 나누기 연산자 /를 이용하면 2진수의 각 자리수를 분리할 수 있다.
#include <iostream>
using namespace std;
void main()
{
int num, i=0, j=0, temp;
int bcd=1, arr[200]={0}, result=0;
cout<<"2진수(0과1)를입력하시오: "
cin>>num; cout<<endl;
temp = num;// 2진수값저장
while(num) // num 을계속초기화하면서0이되면정지한다.
{
arr[i] = num % 10; // 나머지연산자로1값부터하나씩넣음
num = num / 10;
i++;
}
while(i--)
{
result += arr[j] * bcd; // 10진수로변환
bcd*=2; // 자릿수를올린다.
j++;
}
cout<<"입력한2진수"<<temp <<" 는10진수로"<<result<<"입니다."<< endl;
}
#include<iostream>
using namespace std;
#define PI 3.14
void main()
{
int width, height, result;
char check=NULL;
cout<<"사각형(R), 삼각형(T), 원(C)입니다."<<endl;
cout<<"면적을구할도형을선택하시오. : "
cin >> check; cout<<endl;
if(check == 'C' || check == 'c')
{
cout<<"반지름(원) 길이를입력하시오.: " cin>>width;
}
else
{
cout<<"가로,세로(사각형), 밑변,높이(삼각형) 길이를입력하시오. : " cin>>width>>height;
}
switch(check)
{
case 'R' :
case 'r' :
result = width * height;
cout<<"사각형의면적은"<<result<<"cm입니다."<<endl<<endl;break
case 'T' :
case 't' :
result = width * height /2 ;
cout<<"삼각형의면적은"<<result<<"cm입니다."<<endl<<endl;break
case 'C' :
case 'c' :
result = width * width * PI ;
cout<<"원의면적은"<<result<<"cm입니다."<<endl<<endl;break
default :
cout<<"잘못입력했습니다. !!!! R, T, C 중입력하시오. "<<endl;break
}
}
4. 컴퓨터와 가위, 바위, 보 게임을 하는 프로그램을 작성하라. 컴퓨터는 사용자에게 알리지 않고 가위, 바위, 보 중에서 임으로 하나를 선택한다. 사용자는 프로그램의 입력 안내 메시지에 따라서, 3개 중에서 하나를 선택한다. 사용자의 선택이 끝나면 컴퓨터는 누가 무엇을 선택하였고, 누가 이겻는지, 비겻는지를 알려준다.
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
void main()
{
int user, com;
srand((unsigned)time(NULL)); // 시간을기준으로난수생성
while(1)
{
com = rand() % 3 +1;
cout<<"가위(1) 바위(2) 보(3) 종료(4) 입력하시오. : "
cin>>user; cout<<endl;
if(user == 4) // 프로그램종료
{
cout<<"프로그램을종료합니다."<<endl<<endl;break
}
else if( user != 1 && user != 2 && user != 3 ) // 재입력
{
cout<<"잘못입력했습니다."<<endl<<endl;continue
}
else if(user == com) // 무승부
{
cout<<"컴퓨터vs 사람결과는Draw!!"<<endl<<endl; continue
}
else // 그외처리
{
if(com == 1) // 컴퓨터가위
{
if(user == 2)
cout<<"User 의승리입니다. 축하드립니다^^\n\n"
else if(user == 3)
cout<<"컴퓨터의승리입니다. 다음기회에..\n\n"
}
else if(com == 2) // 컴퓨터바위
{
if(user == 1)
cout<<"컴퓨터의승리입니다. 다음기회에..\n\n"
else if(user == 3)
cout<<"User 의승리입니다. 축하드립니다^^\n\n"
}
else// 컴퓨터보
{
if(user == 1)
cout<<"User 의승리입니다. 축하드립니다^^\n\n"
else if(user == 2)
cout<<"컴퓨터의승리입니다. 다음기회에..\n\n"
}
}
}
#include <iostream>
using namespace std;
void main()
{
int num, i=0;
int arr[255]={0};
char cnum[10][6] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
cout<<"정수를입력하시오: " cin >> num;cout<<endl;
while(num)
{
arr[i] = num % 10;
num = num / 10;
i++;
}
while(i--)
{
cout<< cnum[arr[i]]<<" "
}
cout<<endl;
}