Kako rješit ova jzadatak u pseudokodu?

poruka: 7
|
čitano: 2.046
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
17 godina
neaktivan
offline
Kako rješit ovaj zadatak u pseudokodu?

Danas smo imali na testu ovakav zadatak:

 

Napiši program koji pronalazi i na ekran ispisiva broj n za koji vrijedi:

1+2+3...+n=5050

 

Ja sam se mislio i mislio a nisam ga baš uspio riješiti, može pomoć?

IRebic
Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
RE: Kako rješit ovaj zadatak u pseudokodu?

 

Napravis neku varijablu zbroj na koju zbrajas sve brojeve tako da uvjek imas zbroj

 

zatim forom ides od 0 do 5050 jer nemoze biti veci od toga pribrojis i na zbroj i provjeravas jeli zbroj jednak 5050 ako je ispisujes i i stavis break ;

 

EDIT: evo kod ako slucajno nisi skuzia

 

Neda mi uvuc blokove u kodu kaze da je nedozvoljen html kod :P

 

inz zbroj;

 

for (int i = 0; i < 5050; ++i)

{

zbroj += i;

if(zbroj == 5050)

{

cout << i << endl;

break;

{

}

Poruka je uređivana zadnji put pon 25.10.2010 14:44 (Orinem).
15 godina
neaktivan
offline
RE: Kako rješit ovaj zadatak u pseudokodu?
IRebic kaže...

Danas smo imali na testu ovakav zadatak:

 

Napiši program koji pronalazi i na ekran ispisiva broj n za koji vrijedi:

1+2+3...+n=5050

 

Ja sam se mislio i mislio a nisam ga baš uspio riješiti, može pomoć?

 

Ne sjećam se više kako se točno piše pseudokod, ali recimo ja bi to rješio ovako (ovo je općenito rješenje, umjesto 5050 možeš staviti bilo koji broj):

 

suma=5050

trenutnibroj=1

dalje:

ako (suma-trenutnibroj) < 0

{

ispiši "Ne postoji takav broj!"

idi na govoto:

}

ako (suma-trenutnibroj) = 0

{

ispiši n=trenutnibroj

idi na gotovo:

}

inače

{

suma=suma-trenutnibroj

trenutnibroj=trenutnibroj+1

idi na dalje:

}

gotovo:

kraj

Retry. Reboot. Reinstall. Reformat. // Sve se hoće kad se može. ;)
17 godina
neaktivan
offline
RE: Kako rješit ovaj zadatak u pseudokodu?
vlad0 kaže...
IRebic kaže...

Danas smo imali na testu ovakav zadatak:

 

Napiši program koji pronalazi i na ekran ispisiva broj n za koji vrijedi:

1+2+3...+n=5050

 

Ja sam se mislio i mislio a nisam ga baš uspio riješiti, može pomoć?

 

Ne sjećam se više kako se točno piše pseudokod, ali recimo ja bi to rješio ovako (ovo je općenito rješenje, umjesto 5050 možeš staviti bilo koji broj):

 

suma=5050

trenutnibroj=1

dalje:

ako (suma-trenutnibroj) < 0

{

ispiši "Ne postoji takav broj!"

idi na govoto:

}

ako (suma-trenutnibroj) = 0

{

ispiši n=trenutnibroj

idi na gotovo:

}

inače

{

suma=suma-trenutnibroj

trenutnibroj=trenutnibroj+1

idi na dalje:

}

gotovo:

kraj

 jesi ti siguran za ovo čini mi se malo...

IRebic
15 godina
neaktivan
offline
RE: Kako rješit ovaj zadatak u pseudokodu?
IRebic kaže...
vlad0 kaže...
IRebic kaže...

Danas smo imali na testu ovakav zadatak:

 

Napiši program koji pronalazi i na ekran ispisiva broj n za koji vrijedi:

1+2+3...+n=5050

 

Ja sam se mislio i mislio a nisam ga baš uspio riješiti, može pomoć?

 

Ne sjećam se više kako se točno piše pseudokod, ali recimo ja bi to rješio ovako (ovo je općenito rješenje, umjesto 5050 možeš staviti bilo koji broj):

 

suma=5050

trenutnibroj=1

dalje:

ako (suma-trenutnibroj) < 0

{

ispiši "Ne postoji takav broj!"

idi na govoto:

}

ako (suma-trenutnibroj) = 0

{

ispiši n=trenutnibroj

idi na gotovo:

}

inače

{

suma=suma-trenutnibroj

trenutnibroj=trenutnibroj+1

idi na dalje:

}

gotovo:

kraj

 jesi ti siguran za ovo čini mi se malo...

 

Obrnuto? Pa u biti i je - umjesto zbrajanja koristimo oduzimanje. Zašto ne ubaciti malo kreativnosti? Smijeh Ali možeš koristiti i zbrajanje, naravno...Posve je svejedno, bitno je skužiti problematiku, a ne samo rješenje (koje se dalo izvesti na barem još 4 različita načina).

 

Pojašnjenje:

Ovaj moj "kod" zapravo od 5050 (suma) oduzima prvo 1 (trenutnibroj) i dobije 5049. Nakon toga kaže da je (nova) suma=5049 i uveća broj za 1 (1 + 1 = 2) i onda je trenutnibroj=2. Nakon toga ide ponovo 5049-2=5047, pa onda u trećem koraku vrijedi suma=5047, novibroj=3 i radi se 5047-3, pa u četvrtom koraku suma=5044, a trenutnibroj=4... Itd. itd.

 

Ako se dogodi da neki trenutnibroj "spusti" sumu na 0, to znači da je upravo taj trenutnibroj = n i našao si svoj n broj.

 

Ako se dogodi da prilikom oduzimanja odeš ispod 0, to znači da takav broj ne postoji.

 

Petlja se vrti sve dok suma nije < 0 (nema rješenja) ili suma = 0 (zadnji trenutnibroj = n, tj. našao si svoj n).

Retry. Reboot. Reinstall. Reformat. // Sve se hoće kad se može. ;)
Poruka je uređivana zadnji put pon 25.10.2010 16:51 (vlad0).
14 godina
neaktivan
offline
Kako rješit ova jzadatak u pseudokodu?
N(N + 1)/2 je gausova formula za zbroj prvih N brojeva.
N(N + 1)/2 = X
N(N + 1) = 2X
...upises x (u ovom slucaju 5050) i pretvoris ga u 2x ( x := 2*x ),zatim u beskonacnoj petlji ispitujes sve brojeve N krenuvsi od 0,stim da stavis dva uvjeta - n(n+1) = x i n(n+1)>x...ako je prvi zadovoljen ispisujes n i brejkas petlju, a ako je drugi ispisujes da nema rjesenja i brejkas.
&lt;&lt;Karlovačko&gt;&gt;
Moj PC  
0 0 hvala 0
16 godina
odjavljen
offline
Kako rješit ova jzadatak u pseudokodu?

Jedno ovako divlje rješenje (neki matematičar bi možda ipak trebao dokazati da vrijedi: n(n+1) - n2 < 1 za svaki n > 0):

temp = sqroot(2x)

temp zaokruži na manje //ako je temp integer, ovo se događa automatski

if (temp(temp+1)/2 == x)

  n = temp

else

  nema rješenja

Heart: _/\_/\_/\_/\_/\_/\_/\_/\_ Brain: __________________________
 
0 0 hvala 0
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice