1. 두 개의 정수를 입력받고 두 정수 사이에 5의 배수의 개수를 출력하는 프로그램을 작성하세요.(객체 생성)


 Count.h
#ifndef COUNT_H
#define COUNT_H

class Count
{
private:
  int num1;
  int num2;

public:
  // 생성자
  Count();
  Count(int x, int y);

  // 멤버 함수
  void setNum1(int num);
  void setNum2(int num);
  int fiveMultiple() const;  // 5의 배수 갯수를 구하는 멤버 함수
};

#endif

 Count.cpp
#include "Count.h"

void Count::setNum1(int num)
{
  num1 = num;
}

void Count::setNum2(int num)
{
  num2 = num;
}

// 2수 사이의 5의 배수 갯수를 구해주는 멤버 함수
int Count::fiveMultiple() const
{
  int iCnt = 0;

  for(int i = (num1 + 1) ; i < num2 ; ++i)
  {
    if(i % 5 == 0)
    {
      ++iCnt;
    }
  }
  return iCnt;
}

// 디폴트 생성자 정의
Count::Count()
{
  setNum1(0);
  setNum2(0);
}

// 인자가 있는 생성자 정의
Count::Count(int x, int y)
{
  // 큰 수를 Num1에 넣어준다
  if(x > y)
  {
    setNum1(y);
    setNum2(x);
  }
  else
  {
    setNum1(x);
    setNum2(y);
  }
}

 main.cpp
#include "Count.h"
#include <iostream>
using namespace std;

int main()
{
  int num1, num2;
  int result;

  cout << "정수(2개) 입력 : ";
  cin >> num1 >> num2;

  // Count 객체 생성
  Count c(num1, num2);
  
  result = c.fiveMultiple();
  cout << "출력 : " << result << endl;

  return 0;
}


2. 두 개의 정수를 입력받고 두 정수 사이의 부호를 다음과 같이 바꿔가면서 계산한 식과 결과를 출력하세요.

 CalcToggle.h
#ifndef CALCTOGGLE_H
#define CALCTOGGLE_H

class CalcToggle
{
private:  
  int num1;
  int num2;
public:
  // 생성자
  CalcToggle();
  CalcToggle(int x, int y);

  // 멤버 함수
  void setNum1(int num);
  void setNum2(int num);
  void toggleCalculate() const;
};

#endif

 CalcToggle.cpp
#include "CalcToggle.h"
#include <iostream>
using namespace std;

void CalcToggle::setNum1(int num)
{
  num1 = num;
}

void CalcToggle::setNum2(int num)
{
  num2 = num;
}

void CalcToggle::toggleCalculate() const
{
  int result = 0;
  int toggle = 1;

  cout << "X = ";
  for(int i = num1 ; i <= num2 ; ++i)
  {
    if(toggle)
    {
      result += i;
      toggle = 0;
      cout << " + " << i;
    }
    else
    {
      result -= i;
      toggle = 1;
      cout << " - " << i;
    }
  }
  cout << endl << "X = " << result << endl;
}

// 디폴트 생성자 정의
CalcToggle::CalcToggle()
{
  setNum1(0);  
  setNum2(0);  
}

// 인자가 있는 생성자 정의
CalcToggle::CalcToggle(int x, int y)
{
  // 큰수를 num1에 넣어준다
  if(x > y)
  {
    setNum1(y);
    setNum2(x);
  }
  else
  {
    setNum1(x);
    setNum2(y);
  }
}

 main.cpp
#include "CalcToggle.h"
#include <iostream>
using namespace std;

int main()
{
  int num1, num2;

  cout << "정수(2개) 입력: ";
  cin >> num1 >> num2;

  CalcToggle c(num1, num2);
  c.toggleCalculate();

  return 0;
}



3. 출현 빈도 그래프

    • 0에서부터 9까지의 60개의 수가 배열에 저장되어 있을 때, 배열 원소 60개의 합과 평균을 구하여 출력하고 각 수에 대한 빈도 수를 세어서 다음과 같이 막대 그래프 형식으로 출력하시오
    • 프로그램의 주요한 부분에 주석을 명시하시오.


 InfoArray.h
#ifndef INFOARRAY_H
#define INFOARRAY_H

class InfoArray
{
private:
  int array[60];
public:
  // 생성자
  InfoArray();

  // 멤버 함수
  void randArray();      // 멤버 변수에 랜덤수를 넣어준다
  void printArray() const;
  int sumArray() const;    // 멤버 변수에 저장되어 있는 각수의 합을 구해준다
  float averageArray() const;  // 멤버 변수에 저장되어 있는 각수의 평균을 구해준다
  void frequencyArray() const;  // 멤버 변수에 저장 되어 있는 수의 빈도 출력
};

#endif

 InfoArray.cpp
#include "InfoArray.h"
#include <iostream>
using namespace std;

// 멤버 변수에 0~9까지 난수 저장
void InfoArray::randArray()
{
  srand((unsigned int)time(NULL));

  for(int i = 0 ; i < 60 ; ++i)
  {
    array[i] = (rand() % 10);
  }
}

void InfoArray::printArray() const
{
  for(int i = 0 ; i < 60 ; ++i)
  {
    cout << array[i] << " ";
    if((i + 1) % 10 == 0)
    {
      cout << endl;
    }
  }
}

// 멤버 변수에 저장된 각 수의 합을 구한다.
int InfoArray::sumArray() const
{
  int sum = 0;

  for(int i = 0 ; i < 60 ; ++i)
  {
    sum += array[i];
  }

  return sum;
}

// 멤버 변수에 저장된 각 수의 평균을 구한다.
float InfoArray::averageArray() const
{
  float average;

  average = (float)sumArray() / 60;

  return average;
}

// 멤버 변수에 저장된 각 수의 빈도를 출력해 준다
void InfoArray::frequencyArray() const
{
  int fre[10= {};

  for(int i = 0 ; i < 60 ; ++i)
  {
    switch(array[i])
    {
      case 0:
        ++fre[0];
        break;
      case 1:
        ++fre[1];
        break;
      case 2:
        ++fre[2];
        break;
      case 3:
        ++fre[3];
        break;
      case 4:
        ++fre[4];
        break;
      case 5:
        ++fre[5];
        break;
      case 6:
        ++fre[6];
        break;
      case 7:
        ++fre[7];
        break;
      case 8:
        ++fre[8];
        break;
      default:
        ++fre[9];
    }
  }

  cout << "no\tcount\tbar graph" << endl;
  for(int i = 0 ; i < 10 ; ++i)
  {
    cout << i << "\t" << fre[i] << "\t";
    for(int j = 0 ; j < fre[i] ; ++j)
    {
      cout << "*";
    }
    cout << endl;
  }
}

// 디폴트 생성자
InfoArray::InfoArray()
{
  randArray();
}

 main.cpp
#include "InfoArray.h"
#include <iostream>
using namespace std;

int main()
{
  int sum;
  float average;

  InfoArray iA;

  iA.printArray();
  sum = iA.sumArray();
  average = iA.averageArray();  

  cout << "sum = " << sum << endl;
  cout << "average = " << average << endl;

  iA.frequencyArray();

  return 0;
}

+ Recent posts