[Tema] Algoritm in pseudocod
Last Updated: May 29 2016 12:50, Started by
1marius1
, May 28 2016 22:13
·
0
#1
Posted 28 May 2016 - 22:13
Am urmatoarea problema de rezolvat (din varianta de bac 2016 pentru sesiunea speciala):
[ https://i.imgur.com/ZdwSMmJ.jpg - Pentru incarcare in pagina (embed) Click aici ] Am rezolvat si raspunsurile date de mine sunt: a) 4 b.) 9 Am scris problema intr-un compilator sa verific daca raspunsul de la subpunctul a) este corect si compilatorul mi-a confirmat asta, dar in barem spune ca raspunsul corect este 3. Iar pentru subpunctul b.), 18. E gresit in barem sau am gresit eu si compilatorul ?!? Imi poate explica cineva? Asa arata programul scris in c++: #include <iostream> using namespace std; main() { unsigned n,k=1,m=1; cin>>n; while(n>9) { if(n%10==n/10%10) { k=k+1; if(k>m) m=k; else k=1; } n=n/10; } cout<<m; } Edited by 1marius1, 28 May 2016 - 22:15. |
#2
Posted 28 May 2016 - 22:20
Ne spui si noua in cuvintele tale ce face programul prezentat in pseudocod ?
|
#3
Posted 28 May 2016 - 22:29
MarianG, on 28 mai 2016 - 22:20, said:
Ne spui si noua in cuvintele tale ce face programul prezentat in pseudocod ? -daca sunt egale: k-ul creste cu o unitate, daca k>m , m primeste k, iar in caz contrar k primeste 1. apoi se trece mai departe -daca nu sunt egale se trece mai departe. Adica algoritmul numara cate cifre alaturate sunt egale, numaratoarea incepand de la 1. |
#4
Posted 28 May 2016 - 22:40
Quote Am rezolvat si raspunsurile date de mine sunt: a) 4 si tu spui ca ai numarat bine ? 1marius1, on 28 mai 2016 - 22:29, said:
-daca sunt egale: k-ul creste cu o unitate, daca k>m , m primeste k, iar in caz contrar k primeste 1. apoi se trece mai departe Edited by MarianG, 28 May 2016 - 22:44. |
#5
Posted 29 May 2016 - 08:47
MarianG, on 28 mai 2016 - 22:40, said:
input: 81112337 si tu spui ca ai numarat bine ? mai incearca odata, cand resetezi contorul ? Programul trebuia scris asa: while(n>9) { if(n%10==n/10%10) { k=k+1; if(k>m) m=k; } else k=1; n=n/10; } Deci contorul se reseteaza cand cifrele alaturate difera... Edited by 1marius1, 29 May 2016 - 08:52. |
#6
Posted 29 May 2016 - 11:20
Mai bine:
while(n>9) { if(n%10==(n/10)%10) { k++; if(k>m) { m=k; } } else { k=1; } n=n/10; } Fa-l din nou. Nu ai scris bine la inceput codul dupa pseudocod. Si eu l-am rezolvat si mi-a dat 3. La subpuctul b am gasit 10 numere. In barem spune ca 18. Inca nu stiu de ce. EDIT Am rezolvat si subpunctul b.
Spoiler
Edited by aLexCM, 29 May 2016 - 11:20. |
#7
Posted 29 May 2016 - 12:05
#8
Posted 29 May 2016 - 12:50
aLexCM, on 29 mai 2016 - 11:20, said:
Mai bine: while(n>9) { if(n%10==(n/10)%10) { k++; if(k>m) { m=k; } } else { k=1; } n=n/10; } Fa-l din nou. Nu ai scris bine la inceput codul dupa pseudocod. Si eu l-am rezolvat si mi-a dat 3. La subpuctul b am gasit 10 numere. In barem spune ca 18. Inca nu stiu de ce. EDIT Am rezolvat si subpunctul b.
Spoiler
Fiecare scrie algoritmul dupa stilul lui... La cum l-ai scris tu, pot spune ca e mai intuitiv putin,dar parca sunt prea multe acolade. Defapt algoritmul era scris asa in compilator, dar cand l-am copiat pe forum, nu mi l-a scris cum era scris defapt in compilator... while(n>9) { if(n%10==n/10%10) { k=k+1; if(k>m) m=k; } else k=1; n=n/10; } Dupa ce am scris algoritmul corect, mi-am dat si eu seama ca sunt 18, chiar daca si cu primul algoritm gresit, raspunsul era tot, 18. Edited by 1marius1, 29 May 2016 - 12:59. |
Anunturi
Bun venit pe Forumul Softpedia!
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users