Prakticni kolokvij
Select messages from
# through # FAQ
[/[Print]\]

Forum@DeGiorgi -> Programiranje 1 i 2

#1: Prakticni kolokvij Autor/ica: coucou PostPostano: 13:25 ned, 4. 12. 2016
    —
Pozdrav, muci me (za pocetak) 1. zadatak za prakticni kolokvij, u kojem treba napisat program koji za uneseni prirodni broj k ispisuje sve obilne brojeve manje ili jednake k.
Ovo bi trebalo bit rjesenje:


Kod:
#include<stdio.h>

int main(void) {

int k,i,j,s;

scanf("%d", &k);

for(i=1; i<=k; i++) {

  s=0;

  for(j=1; j<i; j++) {

     if(i%j==0)  s=s+j;

}

  if(i<s) printf("%d\n", i);

}

return 0;

}



Uglavnom, bune me ove ugniježđene for petlje. Moze netko objasnit sto se tocno tu dogodi da kad ja upisem 18 on ispise 12 i 18? Najbitnije mi je za shvatit sto se dogada nakon sto je ovaj uvjet if(i%j==0) netocan. Npr. za i=3 i j=2, (i%j==0) ne vrijedi pa sto ide nakon toga?

#2:  Autor/ica: vsegoLokacija: /sbin/init PostPostano: 19:37 ned, 4. 12. 2016
    —
Kad je uvjet istinit, s se poveca za j; inace se taj korak preskoci, a sve drugo je isto.

Ako te zanima sto se dogadja, ubaci pomocne ispise i provjeri:

Kod:
#include<stdio.h>

int main(void) {
    int k,i,j,s;

    scanf("%d", &k);

    for(i=1; i<=k; i++) {
        printf("i-petlja: i=%d\n", i);
        s=0;
        for(j=1; j<i; j++) {
            printf(
                "    j-petlja prije if: i=%d, j=%d, s=%d, uvjet=%s\n",
                i, j, s, (i%j==0 ? "istina" : "laz")
            );
            if(i%j==0)
                s = s+j;
            printf("    j-petlja poslije if: i=%d, j=%d, s=%d\n", i, j, s);
        }
        if(i<s) printf("%d\n", i);
    }

    return 0;
}


Ispis ovoga za input 18 je:

Kod:
i-petlja: i=1
i-petlja: i=2
    j-petlja prije if: i=2, j=1, s=0, uvjet=istina
    j-petlja poslije if: i=2, j=1, s=1
i-petlja: i=3
    j-petlja prije if: i=3, j=1, s=0, uvjet=istina
    j-petlja poslije if: i=3, j=1, s=1
    j-petlja prije if: i=3, j=2, s=1, uvjet=laz
    j-petlja poslije if: i=3, j=2, s=1
i-petlja: i=4
    j-petlja prije if: i=4, j=1, s=0, uvjet=istina
    j-petlja poslije if: i=4, j=1, s=1
    j-petlja prije if: i=4, j=2, s=1, uvjet=istina
    j-petlja poslije if: i=4, j=2, s=3
    j-petlja prije if: i=4, j=3, s=3, uvjet=laz
    j-petlja poslije if: i=4, j=3, s=3
...


Za ostatak ispisa, izvedi na svom racunalu, da sad ne pretrpavam post. Ako bude konkretnijih pitanja zasto se nesto nekako izvelo, pitaj slobodno, ali precizno.

Usput, programe je puno lakse pratiti ako su pristojno napisani (obrati paznju na uvlacenja kod mene, u usporedbi s tvojim kodom).



Forum@DeGiorgi -> Programiranje 1 i 2


output generated using printer-friendly topic mod. Vremenska zona: GMT + 01:00.

Stranica 1 / 1.

Powered by phpBB © 2001,2002 phpBB Group
Theme created by Vjacheslav Trushkin