Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
ekatarina Forumaš(ica)

Pridružen/a: 25. 11. 2007. (19:22:50) Postovi: (161)16
Spol: 
|
Postano: 19:50 sub, 9. 2. 2008 Naslov: 8.6. na jednostavniji način? |
|
|
Zadatak 8.6. Napiˇsite dio programa koji uˇcitava cijele brojeve dok
korisnik ne upiˇse nulu. Program treba ispisati produkt svih brojeva koje
je korisnik uˇcitao.
int prod = 1 , x ;
2
3 do {
4 p r i n t f ( ”Une s i t e br o j : ” ) ;
5 s c anf ( ”%d” , &x ) ;
6 i f ( x != 0) prod ∗= x ;
7 } while ( x != 0 ) ;
8
9 p r i n t f ( ”Produkt u c i t an i h br oj eva j e %d . \ n” , prod )
MOže li se ovo dakle riješiti nekako drugačije? Zbunjuje me, naime, ovo provjeravanje da li je x različit od 0 i u if i u while.
Zadatak 8.6. Napiˇsite dio programa koji uˇcitava cijele brojeve dok
korisnik ne upiˇse nulu. Program treba ispisati produkt svih brojeva koje
je korisnik uˇcitao.
int prod = 1 , x ;
2
3 do {
4 p r i n t f ( ”Une s i t e br o j : ” ) ;
5 s c anf ( ”%d” , &x ) ;
6 i f ( x != 0) prod ∗= x ;
7 } while ( x != 0 ) ;
8
9 p r i n t f ( ”Produkt u c i t an i h br oj eva j e %d . \ n” , prod )
MOže li se ovo dakle riješiti nekako drugačije? Zbunjuje me, naime, ovo provjeravanje da li je x različit od 0 i u if i u while.
|
|
[Vrh] |
|
Luuka Forumaš(ica)


Pridružen/a: 13. 02. 2007. (20:34:54) Postovi: (925)16
Spol: 
Lokacija: Hakuna Matata
|
Postano: 19:55 sub, 9. 2. 2008 Naslov: |
|
|
Mislim da je ovak najjednostavnije.
A kaj te zbunjuje? Imaš do-while petlju, kod koje se na kraju provjerava uvjet ( x!=0). Ako korisnik ipak unese nulu, to će se provjerit tek na kraju pa ako ne staviš uvjet u if onda će se produkt pomnožit s nulom i bit nula, a to ne želimo. Želimo da sve stane ako se učita nula.
Da piše i da se unešava dok se ne učita 5 opet bi se provjeravalo u if-u jer ne želimo taj 5 u produkt.
Mislim da je ovak najjednostavnije.
A kaj te zbunjuje? Imaš do-while petlju, kod koje se na kraju provjerava uvjet ( x!=0). Ako korisnik ipak unese nulu, to će se provjerit tek na kraju pa ako ne staviš uvjet u if onda će se produkt pomnožit s nulom i bit nula, a to ne želimo. Želimo da sve stane ako se učita nula.
Da piše i da se unešava dok se ne učita 5 opet bi se provjeravalo u if-u jer ne želimo taj 5 u produkt.
_________________ "Bolje bi prolazio na faxu da sam na drogama nego na netu" - by a friend of mine
"Poslije spavanja doma spavanje bilo di mi je najdraža stvar" - by the same guy 
|
|
[Vrh] |
|
Atomised Forumaš(ica)


Pridružen/a: 04. 09. 2007. (15:33:59) Postovi: (399)16
Lokacija: Exotica
|
|
[Vrh] |
|
ß Forumaš(ica)


Pridružen/a: 29. 07. 2006. (15:29:06) Postovi: (115)16
Spol: 
Lokacija: Graveyard Mountain Home
|
Postano: 19:57 sub, 9. 2. 2008 Naslov: Re: 8.6. na jednostavniji način? |
|
|
[quote="ekatarina"]MOže li se ovo dakle riješiti nekako drugačije? Zbunjuje me, naime, ovo provjeravanje da li je x različit od 0 i u if i u while.[/quote]
Kad ne bi postojala provjera u if, upisana nula bi se množila s dosadašnjim umnoškom, pa bi na kraju uvijek trebalo ispisati nulu.
[size=9]to duduše nije u kontradikciji sa zadatkom, ali pretpostavljam da nema baš puno smisla riješiti tako :P[/size]
inače, moguće je to riješiti drugačije, tako da uvjet provjeravaš na početku petlje. Drugim riječima, koristiš "while". Samo pazi da pri deklaraciji varijable postaviš x na nešto različito od nule, kako bi program uopće ušao u while petlju.
Naprimjer, ovako:
[code:1]
//...
int x=1,prod=1;
while(x!=0){
prod*=x;
printf("Unesite broj: ");
scanf("%d", &x);
}
printf("Produkt je jednak %d ",prod);
//...
[/code:1]
EDIT: Uf, već dva odgovora dok ja tipkam :)
ekatarina (napisa): | MOže li se ovo dakle riješiti nekako drugačije? Zbunjuje me, naime, ovo provjeravanje da li je x različit od 0 i u if i u while. |
Kad ne bi postojala provjera u if, upisana nula bi se množila s dosadašnjim umnoškom, pa bi na kraju uvijek trebalo ispisati nulu.
to duduše nije u kontradikciji sa zadatkom, ali pretpostavljam da nema baš puno smisla riješiti tako
inače, moguće je to riješiti drugačije, tako da uvjet provjeravaš na početku petlje. Drugim riječima, koristiš "while". Samo pazi da pri deklaraciji varijable postaviš x na nešto različito od nule, kako bi program uopće ušao u while petlju.
Naprimjer, ovako:
Kod: |
//...
int x=1,prod=1;
while(x!=0){
prod*=x;
printf("Unesite broj: ");
scanf("%d", &x);
}
printf("Produkt je jednak %d ",prod);
//...
|
EDIT: Uf, već dva odgovora dok ja tipkam
_________________ Devious movements in your eyes moved me from relief
Breath comes out white clouds with your lies
and filters through me
|
|
[Vrh] |
|
Atomised Forumaš(ica)


Pridružen/a: 04. 09. 2007. (15:33:59) Postovi: (399)16
Lokacija: Exotica
|
|
[Vrh] |
|
Luuka Forumaš(ica)


Pridružen/a: 13. 02. 2007. (20:34:54) Postovi: (925)16
Spol: 
Lokacija: Hakuna Matata
|
|
[Vrh] |
|
Atomised Forumaš(ica)


Pridružen/a: 04. 09. 2007. (15:33:59) Postovi: (399)16
Lokacija: Exotica
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
|
[Vrh] |
|
Atomised Forumaš(ica)


Pridružen/a: 04. 09. 2007. (15:33:59) Postovi: (399)16
Lokacija: Exotica
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
|
[Vrh] |
|
|