Pagini: [1] 2   În jos
  Imprimă  
Ajutor Subiect: 823 Reteta2  (Citit de 10600 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
DITzoneC
Nu mai tace
*****

Karma: 301
Deconectat Deconectat

Mesaje: 962



Vezi Profilul
« : Mai 26, 2009, 21:49:45 »

Aici puteţi discuta despre problema Reteta2.
Memorat
Florian
Nu mai tace
*****

Karma: 125
Deconectat Deconectat

Mesaje: 832



Vezi Profilul
« 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?   Think
Memorat
Dastas
Vorbaret
****

Karma: 11
Deconectat Deconectat

Mesaje: 170



Vezi Profilul
« 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
Nu mai tace
*****

Karma: 125
Deconectat Deconectat

Mesaje: 832



Vezi Profilul
« 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?  Brick wall
Memorat
Dastas
Vorbaret
****

Karma: 11
Deconectat Deconectat

Mesaje: 170



Vezi Profilul
« 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
Vorbaret
****

Karma: 19
Deconectat Deconectat

Mesaje: 162



Vezi Profilul
« 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.

Cod:
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
Nu mai tace
*****

Karma: 65
Deconectat Deconectat

Mesaje: 306



Vezi Profilul
« Răspunde #6 : Ianuarie 17, 2010, 16:36:44 »

Poate se incurca in pointeri ?

Eu am facut cu strtok() din string.h . Succes ! Wink
Memorat
alexandru92
Nu mai tace
*****

Karma: -191
Deconectat Deconectat

Mesaje: 496



Vezi Profilul
« Răspunde #7 : Ianuarie 17, 2010, 17:08:53 »

De la *p=NULL  ori pui p=NULL ori nu pui nimic Smile
Memorat
popoiu.george
Vorbaret
****

Karma: 19
Deconectat Deconectat

Mesaje: 162



Vezi Profilul
« 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  wink
Memorat
pykh
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 3



Vezi Profilul
« 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  Very Happy.
« Ultima modificare: Ianuarie 18, 2010, 02:02:28 de către Neagoe Alexandru » Memorat
alexandru92
Nu mai tace
*****

Karma: -191
Deconectat Deconectat

Mesaje: 496



Vezi Profilul
« 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  Very Happy.
Numai moderatori si tu pot vedea sursa ta, ai putea posta o bucata de cod aici Smile
Memorat
pykh
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 3



Vezi Profilul
« 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 Smile

     Stiu asta, dar daca vrea cineva pot da PM cu sursa Smile. 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
Nu mai tace
*****

Karma: 821
Deconectat Deconectat

Mesaje: 1.901



Vezi Profilul
« 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 Mr. Green
kyrk
Strain


Karma: -8
Deconectat Deconectat

Mesaje: 13



Vezi Profilul
« Răspunde #13 : Martie 08, 2010, 01:53:12 »

Cod:
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
Nu mai tace
*****

Karma: -463
Deconectat Deconectat

Mesaje: 937



Vezi Profilul
« 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
Vorbaret
****

Karma: 12
Deconectat Deconectat

Mesaje: 183



Vezi Profilul
« Răspunde #15 : Mai 24, 2010, 13:09:17 »

Mi se pare ca enuntul e gresit. Aici cred
Citat
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
Nu mai tace
*****

Karma: -463
Deconectat Deconectat

Mesaje: 937



Vezi Profilul
« 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 Deconectat

Mesaje: 18



Vezi Profilul
« 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  Ok
Memorat
soriyn
Vorbaret
****

Karma: 24
Deconectat Deconectat

Mesaje: 150



Vezi Profilul
« 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
De-al casei
***

Karma: -9
Deconectat Deconectat

Mesaje: 121



Vezi Profilul
« Răspunde #19 : Decembrie 20, 2011, 09:03:36 »

Care ocupa mai multa memorie ? stringurile sau charurile?
Memorat
devilkind
Echipa infoarena
Nu mai tace
*****

Karma: 284
Deconectat Deconectat

Mesaje: 1.240



Vezi Profilul
« 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
De-al casei
***

Karma: -9
Deconectat Deconectat

Mesaje: 121



Vezi Profilul
« 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
De-al casei
***

Karma: 30
Deconectat Deconectat

Mesaje: 145



Vezi Profilul
« Răspunde #22 : Septembrie 22, 2012, 11:46:41 »

Citat
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ă ?  Think

Ex.
cacao
cafea

Memorat
gabitzish1
Moderatori infoarena
Nu mai tace
*****

Karma: 321
Deconectat Deconectat

Mesaje: 926



Vezi Profilul
« Răspunde #23 : Septembrie 22, 2012, 12:05:24 »

Desigur.
Memorat
AlexandruValeanu
Vorbaret
****

Karma: 29
Deconectat Deconectat

Mesaje: 167



Vezi Profilul
« 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...

Cod:
#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
Pagini: [1] 2   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines