본문 바로가기
개인공부/C++ 기초플러스

C++ Primer 06 Exercise

by 하고싶은건많은놈 2023. 2. 18.

01

#include <iostream>
#include <cctype>

int main()
{
	using namespace std;
	char ch;

	while (cin.get(ch) && ch != '@')
	{
		if (isupper(ch))
			cout << char (tolower(ch)) << endl;
		else if (islower(ch))
			cout << char (toupper(ch)) << endl;
	}
	return 0;
}

02

#include <iostream>

int main()
{
	using namespace std;
	double arr[10];

	int i = 0;
	double sum = 0;
	cout << "1번째 기부금을 기부금을 입력하세요 : ";
	while (i < 10 && cin >> arr[i])
	{
		sum += arr[i];
		i++;
		if (i < 10)
			cout << i + 1 << "번째 기부금을 입력하세요 : ";
	}
	if (i > 0)
	{
		double avg = sum / i;
		int cnt = 0;
		cout << "기부금들의 평균은 " << avg << "원입니다.\n";
		for (int j = 0; j < i; j++)
		{
			if (arr[j] > avg)
				cnt++;
		}
		cout << "평균보다 큰 기부금은 총 " << cnt << "개 입니다.\n";
	}
	else
		cout << "기부금이 없습니다.\n";
	return 0;
}

03

#include <iostream>

int main()
{
	using namespace std;
	char ch;
	
	cout << "다음 선택 사항 중에서 하나를 선택하십시오. (끝내려면 q)\n"
		 << "c) camera		p) pianist\n"
		 << "t) tree		g) game\n";
	cin >> ch;
	while (ch != 'c' && ch != 'p' && ch != 't' && ch != 'g' && ch != 'q')
	{
		cout << "c, p, t, g 중에서 하나를 선택하십시오. (끝내려면 q) : ";
		cin >> ch;
	}
	switch (ch)
	{
		case 'c' : cout << "camera\n";
			break;
		case 'p' : cout << "pianist\n";
			break;
		case 't' : cout << "tree\n";
			break;
		case 'g' : cout << "game\n";
			break;
		case 'q' : cout << "종료합니다.\n";
	}
	return 0;
}

04

#include <iostream>
const int strsize = 50;
struct bop
{
	char fullname[strsize];
	char title[strsize];
	char bopname[strsize];
	int preference;
};

int main()
{
	using namespace std;
	bop arr[5] = 
	{
		{"a", "A", "aa", 1},
		{"b", "B", "bb", 2},
		{"c", "C", "cc", 0},
		{"d", "D", "dd", 1},
		{"e", "E", "ee", 2}
	};

	char ch;

	cout << "Benevolent Order of Programmers\n"
		 << "a. 실명으로 열람		b. 직함으로 열람\n"
		 << "c. BOP 아이디로 열람	d. 회원이 지정한 것으로 열람\n"
		 << "q. 종료\n";
	cout << "원하는 것을 선택하십시오 : ";
	while (cin >> ch)
	{
		if (ch == 'q')
		{
			cout << "프로그램을 종료합니다.\n";
			break;
		}
		switch (ch)
		{
			case 'a' : {
				for (int i = 0; i < 5; i++)
					cout << arr[i].fullname << endl;
				break;
			}
			case 'b' : {
				for (int i = 0; i < 5; i++)
					cout << arr[i].title << endl;
				break;
			}
			case 'c' : {
				for (int i = 0; i < 5; i++)
					cout << arr[i].bopname << endl;
				break;
			}
			case 'd' : {
				for (int i = 0; i < 5; i++)
				{
					if (arr[i].preference == 0)
						cout << arr[i].fullname << endl;
					else if (arr[i].preference == 1)
						cout << arr[i].title << endl;
					else
						cout << arr[i].bopname << endl;
				}
				break;
			}
		}
		cout << "원하는 것을 선택하십시오 : ";
	}
	return 0;
}

05

#include <iostream>

int main()
{
	using namespace std;
	
	cout << "소득을 입력하세요 : ";
	int income;
	int tax;
	while (cin >> income && income > 0)
	{
		if (income <= 15000)
			tax = (income - 5000) * 0.1;
		else if (income <= 35000)
			tax = 10000 * 0.1 + (income - 20000) * 0.15;
		else
			tax = 10000 * 0.1 + 20000 * 0.15 + (income - 35000) * 0.2;
		cout << "소득세는 " << tax << "트바프입니다.\n";
	}
	cout << "프로그램을 종료합니다.\n";
	return 0;
}

