•razyelx
Client obisnuit
Karma: 0
Deconectat
Mesaje: 82
|
|
« Răspunde #50 : Aprilie 02, 2007, 21:28:55 » |
|
citeste mai atent postul lui Bluedrop_demon si o sa iti dai seama unde bat
|
|
|
Memorat
|
|
|
|
•cosser
Strain
Karma: 4
Deconectat
Mesaje: 39
|
|
« Răspunde #51 : Decembrie 15, 2007, 14:10:20 » |
|
poate nu voi primi nici un raspuns si poate ca nu e bine daca pun sursa pe forum... totusi de curiozitate ce gresesc cand scriu asta #include<fstream> #include<ctype.h> #include<stdio.h> using namespace std; ifstream f("text.in"); ofstream o("text.out");
char s[1000][1000]; int i=1,n,m=0,j,n1;
int main() { f>>s[i]; while(!f.eof()) {n=i; i++; f>>s[i]; }
for(i=1;i<=n;i++) {for(j=0;j<=' ';j++) if(isalpha(s[i][j])) m++; //verific sa fie intre A..Z sau a..z }
o<<m/n;
return 0; }
|
|
|
Memorat
|
|
|
|
•skyel
|
|
« Răspunde #52 : Decembrie 15, 2007, 14:34:23 » |
|
alphanumeric contine si numeric nu doar alpha (adica are si 0...9)
|
|
|
Memorat
|
|
|
|
•cosser
Strain
Karma: 4
Deconectat
Mesaje: 39
|
|
« Răspunde #53 : Decembrie 15, 2007, 14:36:11 » |
|
isalnum() este pentru litere su cifre isalpha() este pentru litere numai
|
|
|
Memorat
|
|
|
|
•skyel
|
|
« Răspunde #54 : Decembrie 15, 2007, 14:42:35 » |
|
j<=' ' ce vrea sa insemne asta... j este de tip int Oricum mi se pare ca te complici prea mult p-acolo tu treb sa aflii cate cuvinte sunt ("da-te" in cazul problemei sunt 2, la tine este considerat 1(f>>s iti citeste pana la spatiu))
|
|
|
Memorat
|
|
|
|
•cosser
Strain
Karma: 4
Deconectat
Mesaje: 39
|
|
« Răspunde #55 : Decembrie 15, 2007, 15:06:02 » |
|
ups! da asa e cu j<=' ' oricum mergea pana la 255 dar am corectat asta inainte. in fine, am inteles gresit problema si am un caracter "-" ca un cuvant de asta la exemplul din enunt am numarat tot 11 cuvinte. de fapt "-" nu inseamna nimic ci separa un duvant in doua. "da-te" sunt 2 cuvinte ai sups. a fost o interpretare gresita.
|
|
|
Memorat
|
|
|
|
•ciprianf
|
|
« Răspunde #56 : Ianuarie 11, 2008, 22:56:38 » |
|
Am si eu o problema ......cand incerc sa rulez imi da eroare si zice ceva de genu cannot conver char to char * ....uitati fragmentul de sursa while(!feof(f)); { ok=0; fscanf(f,"%c",&x); if ((x==" " || x=="-")&& car>1) cuv++; else for (i="a";i<="z";i++) if (i==x) {ok=1; break;} if (ok==0) for (i="A";i<="Z";++i) if(i==x) {ok=1; break;} if (ok==1) car++; } fprintf(g,"%d",car/cuv);
|
|
« Ultima modificare: Ianuarie 11, 2008, 23:46:48 de către Andrei Grigorean »
|
Memorat
|
|
|
|
•stef2n
|
|
« Răspunde #57 : Ianuarie 11, 2008, 23:10:38 » |
|
Ai grija sa pui ghilimele simple cand e vorba de caractere si ghilimele duble cand e vorba de siruri. In codul tau, inlocuieste "A" cu 'A' (si in mod similar pentru celelalte) si o sa mearga.
|
|
|
Memorat
|
Exista 10 categorii de oameni: cei care inteleg sistemul binar si cei care nu il inteleg.
|
|
|
•ciprianf
|
|
« Răspunde #58 : Ianuarie 11, 2008, 23:18:35 » |
|
Merci mult a mers............dar acum cand ii dau rulare imi intra in ciclu infinit si nu se mai opreste...ai vreo idee de ce?
|
|
|
Memorat
|
|
|
|
•stef2n
|
|
« Răspunde #59 : Ianuarie 11, 2008, 23:28:10 » |
|
Vezi ca dupa while(!feof(f)) ai punct si virgula, deci nici nu se intra in blocul scris intre acolade. Scapa de el (de punct si virgula).
|
|
|
Memorat
|
Exista 10 categorii de oameni: cei care inteleg sistemul binar si cei care nu il inteleg.
|
|
|
•drywater
Strain
Karma: -1
Deconectat
Mesaje: 3
|
|
« Răspunde #60 : Ianuarie 28, 2008, 17:29:20 » |
|
Ce ii gresit la programu asta?( iau 60 puncte); Daca citesc caracter cu caracter iau 100 #include <stdio.h> #include <string.h> FILE *in,*o; char s[10000],sep[]="_ 1234567890,.?/!;\'-@#$%^&*(){}[]|:<>+~`",*a; int n,nr,nrc,l,i,se,j; float r; main() { in=fopen("text.in","r"); o=fopen("text.out","w"); while (!feof(in)) { fgets(s,10000,in); n=strlen(s); for (i=0;i<n;i++) { if (s[i]<='z' && s[i]>='a' || s[i]<='Z' && s[i]>='A') nr++; } a=strtok(s,sep); if (a!=NULL) nrc++; while (a!=NULL) {nrc++; a=strtok(NULL,sep); } nrc--; } r=nr/nrc; fprintf(o,"%d",int(r)); fclose(in); fclose(o); return 0; }
|
|
|
Memorat
|
|
|
|
•Florian
|
|
« Răspunde #61 : Ianuarie 28, 2008, 19:03:29 » |
|
Ce ii gresit la programu asta?( iau 60 puncte); Daca citesc caracter cu caracter iau 100 #include <stdio.h> #include <string.h> FILE *in,*o; char s[10000],sep[]="_ 1234567890,.?/!;\'-@#$%^&*(){}[]|:<>+~`",*a; int n,nr,nrc,l,i,se,j; float r; main() { in=fopen("text.in","r"); o=fopen("text.out","w"); while (!feof(in)) { fgets(s,10000,in); n=strlen(s); for (i=0;i<n;i++) { if (s[i]<='z' && s[i]>='a' || s[i]<='Z' && s[i]>='A') nr++; } a=strtok(s,sep); if (a!=NULL) nrc++; while (a!=NULL) {nrc++; a=strtok(NULL,sep); } nrc--; } r=nr/nrc; fprintf(o,"%d",int(r)); fclose(in); fclose(o); return 0; } Pai nu spune nicaieri ca textul se afla pe o singura linie. Probabil de astea iei doar 60.
|
|
|
Memorat
|
|
|
|
•drywater
Strain
Karma: -1
Deconectat
Mesaje: 3
|
|
« Răspunde #62 : Ianuarie 28, 2008, 19:39:56 » |
|
am luat pt. mai multe linii, am citit pe rand fiecare linie
|
|
|
Memorat
|
|
|
|
•Florian
|
|
« Răspunde #63 : Ianuarie 28, 2008, 20:18:47 » |
|
Aa.. scuze. Nu am vazut ca ce ai tu e intr`un while. Vezi ca s-ar putea sa fie de la faptul ca pe o linie sunt mai multe de 10.000 de caractere. Altceva nu prea vad...
|
|
|
Memorat
|
|
|
|
•soriyn
|
|
« Răspunde #64 : Februarie 05, 2008, 19:04:55 » |
|
am o intrebare ati tinut cont de cratima? eu am luat doar 40 puncte am facut programul bazandu-ma ca un cuvant este o succesiune de litere,iar cand intalneste cratima sa imi considere doua cuvinte. Acum imi ia in calcul si linia de dialog si imi iese cu un cuvant mai mult ce sa fac? LE: hmm 70 pct stiti cum pot calcula partea intreaga a unui nr?
|
|
« Ultima modificare: Februarie 05, 2008, 19:19:37 de către sorin sorin »
|
Memorat
|
|
|
|
•gabitzish1
|
|
« Răspunde #65 : Februarie 05, 2008, 19:16:44 » |
|
In exemplul din enuntul problemei sunt 11 cuvinte, inseamna ca "Lasa-ma" este luat ca doua cuvinte.
|
|
|
Memorat
|
|
|
|
•Florian
|
|
« Răspunde #66 : Februarie 05, 2008, 19:22:56 » |
|
LE: hmm 70 pct stiti cum pot calcula partea intreaga a unui nr? Pai ca sa calculezi partea intreaga a catului impartirii lui a la b faci doar x = a/b. Iar daca, cumva x e de tip real, faci y=(int)x, unde y e de tip int.
|
|
|
Memorat
|
|
|
|
|
•Florian
|
|
« Răspunde #68 : Februarie 05, 2008, 19:32:50 » |
|
asa am facut si eu, dar am observat ca daca nu am nimic scris programul crapa, si probabil de acolo am WA. ma intreb daca pot sa vad de la inceput daca-i gol fisierul din care citesc este gol si sa afisez 0 Pai..probabil ca imparti la 0, pt ca numarul de cuvine e 0, in caz ca fisierul e gol. Pune si tu o conditie sa ai nr de cuvine >=1. Daca nr de cuvinte = 0 atunci afisezi 0. Ma indoiesc insa ca e din cauza asta...
|
|
|
Memorat
|
|
|
|
•soriyn
|
|
« Răspunde #69 : Februarie 05, 2008, 19:42:47 » |
|
asa am facut si eu, dar am observat ca daca nu am nimic scris programul crapa, si probabil de acolo am WA. ma intreb daca pot sa vad de la inceput daca-i gol fisierul din care citesc este gol si sa afisez 0 Pai..probabil ca imparti la 0, pt ca numarul de cuvine e 0, in caz ca fisierul e gol. Pune si tu o conditie sa ai nr de cuvine >=1. Daca nr de cuvinte = 0 atunci afisezi 0. Ma indoiesc insa ca e din cauza asta... da imparteam ca "desteptu" la 0 dar tot am WA pe testele 2,5,8 nu stiu unde gresesc
|
|
|
Memorat
|
|
|
|
•hulparuadrian
Strain
Karma: 0
Deconectat
Mesaje: 15
|
|
« Răspunde #70 : Februarie 26, 2008, 11:31:03 » |
|
Secventele numerice sunt considerate cuvinte??? Pentru ca iau WA pe testul 9 si nu stiu unde gresesc...
|
|
|
Memorat
|
|
|
|
•DITzoneC
|
|
« Răspunde #71 : Februarie 26, 2008, 12:00:53 » |
|
Nu. Nu sunt considerate cuvinte. un cuvant fiind definit ca o secventa continua maximala de caractere ale alfabetului englez ('a' .. 'z' , 'A' .. 'Z').
|
|
|
Memorat
|
|
|
|
•ghitza_2000
Strain
Karma: -7
Deconectat
Mesaje: 16
|
|
« Răspunde #72 : Martie 08, 2008, 16:58:18 » |
|
Vreau sa stiu si eu ceva..... la problema text ce am gresit de iau numai 70 pct? var ct,S,d:longint; i,c1:char; f,g:text; m:set of char; begin assign(f,'text.in'); reset(f); m:=[]; for i:='a' to 'z' do m:=m+[i]; d:=0; ct:=0; s:=0; for i:='A' to 'Z' do m:=m+[i]; while (not eof(f)) do begin read(f,c1); if eoln(f) then readln(f); if [c1]*m<>[] then begin d:=d+1; inc(S); end; if (([c1]*m=[]) and (d<>0)) then begin inc(ct); d:=0; end; end; close(f); assign(g,'text.out'); rewrite(g); if ct=0 then writeln(g,'0') else writeln(g,S div ct); close(g); end.
|
|
« Ultima modificare: Martie 08, 2008, 17:12:29 de către Stefan Istrate »
|
Memorat
|
|
|
|
•ghitza_2000
Strain
Karma: -7
Deconectat
Mesaje: 16
|
|
« Răspunde #73 : Martie 12, 2008, 22:28:17 » |
|
Cine imi spune si mie unde gresesc deoarece imi ia WA pe testul 6 si 9 Am incercat toate posibilitatile, dar nimik
|
|
|
Memorat
|
|
|
|
•fireatmyself
|
|
« Răspunde #74 : Martie 23, 2008, 17:15:45 » |
|
problema e la do{ok=0; while(c>='a'&&c<='z' || c>='A'&&c<='Z'){nrl++;fin.get(c);ok=1;} fin.get(c); if(ok==1){i++;okk=1;}
}while((int)c!=-1); programul tau cicleaza pentru ca nu verifici (bine) cand ajungi la sfarsitul fisierului. ca sa citesti dintr-un fisier pana la ultimul caracter foloseste acest cod. while (fin.get(c)) { if (c>='a'&&c<='z' ||c>='A'&&c<='Z') {nrl++; ok = 1;} else if (ok==1) {i++; okk=1;} }
|
|
|
Memorat
|
Viata e scurta. Daca nu o putem lungi, macar s-o facem lata.
|
|
|
|