Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Sfarsitul woke-ismului si al core...

Renovare completa + pompa de cald...

Libre Office nu vad liniile

Modalitați amuzante și ...
 O disparitie de ani buni, Acces D...

Mancarea e scumpa

Parere achiziționare BMW G20

Schimbarea bateriei moderne la VA...
 Rostschreck Lidl

Si noi suntem Florin Piersic? / J...

Rascumparare euroobligatiuni (pri...

Detartraj partial slatina
 Cu ce pot izola fonic peretii pen...

Telefon cu senzor compass BUN

Blocare google chrome cu master p...

Instalare Siemens NX pe macbook
 

[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,477
  • Î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,477
  • Î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,477
  • Î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

Chirurgia endoscopică a hipofizei Chirurgia endoscopică a hipofizei

"Standardul de aur" în chirurgia hipofizară îl reprezintă endoscopia transnazală transsfenoidală.

Echipa NeuroHope este antrenată în unul din cele mai mari centre de chirurgie a hipofizei din Europa, Spitalul Foch din Paris, centrul în care a fost introdus pentru prima dată endoscopul în chirurgia transnazală a hipofizei, de către neurochirurgul francez Guiot. Pe lângă tumorile cu origine hipofizară, prin tehnicile endoscopice transnazale pot fi abordate numeroase alte patologii neurochirurgicale.

www.neurohope.ro

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