Afişează mesaje
Pagini: [1]
1  infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 006 Evaluarea unei expresii : August 23, 2010, 12:20:44
Evaluarea se face sub linux. Pe windows compilatorul are bug-uri, etc. Tu ai linux ca sa iti dea cum e pe infoarena ? Smile

nu am linux...
2  infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 006 Evaluarea unei expresii : August 23, 2010, 11:32:29
mie continua sa imi dea gresit...  :/ chiar daca pe evaluator primeste 100
Ai pus enter dupa terminarea expresiei ?
App: citeste cu fgets, nu cu gets.


pe sursa asta http://infoarena.ro/job_detail/479201?action=view-source iau 100 de puncte pentru ca am modificat citirea cu fgets. dar mie tot imi da gresit pe exemplu "(296+(286+891+(82+179+358-(48)*(0/173))-(251)))", poate si pe altele. nu inteleg, parca e zona crepusculara.... am pus si enter la sfarsitul expresiei (in fis de intrare) si da tot gresit. raman recunoscator daca imi emplica cineva misteru asta
3  infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Grupul topcoderilor de pe infoarena va saluta! : August 22, 2010, 20:29:14
m am uitat pe site nu arata nici un concurs la high school
http://www.topcoder.com/tc?module=Static&d1=hs&d2=TCHSSchedule

si aici http://www.topcoder.com/tc?module=Static&d1=calendar&d2=thisMonth
SRM, e  tot asa pe divizii?
4  infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 006 Evaluarea unei expresii : August 22, 2010, 20:19:28
mie continua sa imi dea gresit...  :/ chiar daca pe evaluator primeste 100
5  infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 006 Evaluarea unei expresii : August 22, 2010, 01:48:36
si eu am updatat sursa mea cu modificarea pe care ai mentionat o si primesc acelasi rezutlat gresit... daca si tie iti face la fel inseamna ca e ceva dubios Smile

primesc acelasi rezultat gresit si pe sursele cu recurenta indirecta... ciudat nu?

1. fgets ( S, MAX, stdin ) citeste primele MAX elemente din fisierul stdin ( sau fisier deschis cu FILE ) , in charul S. Fata de gets, el citeste si caracterul de sf. de linie , adica '\n'. S[strlen(S) - 1] o sa fie '\n', pe langa ce la gets acest caracter este ultimul caracter , adica acelasi cu S[strlen(S) - 2].

greseala din programu meu nu avea legatura cu ultimu caracter... el se termina (ca si restu solutiilor cu recursivitate) dupa primu numar...
6  infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 006 Evaluarea unei expresii : August 22, 2010, 01:27:10
ms frumos :hug:


