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;

}