afisarea cmmdc in fisier

Pascal este un limbaj imperativ, creat inițial pentru a ajuta la predarea noțiunilor de programare structurati studenților. Delphi, urmașul lui Pascal, este un mediu de dezvoltare pentru aplicații Windows. Delphi este primul limbaj de programare (Object Pascal, mai exact) care a îmbinat ușurința în programare a limbajelor de nivel înalt și puterea uneltelor de lucru de nivel scăzut într-un mediu RAD.

Re: afisarea cmmdc in fisier

Postby nutzu2010 » 06 Jun 2010, 19:36

Adrian wrote:


Cred ca mai degraba in algoritmul tau sortat inseamna nesortat...

scuze dar am uitat sa pun sortat:=true; inainte sa intre in while
  1.  
  2. sortat:=true;
  3. while sortat do
  4. begin
  5. sortat:=false;
  6. for i:=1 to n do
  7. if a[i]>a[i+1] then begin
  8.                             aux:=a[i];
  9.                             a[i]:=a[i+1];
  10.                             a[i+1]:=aux;
  11.                             sortat:=true;
  12.                             end;
  13. end;
  14.  

l-am testat si l-a sortat...acum trebuie sa afisez numere care nu sunt in intervalul [1,100]
o sa ma mai gandesc si o sa va spun
0,0p / 0 votes
User avatar
nutzu2010
Bit
 
Joined: 27 Feb 2010
Status: 0

Re: afisarea cmmdc in fisier

Postby smith » 06 Jun 2010, 19:56

Spune-mi daca ai citit ce ti-am zis :P
0,0p / 0 votes
Ilea Cristian
User avatar
smith
Enum
 
Joined: 29 Dec 2009
Location: Cluj-Napoca
Status: 82

Re: afisarea cmmdc in fisier

Postby nutzu2010 » 06 Jun 2010, 20:00

pai acolo vad ca pentru c++,nu?sau e aceasi metoda?
0,0p / 0 votes
User avatar
nutzu2010
Bit
 
Joined: 27 Feb 2010
Status: 0

Re: afisarea cmmdc in fisier

Postby morpheus » 06 Jun 2010, 20:19

C'mon.
Declari un vector v, avand 100 de elemente: v[1..100]
Initializezi toate elementele vectorului cu valoarea 0: v[i] = 0, cu i = 1..100
Pentru fiecare numar x citit (apartinand multimii 1..100), faci v[x] = 1
Pentru i de la 1 la 100, daca v[i] are valoarea 0 atunci afisezi v[i]
0,0p / 0 votes
Curiosity killed the cat
User avatar
morpheus
Word
 
Joined: 30 Dec 2009
Location: Bucharest, Romania
Status: 54.84

Re: afisarea cmmdc in fisier

Postby emi » 06 Jun 2010, 20:46

Smith, esti prea dur, nu trebuia sa imi stergi mesajul, pina si morpheus vine cu aceeasi idee.
Omul a incercat, si daca nu e pe calea buna, lasa sa ii dam idei.
0,0p / 0 votes
User avatar
emi
Byte
 
Joined: 10 Apr 2010
Status: 18

Re: afisarea cmmdc in fisier

Postby smith » 06 Jun 2010, 20:57

Bine mai, ajutati-l. Si asa e pe langa. Is curios cat va lua la bac.
0,0p / 0 votes
Ilea Cristian
User avatar
smith
Enum
 
Joined: 29 Dec 2009
Location: Cluj-Napoca
Status: 82

Re: afisarea cmmdc in fisier

Postby nutzu2010 » 06 Jun 2010, 21:10

smith wrote:Bine mai, ajutati-l. Si asa e pe langa. Is curios cat va lua la bac.

pai asta e cea mai grea problema adica ultima...in subiectul de bac sunt doar 2-3 probleme care valoreaza 2-2,5,restu' sunt usoare,aproape toate...
0,0p / 0 votes
User avatar
nutzu2010
Bit
 
Joined: 27 Feb 2010
Status: 0

Re: afisarea cmmdc in fisier

Postby smith » 06 Jun 2010, 21:14

Si cand te gandesti ca problemele de olimpiada sunt undeva la milioane lumina distanta :))
0,0p / 0 votes
Ilea Cristian
User avatar
smith
Enum
 
Joined: 29 Dec 2009
Location: Cluj-Napoca
Status: 82

Re: afisarea cmmdc in fisier

Postby nutzu2010 » 06 Jun 2010, 21:31

eu postez aici doar ce nu stiu(ce nu inteleg)...sunt constient ca nu stiu prea multe,dar nu prea m-a interesat informatica in 9-11(adica invatam problemele fara inteleg mare lucru...bine aici e si de vina profa care e putin mai desteapta ca mine)


L.E. (-- 06 Jun 2010, 20:28 --)

morpheus wrote:C'mon.
Declari un vector v, avand 100 de elemente: v[1..100]
Initializezi toate elementele vectorului cu valoarea 0: v[i] = 0, cu i = 1..100
Pentru fiecare numar x citit (apartinand multimii 1..100), faci v[x] = 1
Pentru i de la 1 la 100, daca v[i] are valoarea 0 atunci afisezi v[i]

din cate am inteles asa ar trebui sa fie,dar l-am testat si imi afiseaza doar numere de la n in sus,pana la 100.
  1.  
  2. program calcul;
  3. type sir=array[1..100] of integer;
  4. var v:sir; f:text;
  5. begin
  6. assign(f,'numere.in');
  7. reset(f);
  8. readln(f,n);
  9. for i:=1 to 100 do
  10. v[i]:=0;
  11. for i:=1 to n do read(f,v[i]);
  12. close(f);
  13. for i:=1 to n do v[i]:=1;
  14. for i:=1 to 100 do
  15. if v[i]=0 then write(i,' ');
  16. readln;
  17. end.
  18.  

morpheus wrote:Pentru i de la 1 la 100, daca v[i] are valoarea 0 atunci afisezi v[i]

pai daca v[i] are valoarea 0 de ce sa afisez v[i]??? nu o sa-mi afiseze foarte multi de 0???
0,0p / 0 votes
User avatar
nutzu2010
Bit
 
Joined: 27 Feb 2010
Status: 0

Re: afisarea cmmdc in fisier

Postby morpheus » 06 Jun 2010, 22:46

Afisezi i, nu v[i]. Am scris eu gresit mai sus.

Pentru exemplul tau:

  1.  
  2. 12
  3. 4 2 3 1 6 5 7 8 9 11 10 100
  4.  


initial, toate elementele vectorului v[i] (cu i = 1..100) au valoarea 0.
Dupa citirea din fisier si aplicarea algoritmului descris: v[1] = 1, v[2] = 1 ... v[11] = 1, v[100] = 1
Apoi afisezi indicii elementelor care au valoarea 0 ( adica 12, 13, ... 99)
0,0p / 0 votes
Curiosity killed the cat
User avatar
morpheus
Word
 
Joined: 30 Dec 2009
Location: Bucharest, Romania
Status: 54.84

Re: afisarea cmmdc in fisier

Postby emi » 06 Jun 2010, 23:25

Nu m-am abtinut, am pus ceva pina la urma.

  1. program numere_lipsa;
  2. var
  3.     fin: text;
  4.     v: array[1..100] of boolean;
  5.     n, i: word;
  6.     nu_lipseste: boolean;
  7.  
  8. procedure init;
  9. begin
  10.     for i := 1 to 100 do v[i] := false;
  11. end;
  12.  
  13. procedure load;
  14. var
  15.     t: word;
  16. begin
  17.     assign(fin, 'numere.in');
  18.     reset(fin);
  19.     readln(fin, n);
  20.     for i := 1 to n do begin
  21.         read(fin, t);
  22.         v[t] := true;
  23.     end;
  24.     close(fin);
  25. end;
  26.  
  27.  
  28. begin
  29.     init;
  30.     load;
  31.  
  32.     nu_lipseste := true;
  33.     for i := 1 to 100 do begin
  34.         if(v[i]=false) then begin
  35.             write(i, ' ');
  36.             nu_lipseste := false;
  37.         end;
  38.     end;
  39.     if(nu_lipseste) then writeln('NU LIPSESTE NICIUN NUMAR');
  40.  
  41.     readln;
  42.     { asteapta ENTER }
  43. end.


