Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Cum sterg mails din Promotions

Vanzare cumparare fara transfer b...

Receptie ciudata, in functie de t...

Dupa 20 ani de facultate, am uita...
 Mobile.de ofera imprumut de bani ...

problema test grila

Digi24 a disparut de pe TV Lg

Drept de proprietate intelectuala...
 Jante noi shitbox

Trinitas TV 4K

Dacia 1316 cu 6 usi ...

Frecventa modificata radio
 Un nou pericol pt batrani

Ar trebui sa vindem imobiliarele ...

Dupa renuntarea la aparat dentar

pelerinaj in Balcik
 

[Tema] Algoritm in pseudocod

- - - - -
  • Please log in to reply
7 replies to this topic

#1
1marius1

1marius1

    Member

  • Grup: Members
  • Posts: 587
  • Înscris: 29.03.2012
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
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,444
  • Înscris: 10.08.2005
Ne spui si noua in cuvintele tale ce face programul prezentat in pseudocod ?

#3
1marius1

1marius1

    Member

  • Grup: Members
  • Posts: 587
  • Înscris: 29.03.2012

View PostMarianG, on 28 mai 2016 - 22:20, said:

Ne spui si noua in cuvintele tale ce face programul prezentat in pseudocod ?
Verifica daca doua cifre alaturate sunt egale:
-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
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,444
  • Înscris: 10.08.2005

Quote

Am rezolvat si raspunsurile date de mine sunt:
a) 4
input: 81112337
si tu spui ca ai numarat bine ?

View Post1marius1, 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
mai incearca odata, cand resetezi contorul ?

Edited by MarianG, 28 May 2016 - 22:44.


#5
1marius1

1marius1

    Member

  • Grup: Members
  • Posts: 587
  • Înscris: 29.03.2012

View PostMarianG, on 28 mai 2016 - 22:40, said:

input: 81112337
si tu spui ca ai numarat bine ?


mai incearca odata, cand resetezi contorul ?
EDIT: OK, nu stiu sa citesc din pseudocod...

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
aLexCM

aLexCM

    Active Member

  • Grup: Members
  • Posts: 1,079
  • Înscris: 26.01.2014
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
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,444
  • Înscris: 10.08.2005


View Post1marius1, on 29 mai 2016 - 08:47, said:

EDIT: OK, nu stiu sa citesc din pseudocod...

Deci contorul se reseteaza cand cifrele alaturate difera...
Ai timp sa inveti, si da cam asta este ideea generala a unui contor de elemente identice.


#8
1marius1

1marius1

    Member

  • Grup: Members
  • Posts: 587
  • Înscris: 29.03.2012

View PostaLexCM, 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

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate