Cplusplus 중간

ChoRong0824·2023년 4월 9일
0

C

목록 보기
11/17
post-thumbnail

명품 Cplusplus 프로그래밍 실습 문제

2-16

#include <iostream>
#include <cstring>
using namespace std;

int main() {

    // countStack: 알파벳의 빈도수를 저장할 변수
    // numCount: 입력받은 문자열에서 알파벳의 개수를 저장할 변수
    // buf: 입력받은 문자열을 저장할 배열
    int countStack = 0, numCount = 0;
    char buf[10000];

    // 사용자에게 입력을 요구하는 메시지 출력
    cout << "영문 텍스트를 입력하세요. 히스토그램을 그립니다." << endl;
    cout << "텍스트의 끝은 ; 입니다. 10000개까지 가능합니다." << endl;

    // 입력 받은 문자열을 ';'을 기준으로 읽어들임
    cin.getline(buf, 10000, ';');

    // 입력 받은 문자열에서 알파벳의 개수를 계산함
    for (int i = 0; i <= strlen(buf); i++)
    {
        // isalpha(): 문자가 알파벳인지 검사하는 함수
        if (isalpha(buf[i]) != 0)
        {
            // tolower(): 문자를 소문자로 변환하는 함수
            buf[i] = tolower(buf[i]);
            numCount++;
        }
    }

    // 총 알파벳 개수 출력
    cout << "총 알파벳 수 " << numCount << endl;

    // 알파벳 별로 빈도수를 계산하고, 히스토그램을 출력함
    for (char i = 'a'; i <= 'z'; i++)
    {
        for (int j = 0; j <= strlen(buf); j++)
            if (buf[j] == i)
                countStack++;
        // 해당 알파벳과 빈도수 출력
        cout << i << "(" << countStack << ")" << " : ";
        // 빈도수에 맞게 '*'을 출력함
        for (int k = 0; k < countStack; k++)
            cout << "*";
        cout << endl;
        // countStack 초기화
        countStack = 0;
    }
}

3-9

#include <iostream>

using namespace std;

class Oval{
public:
    int width, height;
    Oval();
    //너비와 높이의 값을 매개변수로 받는 생성자
    Oval(int w,int h);
    ~Oval();
    double getWidth();
    double getHeight();
    void set(int w, int h);
    void show();

};
// 매개변수 없는 생성자
Oval::Oval(){
    width =1;
    height =1;
}
Oval::Oval(int w, int h){
    width = w;
    height =h;
}
// 소멸자
Oval::~Oval(){
    cout << "소멸자 :";
    show();
}
double Oval::getWidth(){
    return width;
}
double Oval::getHeight(){
    return height;
}
void Oval::set(int w, int h){
    width =w; height =h;
}
void Oval::show(){
    cout <<"widht = "<< width << ", height= " << height <<endl;
}

int main(){
    Oval a,b(3,4);
    a.set(10,20);
    a.show();
    cout << b.getWidth() << "," << b.getHeight() << endl;
}

3-10
(1)

#include <iostream>
#include <string>

using namespace std;

int a,b;
int n1,n2;

class Add{
public:

    void setValue(int x, int y){
        a = x;
        b = y;
    }
    int calculate(){
        return a+b;
    }
};
class Sub{
public:
    void setValue(int x, int y){
        a =x ;
        b =y;
    }
    int calculate(){
        return a-b;
    }

};
class Mul{
public:
    void setValue(int x, int y ){
        a =x ;
        a =y ;
    }
    int calculate(){
        return a*b;
    }

};
class Div{
public: 
    void setValue(int x, int y){
        a =x;
        b =y;
    }
    int calculate(){
        return a/b;
    }

};


int main(){
    
    Add a;
    Sub s;
    Mul m;
    Div d;
    // 프로그램은 무한루프를 돌아야함.
    while (true){
        cout << "두 정수와 연산자를 입력하세요>>\n";
        // 산술연산의 부호를 index로 받을예정임.
        char index;
        cin >> n1 >> n2 >> index;
        
        switch (index){
        case '+': 
        // 각 경우마다 클래스를 세팅해줘야함. (경우의 수 마다 각각 )
            a.setValue(n1,n2);
            cout << a.calculate() << endl;
            break;
        case '-':
            s.setValue(n1,n2);
            cout << s.calculate()<< endl;
        case '*':
            m.setValue(n1,n2);
            cout << m.calculate() <<endl;
        case '/':
            d.setValue(n1,n2);
            cout << d.calculate() <<endl;
        default:
            break;
        }
    }
    return 0;
}

// 2번 풀이
#include <iostream>
#include <string>

using namespace std;

int a,b;
int n1,n2;

class Add{
public:

    void setValue(int x, int y){
        a = x;
        b = y;
    }
    int calculate(){
        return a+b;
    }
};
class Sub{
public:
    void setValue(int x, int y){
        a =x ;
        b =y;
    }
    int calculate(){
        return a-b;
    }

};
class Mul{
public:
    void setValue(int x, int y ){
        a =x ;
        b =y ;
    }
    int calculate(){
        return a*b;
    }

};
class Div{
public: 
    void setValue(int x, int y){
        a =x;
        b =y;
    }
    int calculate(){
        return a/b;
    }

};