@nutzu: daca ai inteles ce am facut, ramine sa explici algoritmul, si complexitatea lui, daca stii ce e aia.
0,0p / 0 votes
User avatar
emi
Byte
 
Joined: 10 Apr 2010
Status: 18

Re: afisarea cmmdc in fisier

Postby nutzu2010 » 07 Jun 2010, 10:41

morpheus wrote:Afisezi i, nu v[i]. Am scris eu gresit mai sus.

Pentru exemplul tau:

  1.  
  2. 12
  3. 4 2 3 1 6 5 7 8 9 11 10 100
  4.  


initial, toate elementele vectorului v[i] (cu i = 1..100) au valoarea 0.
Dupa citirea din fisier si aplicarea algoritmului descris: v[1] = 1, v[2] = 1 ... v[11] = 1, v[100] = 1
Apoi afisezi indicii elementelor care au valoarea 0 ( adica 12, 13, ... 99)

pai da e bine asa,dar daca in exemplu numerele nu era consecutive
spre exemplu:12
3 2 4 5 6 9 8 34 56 12 15 29
la acest exemplu tie ti-ar afisa numere de la 56 in sus...nu? si nu ar mai afisa si oe 1 7 10...


L.E. (-- 07 Jun 2010, 09:37 --)

emi wrote:Nu m-am abtinut, am pus ceva pina la urma.

  1. program numere_lipsa;
  2. var
  3.     fin: text;
  4.     v: array[1..100] of boolean;
  5.     n, i: word;
  6.     nu_lipseste: boolean;
  7.  
  8. procedure init;
  9. begin
  10.     for i := 1 to 100 do v[i] := false;
  11. end;
  12.  
  13. procedure load;
  14. var
  15.     t: word;
  16. begin
  17.     assign(fin, 'numere.in');
  18.     reset(fin);
  19.     readln(fin, n);
  20.     for i := 1 to n do begin
  21.         read(fin, t);
  22.         v[t] := true;
  23.     end;
  24.     close(fin);
  25. end;
  26.  
  27.  
  28. begin
  29.     init;
  30.     load;
  31.  
  32.     nu_lipseste := true;
  33.     for i := 1 to 100 do begin
  34.         if(v[i]=false) then begin
  35.             write(i, ' ');
  36.             nu_lipseste := false;
  37.         end;
  38.     end;
  39.     if(nu_lipseste) then writeln('NU LIPSESTE NICIUN NUMAR');
  40.  
  41.     readln;
  42.     { asteapta ENTER }
  43. end.


@nutzu: daca ai inteles ce am facut, ramine sa explici algoritmul, si complexitatea lui, daca stii ce e aia.

foarte tare programul tau...
deci tu ai facut la inceput un vector[1..100] in care toate elementele au valoarea false;
t reprezinta,pe rand(de la 1 la n), numerele din fisier...si ii dai valoarea true vectorului v[t](adica numerelor care au aparut in fisier)
iar cele care nu au aparut au ramas neschimbate adica cu valoarea false;
apoi ai mai folosit o variabila boolean pentru a verifica daca exista vreun numar care nu a fost citit
daca toate numerele apar atunci nu_lipseste ramane tot la valoarea de true si afiseaza NU LIPSESTE NICIUN NUMAR.
iar complexitate presupun ca se refera la eficienta acestuia pentru ca verifica toate numerele din fisier indiferent de pozitia lor si afiseaza toate numerele care nu au aparut in fiser .
cred ca e bine.
0,0p / 0 votes
User avatar
nutzu2010
Bit
 
