Pomoć oko zadatka - RastavNaProsteFaktore.c

Teme vezane za console/GUI programiranje u C/C++ jeziku
5 post(ov)a • Stranica: 1/1.

Pomoć oko zadatka - RastavNaProsteFaktore.c

PostPostao/la Evi » 19 ruj 2015, 23:01

Pozdrav ekipa,
Može li mi molim vas netko zakomentirati dodatno ovaj zadatak odnosno ovu while petlju i sve korake u njoj koji se odvijaju, npr za broj 22 napisati mi tablicu ili komentare, štogod? u while petlji vrijedi: ako je n=22 , dok je n različit od 0 , ovdje je 22 tako da ispunjava uvjet, zatim radi ovo if-ako je 22 djeljiv sa 2 (odnosno 22%2==0) printf ("*%d",i); i tu će ispisati >> *11 << ? jesam li u pravu? koji su daljnji ispisi korak po korak , baš za broj 22 me zanima?

Htjela bih da mi to bude full jasno, a ne samo djelomično, kako bih mogla učiti dalje i prijeći na druge zadatke. ;;)


cpp code
/*
Zadatak: Napisite rastav broja na proste faktore.
*/

#include <stdio.h>

int main(void) {

int n, i;

printf("Upisite broj: ");
scanf("%d", &n);

/* svaki broj je djeljiv sa 1 */
printf("%d = 1", n);

i = 2;
while (n != 1) {

if (n % i == 0) {

/* broj je djeljiv s i */
printf(" * %d", i);

n = n / i; /* rastav nastavljamo sa brojem (n / i) */

/* ne inkrementiramo varijablu i - pokusati cemo
novi broj jos jednom podjeliti s i */

} else {

/* trenutni broj nije djeljiv s i, idemo dalje */
i = i + 1;

}

}
printf("\n");
return 0;
}



slika

Re: Pomoć oko zadatka - RastavNaProsteFaktore.c

PostPostao/la Jasko » 20 ruj 2015, 00:16

OK

Prije samog ulaska u petlju ispisemo na komandnoj liniji n = 1 // u nasem slucaju 22 = 1

dijelilac postavljamo na vrijednost 2, jer kao sto smo vec ispisali svaki broj je djeljiv sa 1

Uslov petlje jeste da je n!=1 odnosno, sve dok rezultat djeljenja ne bude 1 ne prekidaj petlju.

Sad u petlju ulazimo sa brojem 22, i prvo sto pitamo jeste, dali je broj 22 dijeljiv sa 2, posto je ostatak djeljenja 0 odgovor je DA

te ulazimo u petlju, dodajemo na postojecu liniju ispisa * 2 // u nsaem slucaju ce biti 22 = 1 * 2

sada zaista dijelimo 22 sa 2 pa n dobiva novu vrijednost 11

#=> vracamo se na pocetak i provjeravamo uslov while petlje jeli n!=1, jeste, te ponovo ulazimo u petlju

pitamo jeli 11 djeljivo sa 2, odgovor je NE // jer ima ostatak djeljenja koji je razlicit od 0

ulazimo u else skope if petlje i povecavamo djelilac za 1

sada se vracamo gore na #=> stim da cemo povecavat dijelilac tako dugo dok ne poprimi vrijednost sa kojom je n te izvrsimo opet pisanje " * i " ili ne poprimi samo vrijednost n-a u slucaju da je n prim broj, sto se kod nas desilo i svaki put ce se desiti to u zadnjem koraku.

dolazi do dodavanja zadnjeg elementa * 11 na postojecu liniju // kod nas 22 = 1 * 2 * 11

11 dijelimo sa 11 te n poprima vrijednost 1, sada kad provjerimo uslov petlje taj nece bit ispunjen i iskacemo iz petlje

dodajemo end line " \n" i zavrsava se program


Da bi sebi objasnila nekad neki kod, pokusaj napisati pseudocode onog sto vidis, ili pokusaj nacrtati dijagram toka, cesto je poslije toga rad programa mnogo jasniji.

Pozz
Postoji 10 vrsta ljudi na zemlji. Oni koji razumiju binarni sistem i oni koji ga ne razumiju!
Posjetite moj YouTube kanal za gledanje za programiranje i druge teme oko računara.

Re: Pomoć oko zadatka - RastavNaProsteFaktore.c

PostPostao/la Evi » 20 ruj 2015, 13:35

Hvala Jasko i bravo! Sad mi je razumljivije. :) Treba to sve zapamtit i znati primijeniti, divim se vama koji kužite.

Re: Pomoć oko zadatka - RastavNaProsteFaktore.c

PostPostao/la Evi » 20 ruj 2015, 13:49

Jasko je napisao/la:OK

Prije samog ulaska u petlju ispisemo na komandnoj liniji n = 1 // u nasem slucaju 22 = 1

dijelilac postavljamo na vrijednost 2, jer kao sto smo vec ispisali svaki broj je djeljiv sa 1

Uslov petlje jeste da je n!=1 odnosno, sve dok rezultat djeljenja ne bude 1 ne prekidaj petlju.





Jedna mala ispravka ili pitanjce: zar ne znači tu while(n != 1) sve dok je n različit od jedan , a ne rezultat djeljenja ? Ovaj uvjet nema veze sa dijeljenjem, zar ne?

Re: Pomoć oko zadatka - RastavNaProsteFaktore.c

PostPostao/la Jasko » 20 ruj 2015, 14:21

Da to si upravu.

Samo promjenu n-a uslovljava djeljenje unutar petlje. Sad je stvar interpretacije. Ako petlju gledas kao blackbox onda fakat rezultat djeljenja nema veze sa uslovom ali posto znam sta se desava u petlji izabrao sam tu formulaciju.

Pozz
Postoji 10 vrsta ljudi na zemlji. Oni koji razumiju binarni sistem i oni koji ga ne razumiju!
Posjetite moj YouTube kanal za gledanje za programiranje i druge teme oko računara.


5 post(ov)a • Stranica: 1/1.

Na mreži

Trenutno korisnika/ca: / i 1 gost.