Afişează mesaje
|
Pagini: [1]
|
3
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 480 Ecuatii 2
|
: August 27, 2011, 09:51:22
|
Fac asta aici: eval(ec,strlen(ec),ms,xs); fin.get(); fin.get(ec,999,'\n'); xd=md=0; eval(ec,strlen(ec),md,xd); fin.get();
|
|
|
4
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 480 Ecuatii 2
|
: August 26, 2011, 21:44:19
|
Nu inteleg de ce iau doar 40P pe evaluatorul de la oji iau 100P , nu inteleg unde gresesc.Am folosti fprintf in loc de fout<<fixed<<setprecision(4) am incercat sa cresc precizia la 10 nimic nu merge. Sursa mea: #include <fstream> #include <cstdio> #include <cstdlib> #include <cstring> using namespace std; void eval(char *ec,int n,int & mem,int & x); int main() { ifstream fin("ecuatii2.in"); FILE *g=fopen("ecuatii2.out","w"); char ec[250]; int n,xs,xd,ms,md; fin>>n; fin.get(); for(int i=1;i<=n;++i) { xs=xd=ms=md=0; fin.get(ec,999,'='); xs=xd=ms=md=0; eval(ec,strlen(ec),ms,xs); fin.get(); fin.get(ec,999,'\n'); xd=md=0; eval(ec,strlen(ec),md,xd); fin.get(); if(ms==md&&xs==xd) fprintf(g,"infinit \n"); else { int ter=ms-md,x=xs-xd; if(x==0 && ms!=md) fprintf(g,"imposibil \n"); else { double rez=(double)ter/(x*-1); fprintf(g,"%.4f \n",rez); }
} }
fin.close(); fclose(g); return 0; }
void eval(char *ec,int n,int & mem,int & x) { int nr=0; char c,semn; for(int i=0;i<n;++i) { nr=0; if(ec[i]>='0'&&ec[i]<='9') { if(i==0) semn='+'; else semn=ec[i-1]; while(ec[i]>='0'&&ec[i]<='9'&&i<n) { c=ec[i]; nr=nr*10+atoi(&c); ++i; } if(i==n) --i; if(ec[i]=='x') {
if(nr==0) ++x; else if(semn=='+') x+=nr; else x-=nr; ++i; } else { if(semn=='+') mem+=nr; else mem-=nr; } } else if(ec[i]=='x') { if(i==0) semn='+'; else semn=ec[i-1]; if(semn=='+') ++x; else --x; } } }
|
|
|
7
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 479 Paritate
|
: Iulie 15, 2011, 10:57:34
|
Sursa mea ia Killed by signal 11(SIGSEGV) pe toate testele de la InfoArena dar pe evaluatorul de la OJI iau 100P. Unde poate fi problema? #include <fstream> using namespace std; int pow(int a,int b); int main() { char v[9],h[60000*8]; int poz=0,x[10000],n2=0,nr=0; ifstream fin("paritate.in"); while(!fin.eof()) { fin.get(v,9); poz++; int nr_1=0,p=0,aux=0; for(int i=7;i>0;i--) { if(v[i]=='1') { aux+=(int)pow(2,p); nr_1++; } p++; } if(nr_1%2==0) { if(v[0]=='0') { nr++; h[nr]=(char)aux; } else { n2++; x[n2]=poz-1; } } else { if(v[0]=='1') { nr++; h[nr]=(char)aux; } else { n2++; x[n2]=poz-1; } } } fin.close(); ofstream fout("paritate.out"); if(n2==0) { fout<<"DA"<<"\n"; for(int i=1;i<=nr;i++) fout<<h[i]; } else { fout<<"NU"<<"\n"; for(int i=1;i<=n2;i++) fout<<x[i]<<" "; } fout.close(); return 0; } int pow(int a,int b) { int s=1; if(b==0) return 1; if(b==1) return 2; for(int i=1;i<=b;i++) s*=a;
return s; }
|
|
|
|