C++ Primer 06 프로그래밍 연습
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;
}