Joined: 27 Feb 2010
Status: 0

Re: afisarea cmmdc in fisier

Postby Adrian » 07 Jun 2010, 12:06

@Nutzu

1) Referitor la algoritmul de sortare... m-am prins ca nu ai pus randul ala cu true, stai linistit, ideea e ca functioneaza oarecum... diferit codul de cum ai explicat de unde inteleg ca... nu ai inteles nimic din el si ar trebui sa te mai uiti putin peste

2) emi ti-a oferit for free o implementare a metodei lui morpheus si tu nu ti-ai dat seama... adica hai sa parcurgem rand-cu-rand ce ti-a explicat el...

morpheus wrote:C'mon.
Declari un vector v, avand 100 de elemente: v[1..100]
Initializezi toate elementele vectorului cu valoarea 0: v[i] = 0, cu i = 1..100
Pentru fiecare numar x citit (apartinand multimii 1..100), faci v[x] = 1
Pentru i de la 1 la 100, daca v[i] are valoarea 0 atunci afisezi v[i]


Regasim in codul lui emi:
# procedure init;
# begin
# for i := 1 to 100 do v[i] := false;
# end;
adica : Initializezi toate elementele vectorului cu valoarea 0: v[i] = 0, cu i = 1..100 (0/false... tot pe-acolo ca si functionalitate)

# for i := 1 to n do begin
# read(fin, t);
# v[t] := true;
# end;
vezi: Pentru fiecare numar x citit (apartinand multimii 1..100), faci v[x] = 1

# for i := 1 to 100 do begin
# if(v[i]=false) then begin
# write(i, ' ');
# nu_lipseste := false;
# end;
# end;
which means: Pentru i de la 1 la 100, daca v[i] are valoarea 0 atunci afisezi v[i] (corectat ulterior la v[i]... nu era o greseala majora...)

Pe scurt, tu nu ai reusit sa-ti dai seama ca cei doi algoritmi sunt _identici_ (bonus partea cu nu_lipseste, intr-adevar) - eu in locul tau as pune f serios mana pe carte (pardon, tastatura) pentru bac... desi daca e asa cum zici tu ca asta e subiectul cel greu (eu am dat fizica la bac pentru ca imi trebuia la admitere, recunosc ca nu stiu)...

Then I gave the analogy of a Greek scholar who loves the Greek language, who knows that in his own country there aren't many children studying Greek. But he comes to another country, where he is delighted to find everybody studying Greek--even the smaller kids in the elementary schools. He goes to the examination of a student who is coming to get his degree in Greek, and asks him, "What were Socrates' ideas on the relationship between Truth and Beauty?"--and the student can't answer. Then he asks the student, What did Socrates say to Plato in the Third Symposium?" the student lights up and goes, "Brrrrrrrrr-up"--he tells you everything, word for word, that Socrates said, in beautiful Greek. But what Socrates was talking about in the Third Symposium was the relationship between Truth and Beauty! (Richard Feynman vorbind despre Bac...)
0,0p / 0 votes
User avatar
Adrian
Byte
 
Joined: 04 May 2010
Status: 13.5

Re: afisarea cmmdc in fisier

Postby nutzu2010 » 07 Jun 2010, 15:12

Adrian wrote:@Nutzu
...
2) emi ti-a oferit for free o implementare a metodei lui morpheus si tu nu ti-ai dat seama... adica hai sa parcurgem rand-cu-rand ce ti-a explicat el...

aaaa...nu intelesesem la morpheus de ce pusese v[x]:=1; dar acum vad ca sunt aproape la fel...
0,0p / 0 votes
User avatar
nutzu2010
Bit
 
Joined: 27 Feb 2010
Status: 0

Previous

Return to Pascal / Delphi

Who is online

Users browsing this forum: No registered users and 0 guests