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;
}



+ Recent posts