2 chestii  daca ai poti sa la lamuresti..
care e diferenta dintre fgets (vad ca ii dai mai multi parametrii) si gets?
ce ar putea face ca sursa asta ( http://infoarena.ro/job_detail/185143?action=view-source ) sa dea reulztatul gresit pe calculatorul meu? 296 in loc de 1841 la testu 2 pe calculatoru meu...

7  infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Grupul topcoderilor de pe infoarena va saluta! : August 21, 2010, 21:51:10
salut, nu sunt nici pe departe bun la programare  dar vreau sa fac facultate in domeniu si as vrea sa lucrez cat mai mult... am citit intreg topicul si ati spus ca au concursuri si pentru nivel de high school.
merita ca un incepator ca mine sa incerce si pe top coder?

LE: are cineva un exemplu de problema de cel mai mic nivel de acolo? (am cautat dar nu am gasit)
8  infoarena - concursuri, probleme, evaluator, articole / Concursuri / Răspuns: IOI 2010 : August 21, 2010, 16:01:56
felicitari  Applause
9  infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 006 Evaluarea unei expresii : August 21, 2010, 13:59:01
foarte frumoasa sursa facuta de Lucian Boca Thumb up

LE:
intrebare:

y = eval( x, expr(lev+1), *p++ );

programul intra in
expr(lev+1) dupa ce ii trimite *p ca parametru lui eval (p ca parametru nu este incrementat si ca pointer (global) este incrementat)
sau
expr(lev+1) dupa ce ii trimite *p ca parametru lui eval (p ca parametru nu este incrementat  si nici ca variabila)
sau
expr(lev+1) inainte sa ii trimita *p ca parametru lui eval (deci p global nu este incrementat)

multumesc anticipat, sunt nou in ale pointerilor

LE2: mda nu imi dau seama deloc!... am facut niste surse in care sa testez si mai mult m am incurcat

LE3:
Cod:
int expr( int lev ){
char S[NN],*p=S,op[2][3]={"+-","*/"};

int eval( int a,int b, char op ){
switch ( op ) {
case '+' : return a+b;
case '-' : return a-b;
case '*' : return a*b;
case '/' : return a/b;
}
}

int expr( int lev ){
int x, y;

if( lev == LMAX ){
if( *p == '('){
++p, x = expr( 0 ) ,++p;
}
else {
for( x=0; *p>='0' && *p<='9'; p++ ){
x= x*10 + *p-'0';
}
}
}
else {
for( x=expr(lev+1) ; strchr(op[lev],*p) ; x=y){
y= eval(x , expr(lev+1), *p++);
}
}

return x;
}

pe linia unde y = eval(..) intra in expr fara ca *p sa fie incrementat. astfel in caz ca este  semn si paranteza ex (...+(...)  *p indica tot + si intra in eval unde ajunge dupa inca doua autochemari sa fie *p diferit de paranteza si sa intre in forul in care se creaza x dar acolo *p e diferit de [0,..,9] (pt ca a ramas la +) si x ramane  cu val 0 dupa care iese din toate si se termina programu fara sa termine de evaluat toata expresia

http://infoarena.ro/job_detail/479037?action=view-source


LE4: pentru testul 2
 "(296+(286+891+(82+179+358-(48)*(0/173))-(251)))"
programu meu returneaza 296, am mers cu debugu si am gasit problema (am scris mai sus) si nu stiu cum sa o rezolv...

si mai ciudat e ca imi da acelasi rezultat gresit si pe celalate surse care folosesc metoda recursiva. insa cand le trimit numai a mea e gresita...
si tot la solutiile care folosesc recursivitate (copiate din solutiile oficiale) primesc acest warring "evaluare.cpp:33: warning: control reaches end of non-void function" / are vreo legatura?

help va rog !
10  infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 017 Combinari : August 14, 2010, 01:14:03
ms frumos, nu prea stiam eu ce sunt permutarile. am cautat si acum inteleg. ms din nou
11  infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 017 Combinari : August 13, 2010, 00:42:38
Permutarile sunt diferite de combinari, deci nu prea le poti gasi cu next_permutation si prev_permutation.

Se poate folosind next_permutation !

uite sursa :

http://infoarena.ro/job_detail/444889?action=view-source

salut, ms pt info, chiar nu ii dadeam de cap...

insa nu am inteles chiar tot.

pt exemplu n=4 k=3:

programu tau face asa:

un vector 0 0 0 1 ( i1=1,i2=2,i3=3,i4=4 nu am pus si primu 0 de indice 0 ca sa fie usor de vazut)
si face asa

0 0 0 1 printeaza de la 1 la 4 indicele termenului care nu e 0 aici fiind 1 2 3
0 0 1 0 printeaza 1 2 4
0 1 0 0 printeaza 1 3 4
1 0 0 0 iar aici am problema pt ca eu anticipam sa schimbe intre ei cei 2 de 0 din coada, desi ar fi fost o permutare identica ca a 3a si ar fi printat tot 1 3 4... de ce sare peste ea? stiu ca da rezultatul corect dar de ce face asa si cum? e prea tare next_permutation
Pagini: [1]
Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines