1. 1바이트는 8개의 비트로 이루어집니다. 255는 8개 비트 전체가 1인
경우이고, 1은 최하위 1비트만 1인 경우입니다. 문자 ch의
켜진 비트 개수는 몇 개입니까? 켜진 비트는 1로 설정된
비트의 다른 표현입니다.
대문자 ‘A’의
값은 65이고 6번째와 1번째
비트가 켜져 있습니다.
Character.h
#ifndef CHARACTER_H
#define CHARACTER_H
class Character
{
public:
// 생성자
Character();
Character(char c);
// 소멸자
~Character();
void setChar(char c);
char getChar() const;
int bitCount() const;
protected:
char data;
};
#endif
Character.cpp
#include "Character.h"
void Character::setChar(char c)
{
data = c;
}
char Character::getChar() const
{
return data;
}
int Character::bitCount() const
{
int cnt = 0;
int tmp = 1;
for(int i = 0 ; i < 8 ; ++i)
{
if(data & tmp)
{
++cnt;
}
tmp <<= 1;
}
return cnt;
}
main.cpp
#include "Character.h"
#include <iostream>
using namespace std;
int main()
{
char c;
cout << "문자 입력: ";
cin >> c;
Character ch(c);
cout << "켜진 비트의 개수: " << ch.bitCount() << endl;
cout << "값: " << (int)ch.getChar() << endl;
return 0;
}
2. 정수 N이 소수입니까?
Integer.h
#ifndef INTEGER_H
#define INTEGER_H
class Integer
{
public:
// 생성자
Integer();
Integer(int num);
// 소멸자
~Integer();
// 멤버 함수
void setNum(int num);
int getNum() const;
int sumNum() const;
bool isPrime() const; // 소수 여부 확인 해주는 함수
protected:
int num;
};
#endif
Integer.cpp
#include "Integer.h"
void Integer::setNum(int num)
{
this -> num = num;
}
int Integer::getNum() const
{
return num;
}
int Integer::sumNum() const
{
int result;
int tmp = num;
result = tmp / 100; // 100자리
tmp %= 100;
result = result + (tmp / 10); // 100자리 + 10자리
tmp %= 10;
result += tmp; // 100자리 + 10자리 + 1자리
return result;
}
// 소수 여부 확인 해주는 함수
bool Integer::isPrime() const
{
int i;
if(2 == num)
{
return true;
}
else if(num % 2 == 0)
{
return false;
}
for(i = 3 ; i <= num ; i += 2)
{
if(num % i == 0)
{
break;
}
}
if(i == num)
{
return true;
}
else
{
return false;
}
}
Integer::Integer()
{
setNum(0);
}
Integer::Integer(int num)
{
setNum(num);
}
Integer::~Integer()
{
}
main.cpp
#include "Integer.h"
#include <iostream>
using namespace std;
int main()
{
int num;
cout << "정수 입력: ";
cin >> num;
Integer i(num);
if(i.isPrime())
cout << "결과 : 소수" << endl;
else
cout << "결과 : 합성수" << endl;
return 0;
}
3. 로또 번호 생성 프로그램
Lotto.h
#ifndef LOTTO_H
#define LOTTO_H
class Lotto
{
public:
// 생성자
Lotto();
// 소멸자
~Lotto();
// 멤버 함수
void createRandom();
void printNum() const;
protected:
int num[6];
bool sameNum(const int *arr, int size, int num) const;
};
#endif
Lotto.cpp
#include "Lotto.h"
#include <iostream>
#include <stdlib.h>
using namespace std;
bool Lotto::sameNum(const int *arr, int size, int num) const
{
for(int i = 0 ; i < size ; ++i)
{
if(arr[i] == num)
{
return 1;
}
}
return 0;
}
void Lotto::createRandom()
{
int tmp;
for(int i = 0 ; i < 6 ; ++i)
{
tmp = (rand() % 45) + 1;
while(sameNum(num, i + 1, tmp))
{
tmp = (rand() % 45) + 1;
}
num[i] = tmp;
}
}
void Lotto::printNum() const
{
for(int i = 0 ; i < 6 ; ++i)
{
cout.width(2);
cout << num[i] << " ";
}
cout << endl;
}
Lotto::Lotto()
{
createRandom();
}
Lotto::~Lotto()
{
}
main.cpp
#include "Lotto.h"
#include <iostream>
#include <time.h>
#include <stdlib.h>
using namespace std;
int main()
{
int cnt;
srand((unsigned int)time(NULL));
cout << "Enter the Game count: ";
cin >> cnt;
cout << "========================" << endl;
for(int i = 0 ; i < cnt ; ++i)
{
Lotto l;
l.printNum();
}
cout << "========================" << endl;
return 0;
}