Afişează mesaje
|
|
Pagini: [1]
|
|
1
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / 008 Cifra
|
: 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!
|
|
|
|
|
2
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / 008 Cifra
|
: 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.
|
|
|
|
|
3
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / 008 Cifra
|
: 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. 
|
|
|
|
|
4
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / 008 Cifra
|
: 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?
|
|
|
|
|
5
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / 008 Cifra
|
: 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.
|
|
|
|
|
6
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / 008 Cifra
|
: 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).
|
|
|
|
|
7
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / 008 Cifra
|
: 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? 
|
|
|
|
|