•zalman
Strain
Karma: -11
Deconectat
Mesaje: 31
|
 |
« Răspunde #75 : Aprilie 03, 2008, 12:17:43 » |
|
cifrele intra la separatori sau se iau ca si cuvinte?tot 40 de pct ...si nu inteleg unde e problema  imi puteti da si mie testele 2,5 si 6?vreau sa vad ce nu merge si de ce nu merge... 
|
|
« Ultima modificare: Aprilie 03, 2008, 12:56:35 de către Andrei Grigorean »
|
Memorat
|
|
|
|
•tm_radu
|
 |
« Răspunde #76 : Aprilie 03, 2008, 14:53:41 » |
|
zalman : Ce metoda folosesti? Stiu ca luam 40 de puncte daca foloseam separatori si apoi am luat 100 dupa ce citeam fisierul caracter cu caracter si retineam doar numarul de cuvinte si lungimea totala a lor.
|
|
|
Memorat
|
Daca nu merge o preblema, depaneaz-o, si abia apoi arunci calculatoru pe geam
|
|
|
•stocarul
|
 |
« Răspunde #77 : Aprilie 04, 2008, 15:37:21 » |
|
Eu cred ca asta e cel mai simplu algoritm, insa nu inteleg de ce imi pica testul 7. Imi da wrong Answer!....Vedeti voi ceva gresit?, ca eu nu vad... #include <fstream> using namespace std; fstream in,out; long i; char v[1050000]; long c=0,l=0,t=0;
int main() { in.open("text.in",ios::in); out.open("text.out",ios::out); in.getline(v,1050000,'EOF'); in.close(); i=0; while(v[i]!=0) { t=0; while(((v[i]>=65 && v[i]<=90) || (v[i]>=97 && v[i]<=122)) && v[i]!=0) { t++; i++; } if(t>0) { l=l+t; c++; } else i++; } if(c>0) out<<(l/c); else out<<"0"; out.close(); return 0; }
|
|
|
Memorat
|
|
|
|
•stocarul
|
 |
« Răspunde #78 : Aprilie 04, 2008, 16:29:48 » |
|
Sunt mult mai multe cazuri;) Dar in enunt scrie negru pe alb: cuvantul are doar [a-z][A-Z]....deci iese din discuti eceasta problema;)
|
|
|
Memorat
|
|
|
|
•rEbyTer
|
 |
« Răspunde #79 : Aprilie 04, 2008, 16:36:25 » |
|
 , nu a fost cine ştie ce problema (ca grad de dificultate)... am folosit un cache , o funcţie şi câteva linii în main  in cache reţineam ultimul caracter introdus, cu ajutorul lui verificam dacă fac sau nu trecerea la un alt cuvânt nou.... Foarte frumoasă problema  P.S.: nu mai folosiţi toate funcţiile pe care le întâlniţi , că unele din ele nu sunt eficiente (la concursuri) ... Încercaţi să vă feriţi când le întâlniţi.
|
|
|
Memorat
|
|
|
|
•fireatmyself
|
 |
« Răspunde #80 : Aprilie 04, 2008, 16:38:49 » |
|
@marius: citeste cu atentie enuntul. "intr-o" sunt 2 cuvinte. "...un cuvant fiind definit ca o secventa continua maximala de caractere ale alfabetului englez ('a' .. 'z' , 'A' .. 'Z') @cosmin: in.getline(v,1050000,'EOF'); 'EOF' nu este end of file. foloseste functie pentru citire (in.get) citire sau foloseste (in loc de 'EOF') un caracter care nu apare niciodata (spre exemplu '\0')
|
|
|
Memorat
|
Viata e scurta. Daca nu o putem lungi, macar s-o facem lata.
|
|
|
•rEbyTer
|
 |
« Răspunde #81 : Aprilie 04, 2008, 16:46:47 » |
|
Mai am o întrebare... Cum poţi să înveţi azi- noapte , toată ziua ?  e prea tare fraza - Lasa-ma in pace, ca am invatat azi noapte toata ziua!
|
|
|
Memorat
|
|
|
|
•stocarul
|
 |
« Răspunde #82 : Aprilie 04, 2008, 16:53:30 » |
|
@marius: citeste cu atentie enuntul. "intr-o" sunt 2 cuvinte. "...un cuvant fiind definit ca o secventa continua maximala de caractere ale alfabetului englez ('a' .. 'z' , 'A' .. 'Z') @cosmin: in.getline(v,1050000,'EOF'); 'EOF' nu este end of file. foloseste functie pentru citire (in.get) citire sau foloseste (in loc de 'EOF') un caracter care nu apare niciodata (spre exemplu '\0') Multumesc:) Nu stiam ca '\0' este pana la sfarsitul fisierului:) Multumesc inca o data...am mai invatat ceva;))
|
|
|
Memorat
|
|
|
|
•fireatmyself
|
 |
