Pagini: 1 [2] 3 4 ... 12   În jos
  Imprimă  
Ajutor Subiect: 008 Cifra  (Citit de 106947 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« Răspunde #25 : Octombrie 24, 2005, 16:20:00 »

ideea tot aia e Tongue
Memorat

omului i-au fost date instinctele pentru a supravietui, nu pentru a fi sclavul lor.
blasterz
Nu mai tace
*****

Karma: 92
Deconectat Deconectat

Mesaje: 255



Vezi Profilul
« Răspunde #26 : Noiembrie 15, 2005, 19:10:55 »

Imi spune shi mie d c evaluatorul imi da 0pct la pb cifra?
Cod:

#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
De-al casei
***

Karma: 51
Deconectat Deconectat

Mesaje: 145



Vezi Profilul
« 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 Shame on you
Memorat

blasterz
Nu mai tace
*****

Karma: 92
Deconectat Deconectat

Mesaje: 255



Vezi Profilul
« Răspunde #29 : Noiembrie 16, 2005, 08:32:58 »

Am gasit problema Very Happy trebuia folosit inca un vector cu valori apropiate ........dar totushi  evaluatorul mi-a dat 90 d puncte Neutral

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
Nu mai tace
*****

Karma: 88
Deconectat Deconectat

Mesaje: 704



Vezi Profilul
« 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
Cod:
 
sau butonul "Code" ca sa se formateze corect liniile (sa se mentina taburile si spatiile pt identare)
Memorat
LucAnd
Strain
*

Karma: -1
Deconectat Deconectat

Mesaje: 26



Vezi Profilul
« 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)

Cod:

...

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 Deconectat

Mesaje: 7



Vezi Profilul
« 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:
Cod:
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? Brick wall
Memorat
svalentin
Nu mai tace
*****

Karma: 88
Deconectat Deconectat

Mesaje: 704



Vezi Profilul
« Răspunde #33 : Ianuarie 03, 2006, 12:30:48 »

incearca rewrite(e); in loc de append(e);
Memorat
Cloud
Strain


Karma: -1
Deconectat Deconectat

Mesaje: 7



Vezi Profilul
« 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
Nu mai tace
*****

Karma: 88
Deconectat Deconectat

Mesaje: 704



Vezi Profilul
« 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 Smile ), 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 Deconectat

Mesaje: 7



Vezi Profilul
« 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 Smile ).
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". Sad
Mie imi merge perfect, insa evaluatorul tot zice ca lipseste fisierul de iesire.
Memorat
svalentin
Nu mai tace
*****

Karma: 88
Deconectat Deconectat

Mesaje: 704



Vezi Profilul
« 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 Deconectat

Mesaje: 7



Vezi Profilul
« 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"). Tongue .
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
Nu mai tace
*****

Karma: 88
Deconectat Deconectat

Mesaje: 704



Vezi Profilul
« 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:

Cod:

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 Deconectat

Mesaje: 7



Vezi Profilul
« 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.
Cod:
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. Smile
Memorat
svalentin
Nu mai tace
*****

Karma: 88
Deconectat Deconectat

Mesaje: 704



Vezi Profilul
« Răspunde #41 : Ianuarie 03, 2006, 19:07:26 »

uite-te putin la:
Cod:
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

Cod:
if i=1 then
   rewrite (e)
else append (e);
Memorat
Cloud
Strain


Karma: -1
Deconectat Deconectat

Mesaje: 7



Vezi Profilul
« 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. Sad 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
Nu mai tace
*****

Karma: 88
Deconectat Deconectat

Mesaje: 704



Vezi Profilul
« Răspunde #44 : Ianuarie 04, 2006, 11:06:57 »

Citat din mesajul lui: Cloud
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. Sad 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 Deconectat

Mesaje: 7



Vezi Profilul
« Răspunde #45 : Ianuarie 04, 2006, 16:28:48 »

Citat
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. Embarassed
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. Very Happy
Acuma problema mea e ca-mi da raspuns gresit, dar de asta pot sa ma ocup si eu!  Mr. Green  Multumesc pentru ajutor!
Memorat
Coty
Nu mai tace
*****

Karma: 6
Deconectat Deconectat

Mesaje: 235



Vezi Profilul WWW
« Răspunde #46 : Ianuarie 05, 2006, 09:54:56 »

Citat din mesajul lui: Cloud
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 Wink sa vezi daca nu sunt cam putine elem in vector... asta daca folosesti vectorii care sunt declarati "vector" la ce cred eu... Tongue
Memorat
the_godfather
Strain
*

Karma: -6
Deconectat Deconectat

Mesaje: 26



Vezi Profilul
« 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?
Cod:
#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;
}
Brick wall
Am tot incercat si incercat zile in sir da nu imi iese nimic.  Question
Memorat
wefgef
Nu mai tace
*****

Karma: 1049
Deconectat Deconectat

Mesaje: 3.008


razboinicu' luminii


Vezi Profilul
« 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 Deconectat

Mesaje: 26



Vezi Profilul
« 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 Smile
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
Pagini: 1 [2] 3 4 ... 12   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines