[ razvaljotka @ 16.11.2009. 01:27 ] @
Je li moze neko da objasni ove ugnezdene for petlje

Code:
#include <stdio.h>

int main(){
    int i,j,k,n;
    scanf("%d",&n);

    for(i=0; i<n; i++) {
        for(k=0;k<n-i-1; k++)
            printf(" ");
        for(j=0;j<2*i+1; j++)
            printf("*");
        printf("\n");
    }
    return 0;
}


Fora je u iscrtavanju ASCII piramide.
E sad, nije mi bas najjasnije kako da pravim ove fore unutar for pelji koje ispisuju blanko i * ?????????????

[Ovu poruku je menjao razvaljotka dana 16.11.2009. u 02:52 GMT+1]

[Ovu poruku je menjao Mihajlo Cvetanović dana 16.11.2009. u 10:55 GMT+1]

[Ovu poruku je menjao Mihajlo Cvetanović dana 16.11.2009. u 10:55 GMT+1]
[ Mihajlo Cvetanović @ 16.11.2009. 10:01 ] @
Dodao sam [code ] tagove i nazubio program da se bolje vide stvari.

Što se tiče "fora" stvar je vrlo jednostavna: moraš da razmišljaš kao mašina. Posmatraj ovaj kod, uključi vijuge, probaj da ga izvršavaš uz pomoć papira i olovke, korak po korak, i shvatićeš to što ti nije jasno.

U suštini svaki red na ekranu je nekoliko spejsova (" ") i nekoliko zvezdica. Broj spejsova opada za po jedan, a broj zvezdica raste za po dva. Na kraju treba da dobiješ jelku, sa onoliko redova koliko iznosi početni broj n.
[ unisoft @ 24.11.2009. 11:59 ] @
Da krenemo.

Posto si uneo n, ceo broj (tip int) potrebna nam je jedna petlja koja ce se vrteti od 1 pa do n.Po zavrsetku svakog kruga i uvecavamo za jedan a to se postize komadom i++ ili i += 1 ili i = i + 1 ( sva tri nacina rade istu stvar).

*** mala pauza.
O samoj petlji ti nista necu govoriti jer to znaci da ti zelis da ti neko, neko tamo sve objasni a da se ti ni malo ne pomucis .Lepo knjigu u ruke i razumeces.VERUJ MI.
*** kraj

mozes primetiti kada pokrenes program da se svaki novi redi ima 2 'DVA' nova elementa. 1 red ima jednu *, drugi red 3 * , treci red ima 5*. Iz ovoga svako moze da zakljuci da ti u petlji treba neka promenljiva koja ce se za 2 uvecavati u svakom krugu.Da bi postigao IZGLED PIRAMIDE pre ove petlje za uvecanje mora postojati jedna petlja koja stampa RAZMAKE a posto ostampa onda se stampa na izlazu *.

u tvom kodu ima jedna kreska a i nije jer kada se ukloni ne pravi smetnje u radu programa samo pravi kod NE RAZUMLJIVIM

Code:

#include <stdio.h>

int main(){
    int i,j,k,n;
    scanf("%d",&n);

    for(i=0; i<n; i++) {
        for(k=0;k<n-i; k++)
            printf(" ");
        for(j=0;j<2*i+1; j++)
            printf("*");
        printf("\n");
    }
    return 0;
}

prva petlja: i=1 iako je i = 0 pre nego sto krene petlja i se uvecava za 1. Pogledaj gde se prva
 { zagrada zatvara } ispred return 0; Kada otvoris jednu { i zatvoris sa jednom } sve izmedju 
ovoga se isvrsava a to znaci posto se petlja vrti pre nego sto ponovo uveca i za 1 kompajler 
ce kod u ovim zagradama ko....





pogledaj i videces sta sam ispravio.Ima samo jedna greska i sada malo razmisli sta se desava.

[code]



[sub][[b]Ovu poruku je menjao unisoft dana 24.11.2009. u 14:57 GMT+1[/b]][/sub]
[ Picsel @ 26.11.2009. 10:54 ] @
Nema greske u prvom kodu.

'i' se ne povecava pre izvrsenja prve petlje