//============================================================================
//  제출일 : 2005. 4. 12
//  작업환경 :  Windows XP SP1, VC++ 6.0, Pentium4
//  연습문제 9-67
//============================================================================

#include <iostream.h>

int get_gcd(int a, int b); //recursive fuction

int main()
{
 int gcd;
 int a, b;

 cout << "input factor A : ";
 cin >> a;
 cout << "input factor B : ";
 cin >> b;

 gcd = get_gcd(a, b);
 cout << "gcd is " << gcd << endl;
 cout << "lcm is " << a*b/gcd << endl;

 return 0;
}

int get_gcd(int a, int b) //get gcd by recursive
{
 if (a ==0 || b == 0)
  return a+b;
 else if (a >= b)
  return get_gcd(a%b, b);
 else
  return get_gcd(b%a, a);
};


 

Posted by 지그프리드 지그프리드

댓글을 달아주세요:: 네티켓은 기본, 스팸은 사절

//============================================================================
//  제출일 : 2005. 3. 12
//  작업환경 :  Windows XP SP1, VC++ 6.0, Pentium4
//  연습문제 4-41
//  : Call by Reference를 사용하기 위하여 메인함수에 값을 받아오는 함수를
//    추가하였습니다. 클래스 구조를 사용할 경우 굳이 사용할 필요는 없습니다만
//    주어진 조건에 충실하기 위하여 추가하였습니다.
//============================================================================


#include <iostream.h>
#include <iomanip.h>
#define LABOR 0.35  //고정변수 : Labor cost per sqare fit
#define TAX 8.5 //%  //고정변수 : Tex rate

class Bill    //청구서를 발행하는 클래스
{
 public:
  Bill();
  ~Bill();
  void setData(int _length, int _width, int _discount, float carpet); //사용자로부터 읽어온 값을 클래스의 데이터로 set함
  void calculate(void);            //계산 시작
  void printResult(void);            //결과 출력

 private:
  int length;
  int width;
  int discount;
  int area;
  float carpet;
  float carpet_cost;
  float labor_cost;
  float intalled_price;
  float discount_cost;
  float subtotal;
  float tax;
  float total;

  void calcInstall(void);            //계산에 필요한 세 가지 함수
  void clacSubTotal(void);
  void calcTotal(void);
};

Bill::Bill() //생성자
{}    //Do nothing
 
Bill::~Bill() //소멸자
{}    //Do nothing

void Bill::setData(int _length, int _width, int _discount, float _carpet)  //입력받은 변수를 저장하는 함수
{
 length = _length;
 width = _width;
 discount = _discount;
 carpet = _carpet;
 return;
}

void Bill::calculate(void)              //계산의 시작
{
 calcInstall();
 clacSubTotal();
 calcTotal();
 return;
}

void Bill::calcInstall(void)             //시설비 계산
{
 area = length * width;
 carpet_cost = area * carpet;
 labor_cost = (float)(area * LABOR);
 intalled_price = carpet_cost + labor_cost;
 return;
}

void Bill::clacSubTotal(void)             //SubTotal 계산
{
 discount_cost = intalled_price * discount/100;
 subtotal = intalled_price - discount_cost;
 return;
}

void Bill::calcTotal(void)              //Total 계산
{
 tax = (float)(subtotal * TAX/100);
 total = subtotal + tax;
 return;
}

