ASSINGMENT/고급 C++
[과제] 5주차 과제 Optional
이빨빠진 옥수수
2023. 4. 5. 11:13
#include <fstream>
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
class ReadMBTIData{
public:
int num_rows_;
string* name_;
string* id_;
string* mbti_;
ReadMBTIData() {}
void read_data(string file_path) {
ifstream input_file(file_path);
if (!input_file.is_open()) {
cerr << "Failed to open input file" << endl;
return;
}
int num_rows = 0;
string line;
while (getline(input_file, line)) {
num_rows++;
}
input_file.clear();
input_file.seekg(0, ios::beg);
name_ = new string[num_rows];
id_ = new string[num_rows];
mbti_ = new string[num_rows];
int i = 0;
while (getline(input_file, line)) {
stringstream ss(line);
string cell;
int j = 0;
while (getline(ss, cell, ',')) {
if (j == 0) {
name_[i] = cell;
}
else if (j == 1) {
id_[i] = cell;
}
else if (j == 2) {
mbti_[i] = cell;
}
j++;
}
i++;
}
input_file.close();
num_rows_ = num_rows;
}
void print_data() {
for (int i = 0; i < num_rows_; i++) {
cout << name_[i] << " " << id_[i] << " " << mbti_[i] << endl;
}
}
~ReadMBTIData() {
delete[] name_;
delete[] id_;
delete[] mbti_;
}
};
int main (){
ReadMBTIData mbti;
mbti.read_data("/Users/munhyeonsu/Downloads/2023_Students.csv");
int ENTP=0,ENTJ=0,ENFP=0,ENFJ=0,ESFJ=0,ESFP=0,ESTJ=0,ESTP=0;
int INTP=0,INTJ=0,INFP=0,INFJ=0,ISFJ=0,ISFP=0,ISTJ=0,ISTP=0;
int AAAA=0;
for (int i=0;i<mbti.num_rows_;i++){
if(mbti.mbti_[i]=="ENTP"){
ENTP++;
}
if(mbti.mbti_[i]=="ENTJ"){
ENTJ++;
}
if(mbti.mbti_[i]=="ENFP"){
ENFP++;
}
if(mbti.mbti_[i]=="ENFJ"){
ENFJ++;
}
if(mbti.mbti_[i]=="ESTP"){
ESTP++;
}
if(mbti.mbti_[i]=="ESFP"){
ESFP++;
}
if(mbti.mbti_[i]=="ENTP"){
ENTP++;
}
if(mbti.mbti_[i]=="ESFJ"){
ESFJ++;
}
if(mbti.mbti_[i]=="INTP"){
INTP++;
}
if(mbti.mbti_[i]=="INTJ"){
INTJ++;
}
if(mbti.mbti_[i]=="INFP"){
INFP++;
}
if(mbti.mbti_[i]=="INFJ"){
INFJ++;
}
if(mbti.mbti_[i]=="ISTP"){
ISTP++;
}
if(mbti.mbti_[i]=="ISFP"){
ISFP++;
}
if(mbti.mbti_[i]=="ISTJ"){
ISTJ++;
}
if(mbti.mbti_[i]=="ISFP"){
ISFJ++;
}
else {
AAAA++;
}
}
cout<<ENFP<<endl;
//ENTP,ENTJ,ENFP,ENFJ,ESFJ,ESFP,ESTJ,ESTP
string *ENTPmbti=new string[ENTP];
string *ENTJmbti=new string[ENFJ];
string *ENFPmbti=new string[ENFP];
string *ENFJmbti=new string[ENFJ];
string *ESFJmbti=new string[ESFJ];
string *ESFPmbti=new string[ESFP];
string *ESTJmbti=new string[ESTJ];
string *ESTPmbti=new string[ESTP];
string *INTPmbti=new string[INTP];
string *INTJmbti=new string[INFJ];
string *INFPmbti=new string[INFP];
string *INFJmbti=new string[INFJ];
string *ISFJmbti=new string[ISFJ];
string *ISFPmbti=new string[ISFP];
string *ISTJmbti=new string[ISTJ];
string *ISTPmbti=new string[ISTP];
for (int i=0;i<mbti.num_rows_;i++){
if(mbti.mbti_[i]=="ENTP"){
ENTPmbti[i]=mbti.mbti_[i];
}
if(mbti.mbti_[i]=="ENTJ"){
ENTJmbti[i]=mbti.mbti_[i];
}
if(mbti.mbti_[i]=="ENFP"){
ENFPmbti[i]=mbti.mbti_[i];
}
if(mbti.mbti_[i]=="ENFJ"){
ENFJmbti[i]=mbti.mbti_[i];
}
if(mbti.mbti_[i]=="ESTP"){
ESTPmbti[i]=mbti.mbti_[i];
}
if(mbti.mbti_[i]=="ESFP"){
ESFPmbti[i]=mbti.mbti_[i];
}
if(mbti.mbti_[i]=="ESTJ"){
ESTPmbti[i]=mbti.mbti_[i];
}
if(mbti.mbti_[i]=="ESFJ"){
ESFJmbti[i]=mbti.mbti_[i];
}
if(mbti.mbti_[i]=="INTP"){
INTPmbti[i]=mbti.mbti_[i];
}
if(mbti.mbti_[i]=="INTJ"){
INTJmbti[i]=mbti.mbti_[i];
}
if(mbti.mbti_[i]=="INFP"){
INFPmbti[i]=mbti.mbti_[i];
}
if(mbti.mbti_[i]=="INFJ"){
INFJmbti[i]=mbti.mbti_[i];
}
if(mbti.mbti_[i]=="ISTP"){
ISTPmbti[i]=mbti.mbti_[i];
}
if(mbti.mbti_[i]=="ISFP"){
ISFPmbti[i]=mbti.mbti_[i];
}
if(mbti.mbti_[i]=="ISTJ"){
ISTJmbti[i]=mbti.mbti_[i];
}
if(mbti.mbti_[i]=="ISFJ"){
ISFJmbti[i]=mbti.mbti_[i];
}
}
cout<<ENFJ<<endl;
string cinmbti;
cout<<"파악하고 싶은 mbti를 입력하시오 :";
cin>>cinmbti;
//ENTP,ENTJ,ENFP,ENFJ,ESFJ,ESFP,ESTJ,ESTP
delete[] ENTPmbti;
delete[] ENTJmbti;
delete[] ENFPmbti;
delete[] ENFJmbti;
delete[] ESFJmbti;
delete[] ESFPmbti;
delete[] ESTJmbti;
delete[] ESTPmbti;
delete[] INTPmbti;
delete[] INTJmbti;
delete[] INFPmbti;
delete[] INFJmbti;
delete[] ISFJmbti;
delete[] ISFPmbti;
delete[] ISTJmbti;
delete[] ISTPmbti;
}