Ciclo for per stampa asterischi e -

di il
4 risposte

Ciclo for per stampa asterischi e -

#include <stdio.h>
#include <stdlib.h>
#define N 6

int main()
{
    int i,j;


    for (i=0;i<N;i++){
            for (j=0;j<i;j++){
            printf("*");

        }
        printf("-");

    }




    return 0;
}
[img]
https://i.ibb.co/0Vdn407/for-asterischi.pn



-allora se qualcuno mi spiega perché il grafico viene in quel modo, io mentalmente ragiono così (ma non quadra), faccio il primo giro, i=0, il secondo for non scatta perché j=0 non è <0, quindi salta e va al printf -
-poi a questo punto i incrementa di 1 e diventa 1, il j è sempre 0, a questo punto 0<1 e quindi anche il for interno scatta, stampa *, stampa -
-torna daccapo, i è pari a 2, j è pari a 1, 1<2, quindi stampa * e poi dovrebbe stampare il - secondo me invece stama 2 *, perché???

scusate, ma è da ieri che ci penso ma non ne esco, per me è come dico io, ma evidentemente no.

4 Risposte

  • Re: Ciclo for per stampa asterischi e -

    L'output corrisponde a come hai scritto il codice. Dove sbagli a ragionare è che j viene re-inizializzato a 0 ad ogni giro di i. Se volevi fare una stampa alternata tra '_' e '*' dovevi fare in altro modo (bastava un solo for).
    Per toglierti i dubbi procurati un debugger ed osserva il flusso ed il valore delle variabili.
  • Re: Ciclo for per stampa asterischi e -

    Perché j lo inizializzi sempre a zero nel secondo for.

    Prova for(;j<i;j++) mettendo j=0 prima dei 2 for
  • Re: Ciclo for per stampa asterischi e -

    Andrea Quaglia ha scritto:


    j viene re-inizializzato a 0 ad ogni giro di i
    grazie, la parolina magica reinizializzato a 0 a ogni giro mi ha chiarito il discorso!!!

    uso codeblocks ma non so come fare il debug a ogni giro.
    Grazie grazie grazie, posso andare avanti

    forse ho trovato anche il debugger con f 7
  • Re: Ciclo for per stampa asterischi e -

    pollyanna ha scritto:


    ... la parolina magica reinizializzato a 0 ...
    Scusa ma la questione non è la parolina magica ... è non aver compreso ancora come funziona il ciclo for.
    Probabilmente dovresti dare una ulteriore lettura ... La prima parte del for (nell'esempio j=0) significherà qualcosa no?

    E il ciclo for è uno dei costrutti più semplici (almeno nell'uso di base ...)
Devi accedere o registrarti per scrivere nel forum
4 risposte