Ĺadny brzuch
Witam,
Program działa poprawnie, jednakże spoj go nie akceptuje. Proszę o wskazanie błedu!
Z góry serdecznie dziękuję!
#include <iostream> using namespace std; void pokaz(string ** p, unsigned N); bool litery(char * k, char * c, int & n) { if((int)(*k)==(int)(*c)) return true; else if((int)(*k)>(int)(*c)) n=1; else n=2; return false; } void sor(string ** p, const unsigned N) { for(int i=N-1;i>0;--i) for(int k=0;k<i;++k) if((*p[k]).size()>(*p[k+1]).size()) swap(p[k],p[k+1]); for(int k=0;k<N-1;++k) while((*p[k]).size()==(*p[k+1]).size()) { int n=0; while(litery(&(*p[k])[n],&(*p[k+1])[n],n)) ++n; if(n==1) swap(p[k],p[k+1]); ++k; } pokaz(p,N); } void pokaz(string ** p,unsigned N) { for(int k=0;k<N;++k) cout << *p[k] << endl; } int main() { unsigned N; cin >> N; string * w = new string[N]; string ** p = new string*[N]; for(unsigned k=0;k<N;++k) { cin >> w[k]; p[k]=&w[k]; } sor(p,N); retrun 0; }
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Program działa poprawnie, jednakże spoj go nie akceptuje. Proszę o wskazanie błedu!
Z góry serdecznie dziękuję!
#include <iostream> using namespace std; void pokaz(string ** p, unsigned N); bool litery(char * k, char * c, int & n) { if((int)(*k)==(int)(*c)) return true; else if((int)(*k)>(int)(*c)) n=1; else n=2; return false; } void sor(string ** p, const unsigned N) { for(int i=N-1;i>0;--i) for(int k=0;k<i;++k) if((*p[k]).size()>(*p[k+1]).size()) swap(p[k],p[k+1]); for(int k=0;k<N-1;++k) while((*p[k]).size()==(*p[k+1]).size()) { int n=0; while(litery(&(*p[k])[n],&(*p[k+1])[n],n)) ++n; if(n==1) swap(p[k],p[k+1]); ++k; } pokaz(p,N); } void pokaz(string ** p,unsigned N) { for(int k=0;k<N;++k) cout << *p[k] << endl; } int main() { unsigned N; cin >> N; string * w = new string[N]; string ** p = new string*[N]; for(unsigned k=0;k<N;++k) { cin >> w[k]; p[k]=&w[k]; } sor(p,N); retrun 0; }