
Kako rješit ova jzadatak 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;
{
}

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

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...

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? 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).

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.

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
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ć?