•DITzoneC
|
 |
« : Mai 26, 2009, 21:49:45 » |
|
Aici puteţi discuta despre problema Reteta2.
|
|
|
Memorat
|
|
|
|
•Florian
|
 |
« Răspunde #1 : Mai 27, 2009, 11:29:00 » |
|
S-au pastrat testele de la OJI? Pentru ca iau 10 puncte pe problema asta, iar toate cele 10 teste de la OJI imi merg perfect. Ceva idei unde as putea gresi? 
|
|
|
Memorat
|
|
|
|
•Dastas
|
 |
« Răspunde #2 : Mai 27, 2009, 13:01:27 » |
|
Daca citesti cu gets / fgets vezi ce se intampla cand ai si cand nu ai '\n' la sfarsitul liniei.
|
|
|
Memorat
|
|
|
|
•Florian
|
 |
« Răspunde #3 : Mai 27, 2009, 14:08:15 » |
|
Initial citeam caracter cu caracter, si intr-adevar, cand nu aveam '\n' la sfarsit, imi dadea incorect. Am facut apoi citirea cu fgets, si se comporta cum trebuie pe ambele cazuri ( si cu "\n", si fara ). Problema este ca iau tot 10 puncte, si deja devine enervanta, intrucat pe absolut toate testele de la OJI imi da bine. Iau chiar si KBS pe cateva teste(cand trimit pe ia). Memoria nu o depasesc, nu apelez zone nealocate, numele fisierelor de .in/.out sunt corecte. Nu pot sa-mi dau seama ce are. Cei care au facut`o de 100, cum ati facut citirea?
|
|
|
Memorat
|
|
|
|
•Dastas
|
 |
« Răspunde #4 : Mai 27, 2009, 15:03:03 » |
|
Nu stiu exact cum faci, dar windows trece cu vederea unele erori aparent neimportante din partea programatorului. De exemplu, ti se cere sa afisezi produsele sortate. Banuiesc ca parcurgi o data sirul si le copiezi pe toate intr-o matrice. Cand termini de copiat cuvantul, ai grija sa pui '\0' la sfarsit (asta nu stiu daca chiar conteaza, dar e bine de facut oricum). Vezi sa declari vectorii folositi putin mai mari decat ai nevoie in cazul sirurilor de caractere, ca sa poti retine si caracterele '\n' si '\0'; asta este o posibila cauza de eroare care apare pe linux dar pe windows nu intotdeauna. Ai grija sa nu fie ceva la sortare tot de genul acesta.
Eu am luat 100 avand grija sa citesc cu fgets, sa nu ma intereseze de '\n', sa declar vectorii de dimensiuni mai mari si sa pun '\0'.
Apropo, nu se acorda punctaje partiale asa cum scrie in enunt.
|
|
|
Memorat
|
|
|
|
•popoiu.george
|
 |
« Răspunde #5 : Ianuarie 17, 2010, 15:48:54 » |
|
Iau 0 puncte cu Killed by signal 11 si nu inteleg de ce, pt ca pe testele de la oji imi determina toti timpii totali de preparare corect. Nu reusesc sa-mi dau seama ce anume din codul urmator poate sa dea killed by signal 11. void CalcTimpTotal() { int timp=0; bool gasit; char *p; char *ant; ant=cp; //char cp[Max]; este sirul meu do { gasit=false; *p=NULL; p=strchr(ant,')');// caut pozitia primului caracter ')' in sirul ramas if(p!=NULL)//daca am gasit { gasit=true; timp+=atol(p+1);//transform ce este in dreapta paratezei in numar, daca am ") 23s" si eu transform de la pointerul p+1 atunci va transforma " 23s" si va returna numarul 23 ant=p+1;//restrang sirul la ce mai ramane in dreapta } } while(gasit); g<<timp; }
De la ce credeti ca ar putea fi? Vectorul cp are dimensiunea 1010, deci nu e de la asta.
|
|
|
Memorat
|
|
|
|
•miculprogramator
|
 |
« Răspunde #6 : Ianuarie 17, 2010, 16:36:44 » |
|
Poate se incurca in pointeri ? Eu am facut cu strtok() din string.h . Succes ! 
|
|
|
Memorat
|
|
|
|
•alexandru92
|
 |
« Răspunde #7 : Ianuarie 17, 2010, 17:08:53 » |
|
De la *p=NULL ori pui p=NULL ori nu pui nimic 
|
|
|
Memorat
|
|
|
|
•popoiu.george
|
 |
« Răspunde #8 : Ianuarie 17, 2010, 17:59:48 » |
|
@alexandru Da, era de la *p=NULL, thx. @miculprogramator Am facut sa vad doar daca primesc punctaj pentru timpul corect (dar se pare ca nu ofera 30% din punctaj doar pentru durata corecta). Ca sa rezolv cerinta integral o sa folosesc strtok 
|
|
|
Memorat
|
|
|
|
•pykh
Strain
Karma: 0
Deconectat
Mesaje: 3
|
 |
« Răspunde #9 : Ianuarie 17, 2010, 22:21:31 » |
|
Daca vrea cineva sa se uite si pe sursa mea, ca ma chinui de cateva ore si nu imi dau seama de ce iau numai 20 puncte. Pe testele de la OJI da bine si nu am nicio idee ce ar fi gresit. Va multumesc anticipat  .
|
|
« Ultima modificare: Ianuarie 18, 2010, 02:02:28 de către Neagoe Alexandru »
|
Memorat
|
|
|
|
•alexandru92
|
 |
« Răspunde #10 : Ianuarie 18, 2010, 06:33:01 » |
|
Daca vrea cineva sa se uite si pe sursa mea, ca ma chinui de cateva ore si nu imi dau seama de ce iau numai 20 puncte. Pe testele de la OJI da bine si nu am nicio idee ce ar fi gresit. Va multumesc anticipat  . Numai moderatori si tu pot vedea sursa ta, ai putea posta o bucata de cod aici 
|
|
|
Memorat
|
|
|
|
•pykh
Strain
Karma: 0
Deconectat
Mesaje: 3
|
 |
« Răspunde #11 : Ianuarie 18, 2010, 10:59:49 » |
|
Numai moderatori si tu pot vedea sursa ta, ai putea posta o bucata de cod aici  Stiu asta, dar daca vrea cineva pot da PM cu sursa  . O bucata din cod nu cred ca ar ajuta, din moment ce eu nu stiu unde e greseala.
|
|
« Ultima modificare: Ianuarie 18, 2010, 11:17:22 de către Neagoe Alexandru »
|
Memorat
|
|
|
|
•pauldb
|
 |
« Răspunde #12 : Ianuarie 19, 2010, 03:06:44 » |
|
A fost adaugat un evaluator problemei si acum se primesc punctaje partiale dupa cum este precizat in enunt. Problema a fost reevaluata.
|
|
|
Memorat
|
Am zis 
|
|
|
•kyrk
Strain
Karma: -8
Deconectat
Mesaje: 13
|
 |
« Răspunde #13 : Martie 08, 2010, 01:53:12 » |
|
Test Timp executie Memorie folosita Mesaj Punctaj/test 1 0ms 8kb OK! 10 2 4ms 8kb OK! 10 3 4ms 8kb OK! 10 4 4ms 8kb Afisarea Ingredientelor gresita 3 5 4ms 12kb OK! 10 6 0ms 8kb OK! 10 7 0ms 12kb OK! 10 8 0ms 8kb OK! 10 9 4ms 8kb OK! 10 10 0ms 12kb OK! 10 Punctaj total 93
Mah poate ajuta cineva cu o idee ? Nu imi dau seama peste ce caz particular as putea sari!
|
|
« Ultima modificare: Martie 08, 2010, 08:43:29 de către Paul-Dan Baltescu »
|
Memorat
|
|
|
|
•SpiderMan
|
 |
« Răspunde #14 : Martie 08, 2010, 12:09:17 » |
|
Pai daca nu ne dai indicii cum ai facut ... oricum ia testele de la OJI si incearca testul care tii gresit (vezi ca se incepe de la 0, deci testul tau e numarul 3).
|
|
« Ultima modificare: Mai 24, 2010, 16:14:15 de către Simoiu Robert »
|
Memorat
|
|
|
|
•andunhill
|
 |
« Răspunde #15 : Mai 24, 2010, 13:09:17 » |
|
Mi se pare ca enuntul e gresit. Aici cred 1 ≤ Numărul de ingrediente ≤ 100 nu e bun. Eu am pus limita la vectorul de ingrediente de 101 si imi da gresit la testele 4 si 6. Am marit limita la 170 de elemente si am luat 100 pt. La testul 6 sunt 106 de ingrediente si la testul 4 sunt 166. Nu sunt sigur daca asa e, poate am inteles eu gresit enuntul.
|
|
|
Memorat
|
|
|
|
•SpiderMan
|
 |
« Răspunde #16 : Mai 24, 2010, 16:15:18 » |
|
Nu pune niciodata vectoru foarte apropiat , pune si tu 105, si ai sa vezi ca iti merge.
|
|
|
Memorat
|
|
|
|
•DevilShadow
Strain
Karma: 2
Deconectat
Mesaje: 18
|
 |
« Răspunde #17 : Martie 17, 2011, 01:38:39 » |
|
Ii ceva ciudat... Eu am verificat cu toate testele oficiale si am vazut ca la toate imi da bine... Iar aici... Primesc doar 44 de pc... Doar la testul 1 si 4 sunt bune ingredientele si la toate timpul de amestecare ii bun. Imi poate da cineva cateva teste folosite aici? Multzumesc pt timpul acordat 
|
|
|
Memorat
|
|
|
|
•soriyn
|
 |
« Răspunde #18 : Martie 17, 2011, 02:03:03 » |
|
Cel mai probabil nu o sa primesti vreun test. Dar vezi ca,de obicei, se folosesc aceleasi teste ca la OJI si cred ca la fel s-a procedat si la problema asta.
|
|
|
Memorat
|
|
|
|
•VisuianMihai
|
 |
« Răspunde #19 : Decembrie 20, 2011, 09:03:36 » |
|
Care ocupa mai multa memorie ? stringurile sau charurile?
|
|
|
Memorat
|
|
|
|
•devilkind
|
 |
« Răspunde #20 : Decembrie 20, 2011, 13:57:35 » |
|
Stringurile sunt vectori de charuri, deci nu prea are sens intrebarea ta. Ca si cum ai intreba ce ocupa mai mult, 1 char sau 2 charuri?
|
|
|
Memorat
|
|
|
|
•VisuianMihai
|
 |
« Răspunde #21 : Februarie 29, 2012, 10:26:24 » |
|
Iau KBS pe testele 8 si 10 si nu stiu de ce. Am declarat sirul de 1010 si structura de ingrediente de 106. Imi puteti spune ce pot face ca sa scap de KBS?
|
|
|
Memorat
|
|
|
|
•TheNechiz
|
 |
« Răspunde #22 : Septembrie 22, 2012, 11:46:41 » |
|
Fişierul de ieşire reteta2.out va conţine pe prima linie timpul total necesar pentru prepararea reţetei. Pe următoarele linii sunt scrise ingredientele în ordine lexicografică (ordinea din dicţionar) Rețeta poate conține și două ingrediente care să înceapă cu aceeași literă ?  Ex. cacao cafea
|
|
|
Memorat
|
|
|
|
•gabitzish1
|
 |
« Răspunde #23 : Septembrie 22, 2012, 12:05:24 » |
|
Desigur.
|
|
|
Memorat
|
|
|
|
•AlexandruValeanu
|
 |
« Răspunde #24 : Februarie 03, 2013, 16:44:25 » |
|
Imi poate spune si mie cineva de ce imi spune ca afisez ingredientele incorect...pe testele oficiale merge perfect...mie ca e ceva ce tine de afisare nu de rezolvare...dar nu-mi dau seama cea... #include <iostream> #include <fstream> #include <cstring> #include <cstdio> using namespace std; char s[1005]; char a[1005]; int l=0; ifstream f("reteta2.in"); ofstream g("reteta2.out"); struct retetar{ char nume[1000]; int nr; }; retetar v[1005]; void citire(){ f.getline(s,1000); f.close(); } void pune(char c[],int x){ int t=1; for(int i=1;i<=l;i++){ if(strcmp(v[i].nume,c)==0){ v[i].nr+=x; t=0; break; } } if(t){ l++; strcpy(v[l].nume,c); v[l].nr=x; } } void sortare(){ int gata,i; char x[30]; int aux; do{ gata=0; for(i=1;i<l;i++) if(strcmp(v[i].nume,v[i+1].nume)==1){ strcpy(x,v[i].nume); strcpy(v[i].nume,v[i+1].nume); strcpy(v[i+1].nume,x); aux=v[i].nr; v[i].nr=v[i+1].nr; v[i+1].nr=aux; gata=1; } }while(gata); } int main() { citire(); int i=1,nr,suma=0; strcpy(a,s); while(i<strlen(s)) if(isspace(s[i])) strcpy(s+i,s+i+1); else i++; i=0; while(i<strlen(s)){ nr=0; if(isdigit(s[i]) && s[i-1]==')') while(isdigit(s[i])){ nr=nr*10 + s[i]-48; i++; } suma+=nr; i++; } i=0; while(i<strlen(s)){ if(isdigit(s[i]) && s[i-1]==')' ) while(isdigit(s[i])){ strcpy(s+i,s+i+1); } i++; } i=0; while(i<strlen(s)) if(s[i]<48) strcpy(s+i,s+i+1); else i++; i=0; while(i<strlen(s)){ nr=0; char c[30]; int k=0; while(isalpha(s[i])) c[k++]=s[i++]; if(isdigit(s[i])) while(isdigit(s[i])){ nr=nr*10 + s[i]-48; i++; } c[k]='\0'; pune(c,nr); } sortare(); g<<suma<<endl; for(int i=1;i<=l;i++){ g<<v[i].nume<<" "<<v[i].nr<<endl; } g.close(); return 0; }
|
|
|
Memorat
|
|
|
|
|