« Răspunde #83 : Aprilie 04, 2008, 17:52:07 » |
|
Nu stiam ca '\0' este pana la sfarsitul fisierului:) Multumesc inca o data...am mai invatat ceva;))
cred ca m-am exprimat eu prost. EOF este end of file, dar tu ai scris 'EOF '. intre ' ' se pune un sigur caracter in c/c++. iei 100 si daca scrii in.getline(v,1050000,EOF); '\0' marcheaza sfarsitul unui sir de caractere. daca scrii codul urmator char s[10]; s[0] = '1'; s[1] = '2';
si te uiti la pozitia s[2], o sa vezi ca s[2] = '\0'. am zis sa folosesti '\0' pt ca este un caracter care nu apare niciodata in fisier. imi cer scuze ca te-am bulversat 
|
|
|
Memorat
|
Viata e scurta. Daca nu o putem lungi, macar s-o facem lata.
|
|
|
•DITzoneC
|
 |
« Răspunde #84 : Aprilie 04, 2008, 19:48:17 » |
|
'\0' marcheaza sfarsitul unui sir de caractere. daca scrii codul urmator char s[10]; s[0] = '1'; s[1] = '2';
si te uiti la pozitia s[2], o sa vezi ca s[2] = '\0'. Nu cred ca este neaparat '\0', continutul vectorilor este initalizat aleator daca sunt variabile locale.
|
|
|
Memorat
|
|
|
|
•wefgef
|
 |
« Răspunde #85 : Aprilie 04, 2008, 20:01:43 » |
|
lol cat de usoara era pr asta si eu mam chinuit ptr 100 dar acu miai dat seama ca era foarte usoara ... am intrebato si pe profa de roamana care cuvinte despartite in silabe sunt considerate doua =)) lol  si nici nu trebuia mia facut profa mea o lista cu toate cuvintele despartite cu - care sunt considerate ca doua =)) si acu vad ca era foarte usoara prima oara asa am facuto dar citeam cu stream-uri si de aia luam doar 40 acu vad ce usoara era si eu mam chinuit ca un prost =)) Ce ar fi sa scrii corect? Forumul infoarena nu este yahoo messenger 
|
|
|
Memorat
|
omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
|
|
|
•fireatmyself
|
 |
« Răspunde #86 : Aprilie 04, 2008, 20:46:49 » |
|
[...] Eu de obicei nu prea citesc enunturile dar stiu ca am incercat si asa si nu luam 100
nu este o atitudine corecta. daca vrei sa ajungi la ONI anul viitor, ar trebui sa citesti pana la ultima virgula. si un sfat offtopic... n-ar strica sa nu te mai grabesti si sa scrii mai ingrijit. 
|
|
|
Memorat
|
Viata e scurta. Daca nu o putem lungi, macar s-o facem lata.
|
|
|
•jupanu92
Client obisnuit

Karma: -86
Deconectat
Mesaje: 76
|
 |
« Răspunde #87 : Aprilie 05, 2008, 12:01:50 » |
|
Am inteles !! Mersi pentru sfaturi .
|
|
|
Memorat
|
|
|
|
•shnako
Client obisnuit

Karma: 3
Deconectat
Mesaje: 50
|
 |
« Răspunde #88 : Decembrie 28, 2008, 17:12:49 » |
|
Imi poate spune cineva cum pot optimiza programu asta ? Ca pe 3 teste iau TLE  #include <stdio.h> #include <ctype.h> int s=0, c; bool sw; char x; int main() { freopen("text.in","r",stdin); freopen("text.out","w",stdout); while(scanf("%c", &x)!=EOF) { sw=1; while (!isalpha(x)&&!EOF) scanf("%c", &x); while (isalpha(x)&&!EOF) { sw=0; s++; scanf("%c", &x); } if (sw==0) c++; } printf("%d", s/c); return 0; }
|
|
|
Memorat
|
|
|
|
•jupanubv92
Client obisnuit

Karma: 19
Deconectat
Mesaje: 74
|
 |
