3

xiaoxiao2021-02-28  107



#include"pk10.h" #include<iostream> #include <fstream> #include<string> #include<vector> #include <cstdlib> using namespace std; readFile::readFile():data(10),pathToRead("D:\\pk10\\data.txt") { char source[255];//行 ifstream in(pathToRead.c_str()); if (!in.is_open()) { cout << "Error opening file"; exit (1); } while (!in.eof() ) //读文件并调用整理进容器函数 { in.getline (source,100); getFile(source); } in.close(); } void readFile::getFile(char*bf) { int idx=28; for(int i=0; i<=9; ++i) //整理单双,不放到ivt { //char转val int ival=0; ival=(int)bf[idx]; ival-=48; data[i].push_back(ival); idx+=3; } } getSD::getSD():dataSD(10) { int tempInt=0; for(int i=0; i<=9; ++i) //整理单双, { for(vector<int>::iterator it=--R.data[i].end(); it>=R.data[i].begin(); it--) { tempInt=*it; if(tempInt%2==1) dataSD[i].push_back(1); else dataSD[i].push_back(0); } } coutRecult C(this->dataSD,"D:\\pk10\\dataSD.txt",SD);//把单双输出到文件夹 } coutRecult::coutRecult(vector<vector<int> > data,char *pathName,int model)//"D:\\pk10\\7-6dataR1.txt" { int lengthHeigh;//路单高度 ofstream out(pathName,ios::trunc); if(!out.is_open()) cout<<"open ofstream error!"<<endl; switch (model) { case SD://单双输出 for(int i=0; i<=9; ++i) { for(vector<int>::iterator it=data[i].begin(); it<data[i].end(); ++it) out<<*it; out<<endl; } break; case L://路单输出 for(int i=0; i<=9; ++i) { lengthHeigh=0; for(vector<int>::iterator it=data[i].begin(); it<data[i].end(); ++it)//读取每一路最高高度 if(lengthHeigh<*it)lengthHeigh=*it; for(int j=0; j<lengthHeigh; ++j)//每个路单输出 { for(vector<int>::iterator it=data[i].begin(); it<data[i].end(); ++it) j>=lengthHeigh-*it?out<<"■":out<<"□"; out<<endl; } out<<endl;//输出完每个路单就下调5行 } break; default: break; } out.close(); } getLength::getLength():dataGetLength(10) { for(int i=0; i<=9; ++i) { int tempInt=-1; for(vector<int>::iterator it=G.dataSD[i].begin(); it<G.dataSD[i].end(); ++it) { if(tempInt!=*it) { dataGetLength[i].push_back(1); } else { dataGetLength[i].back()++; } tempInt=*it;//指向比较过的当前行下次循环to比较下一个元素 } } coutRecult cR(this->dataGetLength,"D:\\pk10\\dataL.txt",L); } #include"pk10.h" #include<iostream> #include <fstream> #include<string> #include<vector> #include <cstdlib> using namespace std;

readFile::readFile():data(10),pathToRead("D:\\pk10\\data.txt") {     char source[255];//行     ifstream in(pathToRead.c_str());

    if (!in.is_open())     {         cout << "Error opening file";         exit (1);     }

    while (!in.eof() ) //读文件并调用整理进容器函数     {         in.getline (source,100);         getFile(source);     }

    in.close(); }

void readFile::getFile(char*bf) {     int idx=28;     for(int i=0; i<=9; ++i) //整理单双,不放到ivt     {         //char转val         int ival=0;         ival=(int)bf[idx];         ival-=48;

        data[i].push_back(ival);         idx+=3;     } }

getSD::getSD():dataSD(10) {     int tempInt=0;

    for(int i=0; i<=9; ++i) //整理单双,     {         for(vector<int>::iterator it=--R.data[i].end(); it>=R.data[i].begin(); it--)         {             tempInt=*it;

            if(tempInt%2==1)                 dataSD[i].push_back(1);             else                 dataSD[i].push_back(0);         }     }     coutRecult C(this->dataSD,"D:\\pk10\\dataSD.txt",SD);//把单双输出到文件夹 }

coutRecult::coutRecult(vector<vector<int> >  data,char *pathName,int model)//"D:\\pk10\\7-6dataR1.txt" {     int lengthHeigh;//路单高度

    ofstream out(pathName,ios::trunc);     if(!out.is_open())         cout<<"open ofstream error!"<<endl;

    switch (model)     {     case SD://单双输出         for(int i=0; i<=9; ++i)         {             for(vector<int>::iterator it=data[i].begin(); it<data[i].end(); ++it)                 out<<*it;             out<<endl;         }         break;     case L://路单输出         for(int i=0; i<=9; ++i)         {             lengthHeigh=0;             for(vector<int>::iterator it=data[i].begin(); it<data[i].end(); ++it)//读取每一路最高高度                 if(lengthHeigh<*it)lengthHeigh=*it;

            for(int j=0; j<lengthHeigh; ++j)//每个路单输出             {                 for(vector<int>::iterator it=data[i].begin(); it<data[i].end(); ++it)                     j>=lengthHeigh-*it?out<<"■":out<<"□";                 out<<endl;             }             out<<endl;//输出完每个路单就下调5行         }         break;     default:         break;     }

    out.close(); }

getLength::getLength():dataGetLength(10) {     for(int i=0; i<=9; ++i)     {         int tempInt=-1;         for(vector<int>::iterator it=G.dataSD[i].begin(); it<G.dataSD[i].end(); ++it)         {             if(tempInt!=*it)             {                 dataGetLength[i].push_back(1);             }             else             {                 dataGetLength[i].back()++;             }             tempInt=*it;//指向比较过的当前行下次循环to比较下一个元素         }     }

    coutRecult cR(this->dataGetLength,"D:\\pk10\\dataL.txt",L); }

转载请注明原文地址: https://www.6miu.com/read-46066.html

最新回复(0)