[ hvarovic @ 04.04.2009. 23:51 ] @
Pozdrav!

Imam jedan zadatak za zadacu. Cijeli dan sam izgubio i nikako ne mogu skuziti kako ga napisati. Program
glasi ovako: Napisati program koji računa umnožak brojeva djeljivih sa pet. Brojevi se unose sa tipkovnice
sve dok korisnik ne unese nulu. Ako korisnik nije unio niti jedan broj djeljiv sa pet, program treba ispisati
odgovarajuću poruku. Koristite while petlju!

E ja sam sad uspio napraviti dio programa koji mi omogucava unos brojeva sve dok ne unesem nulu.
Ne kuzim na koji naci bi trebalo to dalje napraviti. Znaci ako sam dobro shvatio ako ja unosim
npr. 1 2 3 4 5 6 7 8 9 10 0 program mi treba ispisati (nakon sto sam unio nulu) da je umnozak
brojeva djeljivih sa pet jednak 5*10=50. A ako unosim npr. 1 2 3 4 6 7 8 9 0 program mi treba
ispisati da niti jedan uneseni broj nije djeljiv sa pet. Međutim ja ne znam kako to napraviti. Već sam
probao sa IF petljom ali kada ju stavim unutar while petlje onda mi ne radi i uopce ju ne kuzi, a ako je
stavim izvan while petlje onda mi ju preskoci i opet ne radi, a na ekranu mi svaki put ispise nulu.
Molio bih nekoga tko to zna i kuzi da mi napise taj program jer sam se ja sada po prvi puta susreo sa
programiranjem u c++ i polako to pocinjem shvacati ali mi treba neki gotov program da bi po tome
mogao nauciti i skuziti kako radi. Radio sam na faksu par programa sa switch case i sa for i If i sa do-while
i while petljama i vidio sam da to nije nista komplicirano, ali ja sam se sada toliko spetljao da vise ne znam
od kuda zapoceti i kako dalje. Pleeeaaasseee help. Hvala!
[ hvarovic @ 05.04.2009. 13:26 ] @
Evo uspio sam napraviti. mozda postoji koji jednostavniji nacin ali meni za faks je i ovo ok. Bitno da radi sto treba.
Staviti cu ga ovdje pa ak netko ima nesto slicno neka pogleda pa ako mu treba......

#include <stdio.h>
#include <conio.h>
#include <math.h>

void main()
{
int a=1,b=1,c=1;
printf("Unesi brojeve\n");
while (a!=0)
{
scanf("%d", &a);
if (a==0) break;
if (a%5==0)
b*=a;
if(a%5!=0)
c*=a;

}
if (c!=0 && b==1) printf("\nNiti jedan uneseni broj nije djeljiv sa 5");
else printf("\nUmnozak brojeva djeljivih sa 5 iznosi: %d", b);


getch();
}
[ X Files @ 05.04.2009. 14:29 ] @
Nema potrebe da koristis: math.h i conio.h, a nije potrebna ni promenljiva C. while ne mora da ima uslov, jer je izlazak iz petlje definisan deljivoscu sa 5.

// netestirano
Code:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int proizvod=1, broj;

    /* uslov za izlazak iz petlje je u nadleznosti unetog broja */
    while ( 1 )
    {
        /* unos broja */
        printf( "Unesite broj:" );
        scanf( "%d", &broj );

        /* ako je ispunjen uslov za izlazak iz petlje */
        if ( broj == 0 )
            break;

        /* ako je broj deljiv sa 5 */
        if ( broj % 5 == 0 )
            proizvod *= broj;
    }
    /* ako je doslo do makar jednog mnozenja broja deljivog sa 5, proizvod mora biti razlicit od 1 */
    if ( proizvod == 1 )
        printf( "Nema brojeva koji su ispunjavali uslov deljivosti sa 5.\n" );
    else
        printf( "Proizvod brojeva koji su deljivi sa 5 je: %d\n", proizvod );

    return 0;
}
[ hvarovic @ 05.04.2009. 22:39 ] @
Hvala na odgovoru. Napravio sam Copy Paste tvog programa i sve ok radi
ali sam morao izbrisati return 0; i umjesto int main staviti void main. Da
u pravu si za math.h, njega ne trebam koristiti ali stavio sam ga tek onako.
conio.h sam stavio zbog getch(); jer kad pokrenem program otvori mi se command prompt
i kad unesem vrijednosti onda mi se odmah zatvori tj. pre brzo mi izvrsi
program i ne vidim sta je ispisao. Drago mi je da si mi napisao na ovaj nacin jer
mi je svaka pomoc dobrodosla. hvala jos jednom. Pozdrav!

evo to sam ovako promjenio:
Code:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

void main()
{
    int proizvod=1, broj;

    /* uslov za izlazak iz petlje je u nadleznosti unetog broja */
    while ( 1 )
    {
        /* unos broja */
        printf( "Unesite broj:" );
        scanf( "%d", &broj );

        /* ako je ispunjen uslov za izlazak iz petlje */
        if ( broj == 0 )
            break;

        /* ako je broj deljiv sa 5 */
        if ( broj % 5 == 0 )
            proizvod *= broj;
    }
    /* ako je doslo do makar jednog mnozenja broja deljivog sa 5, proizvod mora biti razlicit od 1 */
    if ( proizvod == 1 )
        printf( "Nema brojeva koji su ispunjavali uslov deljivosti sa 5.\n" );
    else
        printf( "Proizvod brojeva koji su deljivi sa 5 je: %d\n", proizvod );

    
getch();
}




[Ovu poruku je menjao X Files dana 06.04.2009. u 06:26 GMT+1]
[ X Files @ 06.04.2009. 05:25 ] @
Koji kompajler koristis?

Cisto radi inforacije, void main() vise nije po standardu.

Standard za C jezik (jedna notacija): int main(void)
(uz return 0; na kraju)

Standard za C++ jezik (jedna notacija): int main()
(uz return 0; na kraju)


Sto se tice getch(), treba ga takodje izbegavati jer conio.h nije po standardima i nemaju je svi C kompajleri:
http://www.elitesecurity.org/t260467

[ hvarovic @ 09.04.2009. 20:20 ] @
Stvarno nemam pojma koji je kompajler koristim jer sam tek poceo raditi sa c++. Kada napisem neki program onda samo kliknem na onu zelenu strelicu i to je to. Imao sam danas kolokvij na faksu i sve je proslo ok. Zahvaljujem jos jednom na odgovorima. Pozdrav!