« Răspunde #89 : Decembrie 28, 2008, 17:46:24 » |
|
Daca schimbi citirea iei sigur 100 de puncte . Uite cum am citit eu : x=fgetc(stdin); while(!feof(stdin) // deci ce citesti tu cu scanf("%c",&x) schimbi si citesti cu x=fgetc(stdin) // si in loc de !EOF pui ! feof(stdin) Eu am facut problema mai de mult dar am trimis sursa ta din nou cu citirea asta sa fiu sigur ca nu iti spun prostii.
|
|
« Ultima modificare: Decembrie 28, 2008, 20:57:28 de către Popescu Marius »
|
Memorat
|
|
|
|
•c_e_manu
|
 |
« Răspunde #90 : Decembrie 28, 2008, 19:06:28 » |
|
eu am citit cu streamuri si tot a intrat  scapa de while-uri... pastreaza-l doar pe cel pana la sfarsitul fisierului, si in blocul respectiv foloseste doar if-uri... nu are rost sa postez partea aceea de cod ca ar fii toata rezolvarea la problema...  LE: @marius: cum ai trimis tu sursa lui cand a ta are 0.90 kb si a lui 0.40? 
|
|
|
Memorat
|
|
|
|
•jupanubv92
Client obisnuit

Karma: 19
Deconectat
Mesaje: 74
|
 |
« Răspunde #91 : Decembrie 28, 2008, 20:55:40 » |
|
Sursa mea are 0.90 kb pentru ca in sursa sunt doua variante: 1. E varianta asta a lui numai ca i-am schimbat citirea 2. Este problema cu care am luat eu 100 de p si am rezolvat-o mai de mult numai ca am pus-o in comentariu . Am trimis-o si fara comentariu sa vezi ca are 0.40 si ca nu mint . 
|
|
|
Memorat
|
|
|
|
•shnako
Client obisnuit

Karma: 3
Deconectat
Mesaje: 50
|
 |
« Răspunde #92 : Decembrie 29, 2008, 11:35:53 » |
|
Ambele variante dau 100 de puncte  Ms mult 
|
|
|
Memorat
|
|
|
|
•gggbbbyyy
Strain
Karma: 0
Deconectat
Mesaje: 2
|
 |
« Răspunde #93 : Martie 17, 2009, 11:04:36 » |
|
Daca citesti problema atent iei 100... trebuie sa afisezi nr intreg ci nu cu zecimale
|
|
|
Memorat
|
|
|
|
•Bit_Master
|
 |
« Răspunde #94 : Martie 29, 2009, 14:50:40 » |
|
Daca in problema scrie ca pe prima linie se citeste textul, de ce se intinde textul si pe liniile urmatoare. N-ar trebui modificat enuntul in "incepand cu prima linie"?  Am luat 40 puncte cand citeam doar prima linie si 100 cand am citit toate liniile. 
|
|
|
Memorat
|
|
|
|
•chibicitiberiu
Strain
Karma: 3
Deconectat
Mesaje: 49
|
 |
« Răspunde #95 : Martie 31, 2009, 11:18:22 » |
|
pt o sursa de genul: #include <fstream.h> #include <string.h> ifstream fin("text.in"); ofstream fout("text.out"); unsigned long nrc,nrl,medie; int ok; char c; int main() { fout<<3; return 0; } primesc eroarea de compilare: /usr/lib/gcc-lib/i486-linux/3.3.5/../../../crt1.o(.text+0x18): In function `_start': ../sysdeps/i386/elf/start.S:98: undefined reference to `main' collect2: ld returned 1 exit status  Trebuie sa pui #include<fstream> in loc de #include<fstream.h> si dupa #include pui 'using namespace std;'. GCC nu e la fel ca Borland C.
|
|
|
Memorat
|
|
|
|
•gabitzish1
|
 |
« Răspunde #96 : Martie 31, 2009, 18:24:08 » |
|
pt o sursa de genul: #include <fstream.h> #include <string.h> ifstream fin("text.in"); ofstream fout("text.out"); unsigned long nrc,nrl,medie; int ok; char c; int main() { fout<<3; return 0; } primesc eroarea de compilare: /usr/lib/gcc-lib/i486-linux/3.3.5/../../../crt1.o(.text+0x18): In function `_start': ../sysdeps/i386/elf/start.S:98: undefined reference to `main' collect2: ld returned 1 exit status  Trebuie sa pui #include<fstream> in loc de #include<fstream.h> si dupa #include pui 'using namespace std;'. GCC nu e la fel ca Borland C. Trimite'i si un mail ca i'ai raspuns, sa citeasca si u-92. Probabil si'a pierdut toate sperantele ca il va lamuri cineva. 
|
|
« Ultima modificare: Martie 31, 2009, 18:37:36 de către Gabriel Bitis »
|
Memorat
|
|
|
|
•popoiu.george
|
 |
« Răspunde #97 : Mai 01, 2009, 15:44:45 » |
|
Nu inteleg, se considera si numerele cuvinte?
ex: Mi-am luat 1 kg de cirese.
Voi cum ati facut?
Daca iau numa caracterele a,...,z si A,....,Z primesc doar 40 pct. Iau WA la 5 teste si Killed by signal 8(SIGFPE) la 1.
Ma puteti ajuta?
|
|
|
Memorat
|
|
|
|
•Alexa_ioana_14
Strain
Karma: 6
Deconectat
Mesaje: 37
|
 |
« Răspunde #98 : Mai 14, 2009, 13:01:20 » |
|
Eu am citit initial s[i-1] si s , i={1,...scanf()!=EOF} si am verificat daca s[i-1]==litera=> ++litera; iar daca s!= litara =>++cuvant; Am luat separat s[n]==0 s[n-1] ultimul caracter din sir:daca s[n-1]==litera atunci ++litera; si daca e litera verificam caracterul s[n-2] si dak nu era litera ++cuvant; daca s=("...aaa...a") fara " ", nu imi da corect... Unde gresesc? 
|
|
|
Memorat
|
|
|
|
•andrici_cezar
|
 |
« Răspunde #99 : Mai 14, 2009, 14:09:16 » |
|
Trebuie sa faci test la final deoarece el nu citeste si enterul;) si trebuie sa ai grija ca daca e "alex alex" tie o sa iti zica ca e un singur cuvant si trebuie sa pui "if (s[n]==litera) ++cuvant;" asta o pui fix dupa ce ai iesit din while;) sau e alta problema?
|
|
|
Memorat
|
|
|
|
|