반응형
내 C++ style을 유지하고 기록하기 위해서 아카이브한다.
// 13
#include <iostream>
#include <string>
enum { 짬뽕 = 1, 짜장, 군만두, 종료 };
int main() {
std::cout << "***** 승리장에 오신 것을 환영합니다. *****\n";
while (true) {
int menu{};
std::cout << "짬뽕:1, 짜장:2, 군만두:3, 종료:4>> ";
std::cin >> menu;
if (menu == 종료) {
std::cout << "오늘 영업은 끝났습니다.\n";
break;
}
else if (menu > 4 || menu < 1) {
std::cout << "다시 주문하세요!!\n";
continue;
}
int num{};
std::cout << "몇인분?";
std::cin >> num;
switch (menu) {
case 짬뽕:
std::cout << "짬뽕 " << num << "인분 나왔습니다.\n";
break;
case 짜장:
std::cout << "짜장 " << num << "인분 나왔습니다.\n";
break;
case 군만두:
std::cout << "군만두 " << num << "인분 나왔습니다.\n";
break;
default:
}
}
}
//14
#include <iostream>
#include <string>
int main() {
std::cout << "에스프레소 2000원, 아메리카노 2300원, 카푸치노 2500원입니다.\n";
int sales{ 0 };
while (sales < 20000) {
std::cout << "주문: 커피이름>> ";
std::string coffee{ "" };
std::getline(std::cin, coffee);
int num{ 0 };
std::cout << "몇잔>>";
std::cin >> num;
std::cin.ignore();
int price{ 0 };
if (coffee == "에스프레소") {
price = 2000 * num;
}
else if (coffee == "아메리카노") {
price = 2200 * num;
}
else if (coffee == "카푸치노") {
price = 2500 * num;
}
std::cout << price << "원입니다. 맛있게 드세요\n";
sales += price;
}
std::cout << "오늘 " << sales << "원을 판매하여 카페를 닫습니다. 내일 봐요~~~\n";
}
// 15.. string을 다루는 C++에서는 여러 예외처리와 신경써야할 것들이 많다.
// 이 문제에서는 스트림 객체에 문자열 객체를 대입해서 문자열을 스트림으로 만든 것이다.
// std::istringstream은 input string stream으로 입력 문자열 스트림
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
int main() {
while (true) {
std::string expression{ "" };
std::cout << "? (type exit to exit): ";
std::getline(std::cin, expression);
if (expression == "exit")
break;
std::istringstream stream{ expression };
std::string temp{ "" };
stream >> temp;
int op1{ std::stoi(temp) };
char op{};
stream >> op;
stream >> temp;
int op2{ std::stoi(temp) };
switch (op) {
case '+':
std::cout << op1 << " " << op << " " << op2 << " = " << op1 + op2 << '\n';
break;
case '-':
std::cout << op1 << " " << op << " " << op2 << " = " << op1 - op2 << '\n';
break;
case '*':
std::cout << op1 << " " << op << " " << op2 << " = " << op1 * op2 << '\n';
break;
case '/':
if (op2 != 0)
std::cout << op1 << " " << op << " " << op2 << " = " << op1 / op2 << '\n';
else
std::cout << "can't be divided by zero. error occoured\n";
break;
case '%':
std::cout << op1 << " " << op << " " << op2 << " = " << op1 % op2 << '\n';
break;
default:
std::cout << "Enter the valid expression(ex. 2 + 10)\n";
}
}
}
// 16. google c++ style guide에 최대한 맞추느라, 가독성 올릴려고 좀 오래걸림..
#include <iostream>
#include <string>
#include <cctype>
int main() {
std::cout << "영문 텍스트를 입력하세요. 히스토그램을 그립니다.\n";
std::cout << "텍스트의 끝은 ; 입니다. 10000개까지 가능합니다.\n";
std::string sentence{ "" };
std::getline(std::cin, sentence, ';');
std::string::size_type sentence_len = sentence.length();
if (sentence_len == 0)
return 1;
int alphabet_set[26]{ 0 };
int alphabet_set_len{ 26 };
int alphabet_count{ 0 };
for (int i = 0; i < sentence_len; i++) {
sentence[i] = std::tolower(sentence[i]);
if (sentence[i] >= 'a' && sentence[i] <= 'z') {
alphabet_set[sentence[i] - 'a']++;
alphabet_count++;
}
}
std::cout << "총 알파벳 수 " << alphabet_count << "\n\n";
for (int i = 0; i < alphabet_set_len; i++) {
std::cout << static_cast<char>((i + 'a')) << " (" << alphabet_set[i] << ")\t: ";
for (int j = 0; j < alphabet_set[i]; j++)
std::cout << "*";
std::cout << '\n';
}
}
반응형
댓글