Salve, mi stavo esercitando sui cicli e c'è una cosa che proprio non riesco a capire:
Si tratta di uno
specifico ciclo for (il primo nel seguente codice) del quale faccio fatica a comprenderne il significato e il funzionamento.
Una volta chiarito come funziona,
quali potrebbero essere le sue applicazioni pratiche?
Premetto che in generale l'utilizzo dei cicli in C mi è abbastanza chiaro.
In basso, dopo la funzione main ho scritto un commento che specifica i diversi output del programma.
Grazie per la pazienza.
#include <stdio.h>
#define N 10
int main(void) {
int a[N] = {0}, i, j, flag = 1, *p;
i=0;
for(j=i-1; j>i/2; j--) //non capisco il comportamento di questo ciclo, soprattutto la SECONDA ESPRESSIONE.
a[j] = flag;
for(p=a; p < a+N; p++) //su questo invece non ho alcun dubbio; so esattamente che si occupa di stampare le celle dell'array a.
printf(" %d ", *p);
return 0;
}
/*
Il codice, al variare del valore di i, genera i seguenti output:
per i=0
STAMPA: 0 0 0 0 0 0 0 0 0 0
per i=1
STAMPA: 0 0 0 0 0 0 0 0 0 0
per i=2
STAMPA: 0 0 0 0 0 0 0 0 0 0
per i=3
STAMPA: 0 0 1 0 0 0 0 0 0 0
per i=4
STAMPA: 0 0 0 1 0 0 0 0 0 0
per i=5
STAMPA: 0 0 0 1 1 0 0 0 0 0
per i=6
STAMPA: 0 0 0 0 1 1 0 0 0 0
per i=7
STAMPA: 0 0 0 0 1 1 1 0 0 0
per i=8
STAMPA: 0 0 0 0 0 1 1 1 0 0
per i=9
STAMPA: 0 0 0 0 0 1 1 1 1 0
per i=10
STAMPA: 0 0 0 0 0 0 1 1 1 1
*** PER i>10 GENERA UN ERRORE DI SEGMENTAZIONE ***
*/