← Back to topics
Topic

Zasto ovo ne radi

d
darkspirit
Ovo je program koj sortira intervali spored levi kraj. Ja sam probao da "override operator <" i ondak upotrebim gotova sort funkcija,
ali dobijem isti redosled kao u vlezu. Sta je problem? Ve molam odgovorete pobrzo.


#include <iostream>
#include <algorithm>
#include <vector>
struct interval
{
int l,d;
bool operator < ( const interval&amp; f)
const{
return (l<f.l);
}
};
using namespace std;
int main()
{
int n,dd,i,j,k,ll,m,pom,f[5000];
cin>>n;
vector<interval> a(1);
for (i=1;i<=n;i++)
{cin>>a[i].l>>a[i].d;}
sort(a.begin(),a.end());
for (i=1;i<=n;i++)
{cout<<a[i].l<<" "<<a[i].d<<"\n";}
system("PAUSE");
return 0;
}


P.S. Kako se transformise string u int i obratno ve Dev C++?

b
boba5551
Ono sto treba da znas da indexiranje nizova u c-u ide od 0, a ne od 1; nisi nigde ubacio elemente u vektor, ili bar ne mozes tako da radis, bez push_back i ne znam koliko ti znaci ono a(1)... Ne znam najbolje shta i kako radi const u strukturi, pa sam prepravio da bude malko drugacije
Ovo bi trebalo da radi to sto trazis
<pre>
#include <iostream>
#include <algorithm>
#include <vector>
struct interval
{
interval(){
}
int l,d;
friend bool operator < ( const interval &amp;f , const interval &amp;g)
{
return (g.l<f.l);
}
};
using namespace std;
int main()
{
int n,dd,i,j,k,ll,m,pom,f[5000];
int x , y;
cin>>n;
vector<interval> a;
for (i=1;i<=n;i++)
{cin>>x>>y;
interval itrvl;
itrvl.l = x;
itrvl.d = y;
a.push_back(itrvl);
}
sort(a.begin(),a.end());
for (i=0;i<n;i++)
{cout<<a[i].l<<" "<<a[i].d<<"\n";}
system("PAUSE");
return 0;
}

</pre>

P.S. Ako hoces da ti sortira neopadajuce, samo promeni znak poredjenja u strukturi.