•wefgef
|
|
« Răspunde #25 : Octombrie 24, 2005, 16:20:00 » |
|
ideea tot aia e
|
|
|
Memorat
|
omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
|
|
|
•blasterz
|
|
« Răspunde #26 : Noiembrie 15, 2005, 19:10:55 » |
|
Imi spune shi mie d c evaluatorul imi da 0pct la pb cifra? #include <stdio.h> #include <string.h> int a, b, T,i,j, l, S1, S2, nr; char x[101]; int v[11]={0, 1, 4, 7, 6, 5, 6, 3, 6, 9};
void calcul() {
FILE*f=fopen("cifra.in", "r"); FILE*g=fopen("cifra.out", "w"); fscanf(f, "%d\n", &T); for(i=1;i<=T;i++) { for(j=0;j<=100;j++) x[j]=0; fgets(x, 100, f); l=strlen(x); //l--;
if(l>1) a=x[l-2]-'0'; else a=0; b=x[l-1]-'0'; S1=0; for(j=0;j<=b;j++) S1+=v[j]; S2=(7*a)%10; nr=(S1+S2)%10;
fprintf(g,"%d\n", nr);
} fclose(f); fclose(g); }
int main() { calcul(); return 0; }
[edited by svalentin] Folosteste [*code*][*/code*] (fara *) pentru a formata cod!
|
|
|
Memorat
|
|
|
|
u-92
Vizitator
|
|
« Răspunde #27 : Noiembrie 15, 2005, 20:50:10 » |
|
fa un brute force pt numerele de la 1 la 99 si compara cu ce afiseaza programul tau.. (apropo daca citeai mai sus gaseai deja acest raspuns)
|
|
|
Memorat
|
|
|
|
•Adriana_S
|
|
« Răspunde #28 : Noiembrie 15, 2005, 21:05:16 » |
|
am generat niste teste random si programul tau da niste raspunsuri complet gresite....asa ca data viitoare mai gandeste-te inainte sa postezi asa codul pe forum...in 99% dintre cazuri evaluatoru isi face datoria corect si evalueaza asa cum trebuie
|
|
|
Memorat
|
|
|
|
•blasterz
|
|
« Răspunde #29 : Noiembrie 16, 2005, 08:32:58 » |
|
Am gasit problema trebuia folosit inca un vector cu valori apropiate ........dar totushi evaluatorul mi-a dat 90 d puncte Va multzumesc oricum pentru efortul depus [edited by svalentin] posts merged; nu mai posta de 2 ori consecutiv, daca mai ai ceva de adaugat, foloseste edit
|
|
|
Memorat
|
|
|
|
•svalentin
|
|
« Răspunde #30 : Noiembrie 16, 2005, 10:30:40 » |
|
Incercati sa nu mai postati programe intregi! (vad ca la problema asta este o moda) Si daca postati, folositi sau butonul "Code" ca sa se formateze corect liniile (sa se mentina taburile si spatiile pt identare)
|
|
|
Memorat
|
|
|
|
•LucAnd
Strain
Karma: -1
Deconectat
Mesaje: 26
|
|
« Răspunde #31 : Decembrie 16, 2005, 17:24:38 » |
|
nu stiu ce formule ati gasit voi da eu pur si simplu am folosit metoda : fie x penultima cifra din numar si y ultima cifra (le afli f usor cu putina imaginatie citind char cu char) imi i-a 100 p usor si fara bataie de cap daca ce am scris eu e prea explicit va rog stergeti E prea explicit. Sa nu se mai repete, pentru ca pana stergem noi dau copy/paste/submit destui.
|
|
|
Memorat
|
|
|
|
•Cloud
Strain
Karma: -1
Deconectat
Mesaje: 7
|
|
« Răspunde #32 : Ianuarie 03, 2006, 12:25:43 » |
|
Nu stiu de ce dar mie intotdeauna imi da mesajul "Fisier de iesire lipsa!" la evaluator indiferent de cum modific procedura de scriere. Am si verificat daca fisierul meu de iesire e acelasi cu cel scris in problema si este la fel. Asta e procedura mea de scriere: procedure scriere (n:longint); var e:text; begin assign (e,'cifra.out'); append (e); writeln (e,n); close (e); end; Poate sa ma ajute cineva, va rog?
|
|
|
Memorat
|
|
|
|
•svalentin
|
|
« Răspunde #33 : Ianuarie 03, 2006, 12:30:48 » |
|
incearca rewrite(e); in loc de append(e);
|
|
|
Memorat
|
|
|
|
•Cloud
Strain
Karma: -1
Deconectat
Mesaje: 7
|
|
« Răspunde #34 : Ianuarie 03, 2006, 12:46:51 » |
|
Asta am facut-o si in programul principal si in procedura (am mai introdus o variabila locala "i" care o folosesc pentru a citi elementele unui vector si o folosesc in procedura ca sa stearga tot ce e in fisierul de iesire daca i=1). In orice caz am facut si asa si tot zice ca lipseste fiserul de iesire (singura diferenta este ca in fisierul de iesire imi scrie doar rezultatul pentru ultimul n din fisierul de intrare deoarece procedura de scriere sterge tot cand e apelata).
|
|
|
Memorat
|
|
|
|
•svalentin
|
|
« Răspunde #35 : Ianuarie 03, 2006, 13:01:58 » |
|
poti sa incerci sa faci un programel mic care tot ce face este sa deschida fisierul .out, sa scrie ceva in el (1 de exemplu) si apoi sa il inchizi; vezi daca iti da aceeasi eroare apoi uite o sugestie (daca am inteles eu bine cum faci tu): tu deschizi fisierul odata la inceput, apoi de fiecare data cand e apelata functia aia; nu mai inchide fisierul; deschide-l odata la inceput cu rewirte, apoi lasa-l deschis, nu mai apela close; cand vrei sa mai adaugi ceva, pur si simplu mai scrii in fisier (desigur, variabila de fisier este globala); si inainte sa iesi din program inchizi fisierul. In cazul in care iesi fortat cu halt (parca asta era in pascal); poti sa iti faci o procedura care intai inchide fisierul apoi apeleaza halt. Note: sistemul de operare trece toate operatiile de IO printr-un cache (si bine face ), dar daca ai mai multe teste intr-un fisier, e bine sa il fortezi sa scrie in fisier (nu numai in cache) dupa fiecare test caclulat; pentru asta ai o functie (sau procedura, zi-i cum vrei...) flush sau ceva asemanator. Atentie insa, asta o sa iti creasca timpul de executie! E bine sa-l fortezi sa scrie efectiv in fisier in cazuri in care programul tau poate iese din timp uneori sau mai da erori uneori si se acorda punctaje partiale.
|
|
|
Memorat
|
|
|
|
•Cloud
Strain
Karma: -1
Deconectat
Mesaje: 7
|
|
« Răspunde #36 : Ianuarie 03, 2006, 13:54:43 » |
|
Am incercat sa fac programelul mic si mi-a mers (a zis raspuns gresit, deci a vazut ca am fisierul de iesire ). Am incercat sa fac programul meu dupa sugestia ta (variabila globala "e", deschid cu "rewrite", procedura doar adauga in fisier, inchid fisierul la sfarsitul programului, etc.) si tot imi da "fisier de iesire lipsa". Mie imi merge perfect, insa evaluatorul tot zice ca lipseste fisierul de iesire.
|
|
|
Memorat
|
|
|
|
•svalentin
|
|
« Răspunde #37 : Ianuarie 03, 2006, 14:34:07 » |
|
vezi sa nu fi gresit numele fisierului sau ceva de genul acesta
|
|
|
Memorat
|
|
|
|
•Cloud
Strain
Karma: -1
Deconectat
Mesaje: 7
|
|
« Răspunde #38 : Ianuarie 03, 2006, 15:03:42 » |
|
Am zis in primul post ca am verificat daca am gresit numele ("Am si verificat daca fisierul meu de iesire e acelasi cu cel scris in problema si este la fel"). . Oricum as face (cu close in procedura sau in programul principal) tot nu vede evaluatorul fisierul de iesire (desi la mine merge). Am tot incercat alte modalitati de 3 zile incoace, dar daca n-a mers am zis sa apelez la forum. Nu pot sa postez tot programul aici, nu?
|
|
|
Memorat
|
|
|
|
•svalentin
|
|
« Răspunde #39 : Ianuarie 03, 2006, 15:37:55 » |
|
nu.. dar poti sa trimiti pm/ mail cuiva care vrea sa se uite peste ea si a facut problema (eu de exemplu nu am facut problema asta) sau poti sa incerci sa postezi doar bucatiile de cod legate de IO, insa cu tot cu structurile repetitive sau functiile din care fac parte; adica ceva de genul: var a:array[1..100] of integer; e:text;
procedure scrie(i:integer) begin [...] writeln(e,a[i]); [...] end;
[...]
begin assign(e,'cifra.out'); rewrite(e); readln(ceva); [...] for i=1 to n do scrie(); [...] close(e); end.
|
|
|
Memorat
|
|
|
|
•Cloud
Strain
Karma: -1
Deconectat
Mesaje: 7
|
|
« Răspunde #40 : Ianuarie 03, 2006, 15:58:41 » |
|
Atunci o sa postez aici progamul principal si procedura de scriere, sper sa fie de folos. program cifra; type vector=array [0..20]of longint; var n,i:longint; a:vector; [...]
procedure scriere (c:longint); var e:text; begin assign (e,'cifra.out'); if i=1 then rewrite (e); append (e); writeln (e,c); close (e); end;
[...]
begin citire (n,a); for i:=1 to n do scriere (suma(a[i])); end. Sper sa nu fie vreo problema. Apropo, multumesc mult pentru ajutor.
|
|
|
Memorat
|
|
|
|
•svalentin
|
|
« Răspunde #41 : Ianuarie 03, 2006, 19:07:26 » |
|
uite-te putin la: if i=1 then rewrite (e); append (e);
daca i este 1 se executa: rewrite (e); append (e); ... nu stiu exact ce se intampla in acest caz, dar pune un else pe-acolo if i=1 then rewrite (e) else append (e);
|
|
|
Memorat
|
|
|
|
•Cloud
Strain
Karma: -1
Deconectat
Mesaje: 7
|
|
« Răspunde #42 : Ianuarie 03, 2006, 19:43:40 » |
|
Cred ca daca nu pun begin dupa un if atuncia programul urmeaza doar prima instructiune (daca conditia e indeplinita) , nu urmatoarele 2 (ca altfel mi-ar fi scris doar primul rezultat deoarece s-a inchis fisierul si "append (e)" nu mai e luat in calcul cand i=2). In orice caz am incercat si asa, si tot nu merge. Am incercat sa fac si cu conditia in principala, stergand-o din procedura, nimic.
|
|
|
Memorat
|
|
|
|
ditzone
Vizitator
|
|
« Răspunde #43 : Ianuarie 03, 2006, 22:59:24 » |
|
Dar de ce tii neaparat sa folosesi procedura append ? .... Eu unu nu tin minte sa o fi folosit vreodata in vreun program... Poti pur si simplu sa deschizi fisieru la inceputu programului... scrii ce ai nevoie si inchizi la sfarsit.
|
|
|
Memorat
|
|
|
|
•svalentin
|
|
« Răspunde #44 : Ianuarie 04, 2006, 11:06:57 » |
|
Cred ca daca nu pun begin dupa un if atuncia programul urmeaza doar prima instructiune (daca conditia e indeplinita) , nu urmatoarele 2 (ca altfel mi-ar fi scris doar primul rezultat deoarece s-a inchis fisierul si "append (e)" nu mai e luat in calcul cand i=2). In orice caz am incercat si asa, si tot nu merge. Am incercat sa fac si cu conditia in principala, stergand-o din procedura, nimic. da asa e! dar append(e) se executa indiferent de valoarea lui i! deci daca i este 1 se executa si rewrite si append, daca i este 2 se executa doar 2... dar oricum, e mult mai bine (si mult mai rapid) sa nu mai inchizi fisierul si sa il deschizi de 1000 de ori; la fel cu a zis si ditzone, la fel cu am zis si eu; cel mai bine deschizi fisierul la inceput cu rewrite si il inchizi la sfarsit. mai mult nu stiu ce poate sa aiba programul tau...
|
|
|
Memorat
|
|
|
|
•Cloud
Strain
Karma: -1
Deconectat
Mesaje: 7
|
|
« Răspunde #45 : Ianuarie 04, 2006, 16:28:48 » |
|
dar oricum, e mult mai bine (si mult mai rapid) sa nu mai inchizi fisierul si sa il deschizi de 1000 de ori; la fel cu a zis si ditzone, la fel cu am zis si eu; cel mai bine deschizi fisierul la inceput cu rewrite si il inchizi la sfarsit. Da, ai dreptate. Acum m-am gandit scrierea repetata pe hard consuma mai mult timp decat daca le-as trece in cache si dupa ce am terminat progamul sa le trec din cache in fisier. Pana la urma am aflat problema: programul se bloca la citire. Era o conditie care n-am vazut-o prea bine :1 ≤ N < 10^100. Eu l-am pus in program pe n ca longint, si desigur ca daca la teste se foloseau numere foarte mari, programul dadea eroare inainte sa scrie ceva in fisier. Ghinionul meu era ca toate testele foloseau numere mari, deci d-asta imi dadea mie eroarea. Problema rezolvata scriind numerele in string si apoi atribuind lui n numai ultimele 2 cifre din nr. Acuma problema mea e ca-mi da raspuns gresit, dar de asta pot sa ma ocup si eu! Multumesc pentru ajutor!
|
|
|
Memorat
|
|
|
|
•Coty
|
|
« Răspunde #46 : Ianuarie 05, 2006, 09:54:56 » |
|
Atunci o sa postez aici progamul principal si procedura de scriere, sper sa fie de folos.
program cifra; type vector=array [0..20]of longint;
mai uite-te aici sa vezi daca nu sunt cam putine elem in vector... asta daca folosesti vectorii care sunt declarati "vector" la ce cred eu...
|
|
|
Memorat
|
|
|
|
•the_godfather
Strain
Karma: -6
Deconectat
Mesaje: 26
|
|
« Răspunde #47 : Ianuarie 19, 2006, 00:30:37 » |
|
Am observat ca se repeta din 100 in 100 si am luat in calcul ultimele doua cifre. Am facut inmultirea pe numerele mari si apoi afisam rezultatul.Da iau 0 puncte. De ce? Am scris in fisier 120 de nr si am calculat pentru 30 matematic, cu calculatorul si mi-au dat ca si in fisierul de iesire da tot zero puncte iau. Oricum la adunare si inmultire conteaza numai ultima cifra. Imi poate spune si mie cineva va rog ce am gresit in sursa urmatoare? #include <fstream.h> ifstream f("cifra.in"); ofstream g("cifra.out"); int u=0,i,j,n,p; int put(int k) { int h,ul=1; for(h=1;h<=k;h++) { ul=ul*k; ul=ul%10; } return ul; } int main() { f>>n; for(i=1;i<=n;i++) { f>>p; p=p%100; u=0; for(j=1;j<=p;j++) { u+=put(j); u=u%10; } g<<u<<"\n"; } return 0; } Am tot incercat si incercat zile in sir da nu imi iese nimic.
|
|
|
Memorat
|
|
|
|
•wefgef
|
|
« Răspunde #48 : Ianuarie 19, 2006, 22:06:03 » |
|
hint: cat iti da ptr 100?
|
|
|
Memorat
|
omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
|
|
|
•the_godfather
Strain
Karma: -6
Deconectat
Mesaje: 26
|
|
« Răspunde #49 : Ianuarie 24, 2006, 13:32:44 » |
|
Pentru 100 imi da 0. Asta e fisieru meu de iesire avand in cel de intrare 120 de numere pornind de la 1......pana la 120 [...] - era prea explicit Nu stiam ca e bun. Da greseam cand puneam limitele si voiam sa il streg si eu de aici. Deci cifra.out este: 1 5 2 8 3 . . .restul va las acuma sa il descoperiti.
|
|
|
Memorat
|
|
|
|
|