Afişează mesaje
Pagini: [1]
1  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 1374 Ksecv3 : Februarie 25, 2016, 21:38:37
Poate sa ma lamureasca cineva de ce primesc pe testul 4 incorect, iar pe ultimele patru mle?  Think Think
2  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 1472 Zimeria : Februarie 14, 2016, 01:09:38
iau 90 de puncte si nu stiu de ce primesc tle pe ultimele 2 teste, se poate sa ma ajute cineva??  Think
3  infoarena - concursuri, probleme, evaluator, articole / Algoritmiada 2016 / Răspuns: Feedback Runda 2 : Ianuarie 24, 2016, 14:41:30
au aparut deja rezultatele
4  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 823 Reteta2 : Ianuarie 24, 2016, 01:39:41
nu inteleg ce am facut gresit... pe testele de la oji imi arata totul cum trebuie, insa cand pun codul pe site primesc doar 6 puncte.
daca poate sa ma ajute cineva, acesta e codul:

#include <fstream>
#include <string.h>
#include <stdlib.h>
using namespace std;
ifstream fin("reteta2.in");
ofstream fout("reteta2.out");
int n,sum,k,z,j,i,q;
struct
{
    char nume[1000];
    int g;
} ing[200];
char nr[1005];
void suma(char s[1005])
{
    while(i<strlen(s))
    {
        if(strchr(" ",s))
            strcpy(s+i,s+i+1);
        else ++i;
    }
    i=0;
    while(i<strlen(s))
    {
        if(strchr(")",s))
        {
            strcpy(s+i,s+i+1);
            while(s>='0' and s<='9')
            {
                strncat(nr,s+i,1);
                strcpy(s+i,s+i+1);
            }
            sum+=atoi(nr);
            strcpy(nr,"");
        }
        else ++i;
    }
}
void produse(char s[1005])
{
    for(i=0; i<strlen(s); ++i)
    {
        if(s>='a' and s<='z')
        {
            ++j;
            while(s>='a' and s<='z')
            {
                strncat(ing[j].nume,s+i,1);
                ++i;
            }
        }

    }
    j=0;
    for(i=0; i<strlen(s); ++i)
    {
        if(s>='0' and s<='9')
        {
            ++j;
            while(s>='0' and s<='9')
            {
                strncat(nr,s+i,1);
                ++i;
            }
            ing[j].g=atoi(nr);
            strcpy(nr,"");
        }

    }
}
void adunare(char s[1005])
{
    for(i=1;i<=j;++i)
    {
        for(k=1;k<=j;++k)
        {
            while(i!=k and strcmp(ing.nume,ing[k].nume)==0)
            {
                ing.g+=ing[k].g;
                for(q=k; q<=j; ++q)
                {
                    strcpy(ing[q].nume,ing[q+1].nume);
                    ing[q].g=ing[q+1].g;

                }
                --j;
            }
        }
    }
}
void sortare(char s[1005])
{
    int ok=1,aux;
    i=0;
    while(ok)
    {
        ok=0;
        i=1;
        while(i<j)
        {
            if(strcmp(ing.nume,ing[i+1].nume)==1)
            {
                ok=1;
                strcpy(nr,ing.nume);
                strcpy(ing.nume,ing[i+1].nume);
                strcpy(ing[i+1].nume,nr);
                aux=ing.g;
                ing.g=ing[i+1].g;
                ing[i+1].g=aux;
            }
            else ++i;
        }
    }
}
void afisare(char s[1005])
{
    fout<<sum<<'\n';
    for(i=1; i<=j; ++i)
        fout<<ing.nume<<" "<<ing.g<<'\n';
}
int main()
{
    char s[1005];
    fin.getline(s,1005);
    suma(s);
    produse(s);
    adunare(s);
    sortare(s);
    afisare(s);
}
Pagini: [1]
Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines