/*
제    목 : 데이터구조 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;
	}
}

태그:

Cpp

카테고리:

업데이트:

댓글남기기