void Bill::printResult(void)             //결과의 출력
{
 cout << "\n\n\t\tMEASUREMENT\n";
 cout.setf( ios::right); //오른쪽 정렬
 cout <<"Length\t\t\t"<<setw(7)<<setfill(' ')<<length<<"\tfeet\n";
 cout <<"Width\t\t\t"<<setw(7)<<setfill(' ')<<width<<"\tfeet\n";
 cout <<"Area\t\t\t"<<setw(7)<<setfill(' ')<<area<<"\tfeet\n";

 cout << "\t\tCHAREGES\n\n";
 cout << "DESCRIPTION\tCOST/SQ.FT.\tCHARGE/ROOM\n";
 cout << "-----------\t-----------\t-----------\n";
 cout <<"Carpet\t\t"<<setw(11)<<setfill(' ')<< carpet<<"\t"<<setw(11)<<setfill(' ')<<carpet_cost<<"\n";
 cout <<"Labor\t\t"<<setw(11)<<setfill(' ')<< LABOR<<"\t"<<setw(11)<<setfill(' ')<<labor_cost<<"\n";
 cout <<"\t\t\t\t-----------\n";
 cout <<"INSTALLED PRICE\t\t\t"<<setw(11)<<setfill(' ')<<intalled_price<<"\n";
 cout <<"Discount\t"<<setw(10)<<setfill(' ')<< discount<<'%'<<"\t"<<setw(11)<<setfill(' ')<<discount_cost<<"\n";
 cout <<"\t\t\t\t-----------\n";
 cout <<"SUBTOTAL\t\t\t"<<setw(11)<<setfill(' ')<<subtotal<<"\n";
 cout <<"TAX\t\t\t\t"<<setw(11)<<setfill(' ')<<tax<<"\n";
 cout <<"TOTAL\t\t\t\t"<<setw(11)<<setfill(' ')<<total<<"\n";

 return;
}
//END of class Bill

//Subfunction of MAIN
void getData(int &_length, int &_width, int &_discount, float &_cost); //Call by Reference를 사용하기 위하여 추가한 함수

int main()
{
 int _length;              //Call by Reference를 사용하기 위하여 추가한 변수
 int _width;
 int _discount;
 float _carpet;
 getData(_length, _width, _discount, _carpet);      //사용자로부터 값을 입력받음
 Bill bill;               //클래스 생성
 bill.setData(_length, _width, _discount, _carpet);     //데이터 저장
 bill.calculate();             //계산  
 bill.printResult();             //결과 출력
 
 return 0;

}

//Subfunction of MAIN
void getData(int &_length, int &_width, int &_discount, float &_carpet) //Call by Reference를 사용하기 위하여 추가한 함수
{
 cout << "Length of room (feet)? ";
 cin >> _length;
 cout << "Width of room (feet)? ";
 cin >> _width;
 cout << "Customer discount (feet)? ";
 cin >> _discount;
 cout << "Cost per square foot (xxx.xx)? ";
 cin >> _carpet;
}

Posted by 지그프리드 지그프리드

댓글을 달아주세요:: 네티켓은 기본, 스팸은 사절

//============================================================================
//  제출일 : 2005. 3. 12
//  작업환경 :  Windows XP SP1, VC++ 6.0, Pentium4
//  연습문제 4-40
//============================================================================

#include <iostream.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>

int main()
{
 float number;
 int rand_num;
 float product;
                                //Process No.
 cout << "Enter a number\n"; //1
 cin >> number;    //2
 cout << number << "\n";  //3

 srand(time(NULL)); //Seed Initianlization //4
 rand_num = rand()%35+3; //Get a Random number
 cout << rand_num << "\n"; //5

 product = number * rand_num; //6
 cout << ceil(product)<< "\n"; //7
 cout << pow(number, 5)<< "\n"; //8
 cout << floor (product)<< "\n"; //9
 cout << pow(number, 5)<< "\n"; //10
 cout << sqrt(product)<< "\n"; //11

 return 0;
}


Posted by 지그프리드 지그프리드

댓글을 달아주세요:: 네티켓은 기본, 스팸은 사절

//============================================================================
//  제출일 : 2005. 3. 12
//  작업환경 :  Windows XP SP1, VC++ 6.0, Pentium4
//  연습문제 4-39
//============================================================================

#include <iostream.h>

void C2F(float input)    //썹씨를 화씨로 고치는 함수
{
 float output;
 output = 32 + input*(180/100); //변환식
 cout << output <<" F degree\n"; //출력
 return;
}

void F2C(float input)    //화씨를 썹씨로 고치는 함수
{
 float output;
 output = (input-32)*100/180; //변환식
 cout << output <<" C degree\n"; //출력
 return;
}

