#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);
}