class Sort{
public:
bool operator(int a,int b){
return a<=b;
}
};
class Comp{
public:
bool operator(int a,int b){
return a==b;
}
};
typedef std::vector<int> container;
typedef container::iterator iterator;
container v
std::sort(v.begin(),v.end(),Sort());
iterator nend=std::unique(v.begin(),v.end(),Comp());
while(iterator it=v.begin();it!=nend;++it){
std::cout<<(*it)<<std::endl;
}
hvis du skal bruge det til mere end du sagde ville jeg bruge en list i stedet, og da det ikke fremgik klart hvad værdier var bruger jeg functors, hvis <= og == er defineret for din værdi som f.eks. her ved in behøver du ikke bruge dem.
jeg kan godt se det smarte i din metode. problemet er bare at den først sortere alle værdier efter voksende rækkefølge. det var desvære ikke det der var hensigten. det var meningen at når den udskrev, så udskrev den i den samme rækkefølge som værdierne stod i, i inddata filen, men bare med de værdier der optræder 2 gange sorteret fra. jeg har også prøvet at køre progammret, og der ser ud til at opstå mismacth til de inkorpereret h-files. min program ser således ud indtil videre:
using namespace std;
struct sorter{
double val;
int nr;
int id;
};
vector<double> v;
bool Sort(const sorter &a,const sorter &b){
if(a.val==b.val){
v.erase(v.begin()+b.val);
}
return true;
}
int main()
{
FILE *fp1;
FILE *fp2;
fp1=fopen("leskor data.txt","r");
ofstream myfile("leskor sorteret.txt");
int nr,id;
double val;
char c;
vector<double> v;
fscanf(fp1,"%i%i%lf",&nr,&id,&val);
do
{
v.push_back(val);
}while(fscanf(fp1,"%i%i%lf",&nr,&id,&val)!=EOF);
sort(v.begin(),v.end(),Sort);
iterator nend=unique(v.begin(),v.end(),Comp());
for(vector<double>::const_iteratori=v.begin();i!=v.end();++i){
cout<<(*i)<<endl;
}
if(myfile.is_open())
{
for(vector<double>::size_type i=0; i !=v.size();++i)
{
myfile<<v[i]<<endl;
}
}
cout<<v.size()<<endl;
cin>>c;
return 0;
}
jeg er klar over at mit program ikke fungere som det ser ud nu. hvis sorteringsfunktionen, kunne sortere alle de værdier der optræder 2 gange fra, samtidig med at den originale rækkefølge stadigvæk vedligeholdes, vil det være mest optimal.
min inddatafil ser for resten således ud:
1
2287.03
3843.83
4
3978.5
3775.87
15
3155.96
4050.7
12
2500.44
3366.17
13
3130.55
3452.06
13
3130.55
3452.06
14
2830.46
3778.56
13
3130.55
3352.06