Problema su un programma, vorrei un chiarimento...

di il
2 risposte

Problema su un programma, vorrei un chiarimento...

Dunque il linguaggio è solo il C. In pratica mi si chiede di costruire con piu di un ciclo while, un quadrato vuoto in base al numero che inserirò, varierà la grandezza dei lati...dopo essermi scervellato, ho cercato la risposta, perchè proprio non riuscivo...ma ancora non ho capito la cosa...cioè, fa un utilizzo della decisione, nidificata nel ciclo...che non comprendo bene il meccanismo di come essa operi...mi spiego, intanto posto il codice:

#include <stdio.h>


main()
{
      int lato, oriz, vert;
      
      printf("Inserisci il valore del lato: ");
      scanf("%d", &lato);
      
      vert = lato;
	while (vert > 0) {
          
		oriz = lato;
		
		while (oriz > 0) {
              
			if ((vert == 1) || (vert == lato) || 
            (oriz == 1)     || (oriz == lato))
				printf("* ");
				
			else
				printf("  ");
				
			oriz--;
		}
		printf("\n");
		vert--;

      }
      getchar();
      }
In pratica, non capisco la parte centrale...


while (oriz > 0) {
              
			if ((vert == 1) || (vert == lato) || 
            (oriz == 1)     || (oriz == lato))
				printf("* ");
				
			else
				printf("  ");
				
			oriz--;
		}
ovviamente finchè la parte del ciclo centrale non diventa falsa, non continuerà col primo ciclo, ma non mi spiego, come faccia a creare per prima la cornice composta ad esempio, da 4 asterischi, (se inserisco il numero 4), potete darmi un chiarimento sul ciclo interno, e come funzioni esattamente? sinceramente fin ora nelle strutture nidificate, non ho avuto problemi..ma questa mi manda al manicomio...

2 Risposte

  • Re: Problema su un programma, vorrei un chiarimento...

    Semplicissimo simulando i passaggi :


    LATO=4:

    vert = 4

    \\ ciclo interno 1^ riga
    oriz = 4
    vert = lato ? V "* "
    oriz = 3
    vert = lato ? V "* "
    oriz = 2
    vert = lato ? V "* "
    oriz = 1
    vert = lato ? V "* "
    oriz = 0

    "\n"
    vert = 3

    \\ritorno al ciclo esterno 2^ riga
    oriz = 4

    \\ ciclo interno
    oriz = lato ? V "* "
    oriz = 3
    tutte condizioni false " "
    oriz = 2
    tutte condizioni false " "
    oriz = 1
    oriz = 1 ? V "* "
    oriz = 0

    "\n"
    vert = 2


    questi sono i primi due passaggi nel ciclo esterno;
    si continua così fin quando vert = 0 ed esce anche dal ciclo esterno e ti chiede un carattere
  • Re: Problema su un programma, vorrei un chiarimento...

    Ok...ti ringrazio..ci sono..trovavo un po di difficoltà, in queste nidificazioni...comunque ok..
Devi accedere o registrarti per scrivere nel forum
2 risposte