int main()
{
 float temp;
 cout << "Enter Centigrade temperature :\n";
 cin >> temp;
 C2F(temp);
 cout << "Enter Fathrenheit temperature :\n";
 cin >> temp;
 F2C(temp);


 return 0;
}

Posted by 지그프리드 지그프리드

댓글을 달아주세요:: 네티켓은 기본, 스팸은 사절

//============================================================================
//  제출일 : 2005. 3. 12
//  작업환경 :  Windows XP SP1, VC++ 6.0, Pentium4
//  연습문제 4-38
//============================================================================

#include <iostream.h>
#include <iomanip.h>
#include <fstream.h>
#include <string.h>
#include <stdlib.h>

float calc(float input);  //이자의 계산
void print(float input);  //출력

int main()
{
 float begining_balance;
 cout << "원금을 입력하세요\n";
 cin >> begining_balance;

 print(begining_balance); //출력 함수 호출

 return 0;
}


float calc(float input)   //이자 계산 함수
{
 return (float)(input * 0.053);
}

void print (float input)  //출력함수 : 이자 계산 함수 호출
{
 int loop ;
 cout << "============================|\n";
 cout << "|Quater| Interest |  Total  |\n";
 cout << "============================|\n";
 for (loop = 0; loop < 5 ; loop++)
 {
  cout.setf( ios::right, ios::adjustfield ); //오른쪽 정렬       
  cout <<'|'<<setw(6)<<loop <<'|';
  cout <<setw(10)<<calc(input)<<'|';   //이자의 계산
  input+=calc(input);       //계산된 이자를 원금에 합산
  cout <<setw(9)<<input<<"|\n";    //최종 잔액 출력
 }
 cout << "=================================\n";
}

Posted by 지그프리드 지그프리드

댓글을 달아주세요:: 네티켓은 기본, 스팸은 사절

//============================================================================
//  제출일 : 2005. 3. 12
//  작업환경 :  Windows XP SP1, VC++ 6.0, Pentium4
//  연습문제 4-37
//  data.txt로 부터 세일즈맨의 정보를 읽어와 처리함
//============================================================================

#include <iostream.h>
#include <iomanip.h>
#include <fstream.h>
#include <string.h>
#include <stdlib.h>

class Salesperson
{
 public:
  Salesperson();      //Default 생성자
  ~Salesperson();      //소멸자
  void init(char *data_string);  //한 줄을 입력 받아 Data를 변수에 저장
  void calc();      //계산을 수행하는 메쏘드
  void print();      //계산 내용을 출력하는 메쏘드

 private:
  char name[80];
  int sales;
  int bonus;
  float federal;
  float state;
  float retirement;
};

Salesperson::Salesperson()
{} //Do nothing

Salesperson::~Salesperson()
{} //Do nothing

void Salesperson::init(char *data_string) //파일로부터 Data를 읽어오는 생성자
{
 strcpy(name, strtok(data_string," \t"));
 sales = atoi(strtok(NULL," \t"));
 bonus = atoi(strtok(NULL," \t"));
}

void Salesperson::calc()     //계산 함수
{
 float total_income = (float)(sales*0.125 + bonus);
 federal = (float)(total_income * 0.25);
 state = (float)(total_income * 0.10);
 retirement = (float)(total_income * 0.08);
}

void Salesperson::print()      //화면 출력을 담당하는 함수
{
 cout.setf( ios::right, ios::adjustfield ); //오른쪽 정렬                                
 cout <<"| "<<setw(9)<<setfill(' ')<<name<<' '; //9칸의 공간을 할당, 여백을 ' '으로 채움
 cout <<"| "<<setw(7)<<setfill(' ')<<sales<<' ';
 cout <<"| "<<setw(7)<<setfill(' ')<<bonus<<' ';
 cout <<"| "<<setw(7)<<setfill(' ')<<federal<<' ';
 cout <<"| "<<setw(7)<<setfill(' ')<<state<<' ';
 cout <<"| "<<setw(8)<<setfill(' ')<<retirement <<" |\n";
}


