/*
제 목 : 데이터구조 2주차 과제 vector를 활용한 코로나 확진자 리스트 만들기
기 능 : 정보를 입력 및 정렬 후 출력
파일이름 : 201622821_김영진_데이터구조_2주차과제.cpp
수정날짜 : 2020. 04. 09
작 성 자 : 김영진
*/
#include <iostream>
#include <string>
#include <algorithm>
#include <functional>
#include <vector>
using namespace std;
void print(); //출력함수 선언
typedef struct { //구조체 구현
string Country;
float Infected, Dead, Death_rate;
}C;
C Corona_World; //구조체 선언
vector<C> v_Corona_World; //vector 선언
//bool 함수 선언 및 정의
bool cmp_Country(const C& a, const C& b) { return a.Country < b.Country; }
bool cmp_Infected(const C& a, const C& b) { return a.Infected > b.Infected; }
bool cmp_Dead(const C& a, const C& b) { return a.Dead > b.Dead; }
bool cmp_Death_rate(const C& a, const C& b) { return a.Death_rate > b.Death_rate; }
int main(void) {
int select;
cout << "┌─────────────────────────┐" << endl;
cout << "│ 국가별 코로나 발병리스트│" << endl;
cout << "└─────────────────────────┘" << endl;
while (1) {
cout << "--------------------" << endl;
cout << "0.프로그램 종료 \n1.정보추가 \n2.정보확인 \n3.정보삭제" << endl;
cout << "입력:";
cin >> select;
switch (select) {
case 0:
return 0;
break;
case 1: //정보 추가
cout << "--------------------" << endl;
cout << "정보를 추가합니다." << endl;
cout << "국가명:";
cin >> Corona_World.Country;
cout << "발병 숫자:";
cin >> Corona_World.Infected;
cout << "사망자:";
cin >> Corona_World.Dead;
Corona_World.Death_rate = Corona_World.Dead / Corona_World.Infected * 100;
v_Corona_World.push_back(Corona_World);
break;
case 2: //정보 확인
cout << "--------------------" << endl;
cout << "정보를 확인합니다." << endl;
cout << "1.국가명순 \n2.발병숫자순 \n3.사망자순 \n4.사망률순" << endl;
cout << "입력:";
cin >> select;
cout << "국가명\t발병자\t사망자\t사망률 입니다." << endl;
//----------------------------------여기서부터 2중 스위치
switch (select) {
case 1:
sort(v_Corona_World.begin(), v_Corona_World.end(), cmp_Country);
print(); //출력함수 사용
break;
case 2:
sort(v_Corona_World.begin(), v_Corona_World.end(), cmp_Infected);
print();
break;
case 3:
sort(v_Corona_World.begin(), v_Corona_World.end(), cmp_Dead);
print();
break;
case 4:
sort(v_Corona_World.begin(), v_Corona_World.end(), cmp_Death_rate);
print();
break;
default:
break;
}
//----------------------------------2중 스위치문 끝
break;
case 3: //정보 삭제
int erase;
cout << "정보를 삭제합니다" << endl;
cout << "몇 번째 정보를 삭제하시겠습니까?" << endl;
cout << "입력:";
cin >> erase;
//사용자의 편의를 생각해 erase값에 -1 추가
v_Corona_World.erase(v_Corona_World.begin() + erase - 1);
cout << erase << "번째 정보의 삭제가 완료되었습니다." << endl;
break;
default: //예외문 처리
cout << "잘못된 접근입니다." << endl;
break;
}
}
}
void print() { //출력함수 구현
for (auto i : v_Corona_World) {
cout << i.Country << "\t"
<< i.Infected << "\t"
<< i.Dead << "\t"
<< i.Death_rate << "%" << endl;
}
}
댓글남기기