int main(){
    
    Add a;
    Sub s;
    Mul m;
    Div d;
    // 프로그램은 무한루프를 돌아야함.
    while (true){
        cout << "두 정수와 연산자를 입력하세요>>\n";
        // 산술연산의 부호를 index로 받을예정임.
        char index;
        cin >> n1 >> n2 >> index;
        
        if (index =='+'){
            a.setValue(n1,n2);
            cout << a.calculate()<< endl;
        }else if (index =='-'){
            s.setValue (n1,n2);
            cout << s.calculate() << endl;
        }else if(index=='*'){
            m.setValue(n1,n2);
            cout << m.calculate() << endl;
        }else if(index == '/'){
            d.setValue(n1,n2);
            cout << d.calculate() << endl;
        }else continue;
        
    }
    return 0;
}

(2)

//Add.h

#ifndef ADD_H
#define ADD_H

class Add {
	int a;
	int b;
public:
	void setValue(int x, int y);
	int calculate();
};

#endif

//Add.cpp

#include "Add.h"

void Add::setValue(int x, int y) {
	a = x;
	b = y;
}

int Add::calculate() {
	return a + b;
}

//Sub.h

#ifndef SUB_H
#define SUB_H

class Sub {
	int a;
	int b;
public:
	void setValue(int x, int y);
	int calculate();
};

#endif

//Sub.cpp

#include "Sub.h"

void Sub::setValue(int x, int y) {
	a = x;
	b = y;
}

int Sub::calculate() {
	return a - b;
}

//Mul.h

#ifndef MUL_H
#define MUL_H

class Mul {
	int a;
	int b;
public:
	void setValue(int x, int y);
	int calculate();
};

#endif

//Mul.cpp

#include "Mul.h"

void Mul::setValue(int x, int y) {
	a = x;
	b = y;
}

int Mul::calculate() {
	return a * b;
}

//Div.h

#ifndef DEV_H
#define DEV_H

class Div {
	int a;
	int b;
public:
	void setValue(int x, int y);
	int calculate();
};

#endif

//Div.cpp

#include "Div.h"

void Div::setValue(int x, int y) {
	a = x;
	b = y;
}

int Div::calculate() {
	return a / b;
}

//main.cpp

#include <iostream>
using namespace std;

#include "Add.h"
#include "Sub.h"
#include "Mul.h"
#include "Div.h"

int main(void) {

	Add a;
	Sub s;
	Mul m;
	Div d;

	int num1, num2;
	char oper;

	while (true) {
		cout << "두 정수와 연산자를 입력하세요>>";
		cin >> num1 >> num2 >> oper;
		switch (oper) {
		case '+':
			a.setValue(num1, num2);
			cout << a.calculate() << endl;
			break;
		case '-':
			s.setValue(num1, num2);
			cout << s.calculate() << endl;
			break;
		case '*':
			m.setValue(num1, num2);
			cout << m.calculate() << endl;
			break;
		case '/':
			d.setValue(num1, num2);
			cout << d.calculate() << endl;
			break;
		}
	}

	return 0;
}

4-9

#include <iostream>

using namespace std;

// Person 클래스 정의
class Person{
    // name과 tel 필드를 private 으로 선언
    string name;
    string tel;
public:
    // 생성자 정의
    Person();
    // 이름 getter
    string getName(){
        return name;
    }
    // 전화번호 getter
    string getTel(){
        return tel;
    }
    // 이름과 전화번호 setter
    void set(string name, string tel);
};

// 생성자 정의
Person::Person(){

}

// 이름과 전화번호 setter
void Person::set(string name, string tel){
    this -> name = name;
    this -> tel = tel;
}

// 메인 함수 시작
int main(){
    string name, tel;
    // Person 객체 배열 생성
    Person personArray[3];
    // 이름과 전화번호 입력 요청
    cout << "이름과 전화 번호를 입력해 주세요\n";
    
    // 3명의 이름과 전화번호를 입력 받음
    for (int i = 0; i < 3; i++)
    {
        cout << "사람" << i +1 << ">>";
        cin >> name >> tel;
        // Person 객체의 이름과 전화번호를 설정함
        personArray[i].set(name,tel);
    }
    // 모든 사람의 이름 출력
    cout << "모든 사람의 이름은";
    for (int i = 0; i < 3; i++)
    {
        cout << personArray[i].getName()<< ' ';
    }
    cout << endl;

    // 전화번호 검색을 위해 이름을 입력 받음
    cout << "전화번호 검색합니다. 이름을 입력하세요 >>";
    cin >> name;

    // 이름을 검색하고, 해당하는 전화번호 출력
    for (int i = 0; i < 3; i++)
    {
        if (name.compare(personArray[i].getName())==0){
            cout << "전화 번호는" << personArray[i].getTel()<<endl;
            break;
        }
    }

    return 0;
}
profile
컴퓨터공학과에 재학중이며, 백엔드를 지향하고 있습니다. 많이 부족하지만 열심히 노력해서 실력을 갈고 닦겠습니다. 부족하고 틀린 부분이 있을 수도 있지만 이쁘게 봐주시면 감사하겠습니다. 틀린 부분은 댓글 남겨주시면 제가 따로 학습 및 자료를 찾아봐서 제 것으로 만들도록 하겠습니다. 귀중한 시간 방문해주셔서 감사합니다.

0개의 댓글