Variana 10, s I bac - alte seturi de date de intrare

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.

Variana 10, s I bac - alte seturi de date de intrare

Postby andreiandreiq » 23 Sep 2010, 19:17

Salutare, ma poate ajuta cineva sa rezolv problema de mai jos. Subpunctele a) si b), la a am calculat eu, si mi-a dat nr=24, dar vreau sa fiu sigur ca am facut bine. Problema este la b), nu imi dau seama ce regula trebuie aplicata pentru a afla alte seturi de date de intrare care sa afiseze 234.

1.Se consideră algoritmul alăturat, descris în pseudocod. S-a notat cu [c] partea întreagă a numărului real c,
iar cu a%b restul împărţirii numărului întreg a la b.

a) Scrieţi valoarea care se afişează, în urma executării algoritmului, dacă se citeşte pentru n valoarea 23456 şi pentru k valoarea 3.

b) Scrieţi două seturi distincte de date de intrare, astfel încât, pentru fiecare dintre ele, în urma executării algoritmului, să se afişeze valoarea 234.

  1.  
  2. citeşte n,k
  3. (numere naturale nenule)
  4. nr <- 0
  5. p <-  1
  6. ┌cât timp n≠0 şi k≠0 execută
  7. │┌dacă n%2≠0 atunci
  8. ││ nr <- nr + [n/10]%10*p
  9. ││ p <- p*10
  10. ││altfel
  11. ││ k <- k-1
  12. │└■
  13. │ n <- [n/10]
  14. └■
  15. scrie nr
0,0p / 0 votes
Image
User avatar
andreiandreiq
Word
 
Joined: 30 Dec 2009
Status: 33.33

Re: Variana 10, s I bac - alte seturi de date de intrare

Postby smith » 23 Sep 2010, 22:13

În lumea mea imaginară, algoritmul arată ceva de genul:

n reprezintă input
k reprezintă numărul "de câte ori am voie să sar peste o cifră pară"
nr reprezintă un fel de "stivă" (întoarsă?), asta dacă știi termenul. Adică dacă bag elementele 2,3,4,5 în ordinea asta, nr va fi 5432.

  1. |cât timp n!= și k!=0
  2. |   dacă n e impar
  3. |          | elimin temporar cifra impară din n și adaug următoare cifră din n în nr.
  4. |   altfel scad k
  5. |
  6. |elimin o cifră din n


Tu trebuie să faci drumul invers. Știi că nr este 234 iar n și k sunt 0. Mai știm că cifrele din nr au fost introduse în nr în ordinea 4->3->2.

Să zicem că n este 234. Dar ca 4 să fie introdus în nr, înaintea cifrei 4 ar fi trebuit să fie o cifră impară (să intre în IF). Deci să zicem 2341.Repeți pașii. Pentru ca 3 să fie introdus în nr trebuie ca înaintea lui să fie o cifră impară. Să zicem 23141. La cifra 2 nu mai trebuie introdus un număr impar în față deoarece este deja 3.

Astfel numărul devine 23141. Ca să generezi mai multe soluții bagi numere pare înainte de o cifră impară (dar nu între 2 impare) ex: 23141888, 2314166. Dacă numărul are cifra cea mai din stânga una pară poți să adaugi cifre pare ca să generezi și alte soluții. Ex: 888823141, 442314122. Și ajustezi K.

Sper că ai înțeles ceva :D. (și sper să nu fi greșit că mi-s cam obosit)
0,0p / 0 votes
Ilea Cristian
User avatar
smith
Enum
 
Joined: 29 Dec 2009
Location: Cluj-Napoca
Status: 82

Re: Variana 10, s I bac - alte seturi de date de intrare

Postby andreiandreiq » 24 Sep 2010, 17:38

Se pare ca lumea ta imaginara a avut dreptate.

Mersi smith ;)
0,0p / 0 votes
Image
User avatar
andreiandreiq
Word
 
Joined: 30 Dec 2009
Status: 33.33


Return to Pascal / Delphi

Who is online

Users browsing this forum: No registered users and 0 guests