PDA

View Full Version : Cicli annidati For in C


::tony design
15-09-2003, 14:08
Ciao a tutti, devo fare un esercizio per l'università:
devi riscrivere il seguente frammento di codice utilizzando due cicli annidati for:


int i1=0, i2=1;
while(i1<5)
{
i1++;
i2=0;
while(++i2!=i1)
printf("X");
printf("\n");
}

Qualcuno sa come si fà!

Grazie
::tony

VICIUS
15-09-2003, 14:41
questa è la prima osa che mi è venut ain mente. provalo prima :)

int i,j;

for (i = 0; i < 5; i++){

for (j = 0; j < i; j++)
printf("X");

printf("\n");

}

ciao ;)

cionci
15-09-2003, 16:17
Originariamente inviato da VICIUS
questa è la prima osa che mi è venut ain mente. provalo prima :)

int i,j;

for (i = 0; i < 5; i++){

for (j = 0; j < i; j++)
printf("X");

printf("\n");

}

ciao ;)
No...è sbagliato...
La traduzione diretta sarebbe questa:

int i1, i2;
for(i1=1; i1<5; i1++)
{

for(i2=0; ++i2!=i1; )
printf("X");
printf("\n");
}

Per il ciclo + interno si può anche ragionare sui valori di i2 ed adottare un for classico di questo tipo:

for(i2=1; i2!=i1; ++i2)

VICIUS
15-09-2003, 17:42
Originariamente inviato da cionci
No...è sbagliato...
La traduzione diretta sarebbe questa:

int i1, i2;
for(i1=1; i1<5; i1++)
{

for(i2=0; ++i2!=i1; )
printf("X");
printf("\n");
}

Per il ciclo + interno si può anche ragionare sui valori di i2 ed adottare un for classico di questo tipo:

for(i2=1; i2!=i1; ++i2)

non fanno la stessa cosa :confused:

ciao ;)

::tony design
15-09-2003, 18:07
Originariamente inviato da VICIUS
non fanno la stessa cosa :confused:

ciao ;)

infatti :D

cionci
15-09-2003, 19:42
Prima di tutto il mio è sbagliato...così va bene...

int i1, i2;
for(i1=0; i1++<5;)
{
for(i2=0; ++i2!=i1; )
printf("X");
printf("\n");
}

Ma devi tradurre o devono fare la stessa cosa ?

Allora anche questo fa la stessa cosa ;)

int i1, i2;
for(i1=0; i1<1; ++i1)
{
for(i2=0; i2<1; ++i2)
printf("\nX\nXX\nXXX\nXXXX\n");
}

Prova a sostituire printf("X%d%d",i1, i2); a printf("X"); e vedrai che sono profondamente diversi... Pensa se invece di stampare una X avesse fatto operazioni matematiche con gli indici...