06

#include <iostream>
#include <string>
struct donation
{
	std::string name;
	double money;
};

int main()
{
	using namespace std;

	cout << "기부할 사람의 수를 입력하세요 : ";
	int person;
	cin >> person;
	donation * dn = new donation [person];

	for (int i = 0; i < person; i++)
	{
		cout << i + 1 << "번 기부자의 이름을 입력해주세요 : ";
		cin >> dn[i].name;
		cout << i + 1 << "번 기부자의 기부금을 입력해주세요 : ";
		cin >> dn[i].money;
	}

	for (int i = 0; i < person; i++)
	{
		if (dn[i].money >= 10000)
			cout << "고액 기부자 " << dn[i].name << " : " << dn[i].money << "$ 기부\n";
	}
	for (int i = 0; i < person; i++)
	{
		if (dn[i].money < 10000)
			cout << "소액 기부자 " << dn[i].name << " : " << dn[i].money << "$ 기부\n";
	}
	if (person == 0)
		cout << "기부자가 없습니다.\n";
	return 0;
}

07

#include <iostream>
#include <cstring>

int main()
{
	using namespace std;

	char word[50];

	cout << "단어들을 입력하시오 (끝내려면 q) : \n";
	int vowel = 0, con = 0, etc = 0;
	while (cin >> word)
	{
		if (strcmp(word, "q") == 0)
			break;
		if (isalpha(word[0]))
		{
			word[0] = tolower(word[0]);
			if (word[0] == 'a' || word[0] == 'e' || word[0] == 'i' || word[0] == 'o' || word[0] == 'u')
				vowel++;
			else
				con++;
		}
		else
			etc++;
	}

	cout << "모음으로 시작하는 단어 수 : " << vowel << endl;
	cout << "자음으로 시작하는 단어 수 : " << con << endl;
	cout << "기타 : " << etc << endl;
	return 0;
}

08

#include <iostream>
#include <fstream>

int main()
{
	using namespace std;
	char filename[100];
	ifstream inFile;

	cout << "텍스트 파일의 이름을 입력하세요 : ";
	cin.getline(filename, 100);
	inFile.open(filename);
	if (!inFile.is_open())
	{
		cout << filename << " 파일을 열 수 없습니다." << endl;
		cout << "프로그램을 종료합니다.\n";
		exit(EXIT_FAILURE);
	}

	int count = 0;
	char ch;
	while (inFile.good())
	{
		inFile >> ch;
		++count;
	}
	if (inFile.eof())
		cout << "파일 끝에 도달했습니다.\n";
	else if (inFile.fail())
		cout << "데이터 불일치로 입력이 종료되었습니다.\n";
	else
		cout << "알 수 없는 이유로 파일 읽기가 종료되었습니다.\n";	
	
	if (count == 0)
		cout << "데이터가 없습니다.\n";
	else
		cout << "총 문자의 개수 : " << count << endl;
	return 0;
}

09

#include <iostream>
#include <string>
#include <fstream>
struct donation
{
	std::string name;
	double money;
};

int main()
{
	using namespace std;
	char filename[100];
	ifstream inFile;


	cout << "기부 정보를 파일로부터 가져옵니다. 파일 이름을 입력해주세요 : ";
	cin >> filename;
	inFile.open(filename);
	int person;
	inFile >> person;
	donation * dn = new donation [person];

	for (int i = 0; i < person; i++)
	{
		getline(inFile, dn[i].name);
		getline(inFile, dn[i].name);
		cout << dn[i].name << endl;
		inFile >> dn[i].money;
	}

	for (int i = 0; i < person; i++)
	{
		if (dn[i].money >= 10000)
			cout << "고액 기부자 " << dn[i].name << " : " << dn[i].money << "$ 기부\n";
	}
	for (int i = 0; i < person; i++)
	{
		if (dn[i].money < 10000)
			cout << "소액 기부자 " << dn[i].name << " : " << dn[i].money << "$ 기부\n";
	}
	if (person == 0)
		cout << "기부자가 없습니다.\n";
	return 0;
}

'개인공부 > C++ 기초플러스' 카테고리의 다른 글

C++ Primer 07 Exercise  (0) 2023.02.19
C++ Primer 07  (0) 2023.02.19
C++ Primer 06  (0) 2023.02.18
C++ Primer 05 Exercise  (0) 2023.02.18
C++ Primer 05  (0) 2023.02.18

댓글