int main()
{
 char buf[80];       //파일에서 한줄씩 읽기 위한 버퍼
 ifstream  file;       //file stream
 Salesperson salesperson;    //세일즈맨들의 정보를 저장, 계산하기위한 클래스
 file.open("data.txt", ifstream::in); //Data.txt File Open
 file.getline(buf, 80);     //첫번째 줄 무시
 file.getline(buf, 80);
 cout << "================================================================\n";
 cout << "|SALESPERSON|  SLAES  |  BONUS  | FEDERAL |  STATE  |RETIREMENT|\n";
 cout << "================================================================\n";

 do
 {
  salesperson.init(buf);
  salesperson.calc();
  salesperson.print();
 } while (file.getline(buf, 80)); //마지막 줄까지 읽으면서 새로운 데이터를 생성하고 출력함
 cout << "================================================================\n";

 return 0;
}

--------------------------------------------------------------------------------------

data.txt


salesperson sales   bonus
1           53500   425
2           41300   300
3           56800   350
4           36200   175

Posted by 지그프리드 지그프리드

댓글을 달아주세요:: 네티켓은 기본, 스팸은 사절

//============================================================================
//  제출일 : 2005. 3. 12
//  작업환경 :  Windows XP SP1, VC++ 6.0, Pentium4
//  연습문제 4-35
//============================================================================
#include <iostream.h>
#include <math.h>

float round(float num);

int main()
{
 float num;
 cout << "아무수나 입력하세요\n";
 cin >> num;

 cout << "Ceiling : " << ceil(num) << "\n";
 cout << "Floor : " << floor(num) << "\n";
 cout << "Round : " << round(num) << "\n";
 

 return 0;
}

float round(float num)
{
 float temp;
 temp = (int)num;
 temp = num - temp;
 
 if (num > 0)
 {
  if (temp >= 0.5)
   return ceil(num);
  else
   return floor(num);
 }
 else
 {  
  if (temp >= -0.5)
   return ceil(num);
  else
   return floor(num);
 }
}

Posted by 지그프리드 지그프리드

댓글을 달아주세요:: 네티켓은 기본, 스팸은 사절

//============================================================================
//  제출일 : 2005. 3. 12
//  작업환경 :  Windows XP SP1, VC++ 6.0, Pentium4
//  연습문제 4-33
//============================================================================

#include <iostream.h>
//using namespace std;

// Prototype Declarations
 int addThreeDigits (int num);
 int firstDigit (int);
 int secondDigit (int);
 int thirdDigit (int);

int main()
{
 cout << "Enter an integer: ";
 int number;
 cin >> number;

 int sum = addThreeDigits (number);
 cout << "\nSum of last three digits is: " << sum;
 return 0;
} //main

int addThreeDigits (int number)
{
 int result = firstDigit(number) + secondDigit(number) + thirdDigit(number);
 return result;
}

int firstDigit(int num)
{
 return (num % 10);
}

int secondDigit(int num)
{
 int result = (num / 10) % 10;
 return result;
}

int thirdDigit(int num)
{
 int result = (num /100) % 10;
 return result;
}

Posted by 지그프리드 지그프리드

댓글을 달아주세요:: 네티켓은 기본, 스팸은 사절


BLOG main image
일상, 프로그래밍, IT 그리고 직장생활, Dive, 여행 by 지그프리드

카테고리

Class List (402)
Studies (30)
Exercise & Quizz (10)
Term Project (0)
ECIM list (Help!) (10)
Issues & News (0)
Gossip about IT & Job (22)
Tools (2)
Think about the Justice (23)
Book Review (170)
조엘 온 소프트웨어(번역) (28)
Diary (87)
Vacations (9)
Clash of clans 클래시 오브.. (11)

글 보관함

달력

«   2019/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
Total : 315,601
Today : 3 Yesterday : 22