[C] Esercizio: quadrato di asterischi

di il
13 risposte

[C] Esercizio: quadrato di asterischi

Ciao a tutti,

ho un problema con un esercizio svolto , questo programma stampa un quadrato disegnato da * in base al numero di lati scelti, ho scritto questo

/*stampa di un quadrato in base al dato inserito */

#include <stdio.h>

int main(void){
	
	int riga,colonna;/*dichiarazione delle varibile */
	
	printf("Inserisci dato: ");/*richiesta di inserimento del dato*/
		scanf("%d",&riga);/*memorizzaione del dato inserito*/
		
	while(riga>=1){/*cicla fintato che le righe sono maggiori di 1*/
		
		colonna=1;/*inizializzazione della variabile colonna a 1,1°ciclo*/
		
		while(colonna<=riga){/*itera fintato che le colonne sono minori o uguali alle righec,2°ciclo*/
			
			printf("%s",riga%2?"*":"*");/*stampa del disegno da formare */
			++colonna;/*postincrementa la colonna*/
			
		}
		/*termine del 2° ciclo*/
		
		--riga;/*postdecrementa le righe*/
		printf("\n");/*inizia una nuova riga*/
		
	}
	/*termine del 1° ciclo*/
	
	return 0;/*programma terminato correttamente*/
}

apparentemente il programma funziona , ma invece di stampare tutti i lati in base al numero scelto , per esempio se inserisco 4 stampa così

****
***
**
*
invece di stampare così:

****
****
****
****
dove sbaglio?

13 Risposte

  • Re: [C] Esercizio: quadrato di asterischi

    Perchè fai questa

    while(colonna<=riga)

    ?

    E' evidente che riga va diminuendo e quindi anche gli asterischi in colonna ...

    Perché non usi due semplici for?
  • Re: [C] Esercizio: quadrato di asterischi

    Perchè non sono ancora arrivato a studiare i cicli in for , quindi se modifico quel while(colonna<=riga) in while (colonna=riga) dovrebbe funzionare?
  • Re: [C] Esercizio: quadrato di asterischi

    No nemmeno così funziona , mi genera un ciclo infinito
  • Re: [C] Esercizio: quadrato di asterischi

    No ... non ti ho detto di modificarlo in quel modo, che è sbagliatissimo.

    Modifica il while diminuendo colonna, come fai per riga (ovviamente colonna non deve partire da 1)
  • Re: [C] Esercizio: quadrato di asterischi

    Se la colonna non deve partire da 1 dovrà partire con riga o dovrà essere uguale a riga?
  • Re: [C] Esercizio: quadrato di asterischi

    Fai le prove ... il computer non esplode ...
  • Re: [C] Esercizio: quadrato di asterischi

    Ho riletto l'esercizio , dice che il valore da inserire deve essere compreso tra 1 e 20,quindi il secondo ciclo dovrà essere <=20 ,a questo punto posso inizializzare la variabile colonna a 20 per poi decrementare e vedere cosa succede,ora faccio le prove e ti faccio sapere....

    grazie mille per l'aiuto
  • Re: [C] Esercizio: quadrato di asterischi

    ...

    colonna=riga;

    per fare lo stesso numero di colonne e righe.
  • Re: [C] Esercizio: quadrato di asterischi

    Le ho provate tutte, e non riesco a venirne a capo , ora ho scritto questo
    
    /*stampa di un quadrato in base al lato inserito di un valore scelto dall'utente compreso tra 1 e 20*/
    
    #include <stdio.h>
    
    int main (void){
    	
    	int riga=1,colonna;/*dichiarazione delle variabili*/
    	
    	printf("Inserisci il lato: ");/*richiesta di inserimento del lato del quadrato*/
    		scanf("%d",&riga);/*memorizzazione del valore scelto*/
    	
    	while(riga>=1){/*1° ciclo, fintanto che riga e maggiore uguale a 1*/
    		
    			
    	colonna==riga;/*colonna sarà uguale a riga*/
    	
    	while(colonna<=riga){/*2°ciclo, itera finatanto che colonna sarà minore uguale a riga*/
    		
    		
    		printf("%s",riga%20?"*":"*");/*stampa del disegno del quadrato*/
    		++colonna;/*incremento di colonna*/
    	
    	}
    	/*fine del 2° ciclo*/
    		
    		--riga;/*decremento di riga*/
    		printf("\n");/*torna a capo*/	
    	
    	}
    	/*fine del 1° ciclo*/
    	
    	return 0;/*programma eseguito correttamente*/
    	
    }
    
    
    se inserisco per esempio un valore di 4 mi stampa 4 asterischi in riga e poi va a capo con spazi vuoti
    se decremento colonna esegue un ciclo infinito , non riesco proprio a capire lo sbaglio che faccio
  • Re: [C] Esercizio: quadrato di asterischi

    Ricominciamo ...

    Utilizza per l'input una variabile che chiami lato

    Poi fai i due cicli, riga=lato fino a 1 e colonna=lato fino a 1 ...
  • Re: [C] Esercizio: quadrato di asterischi

    Oregon Finalmente ci sono riuscito, grazie mille per l'aiuto
    
    /*stampa di un quadrato in base al lato inserito di un valore scelto dall'utente compreso tra 1 e 20*/
    
    #include <stdio.h>
    
    int main (void){
    	
    	int lato=1,riga,colonna;/*dichiarazione ed inizializazione delle varibili*/
    	
    	printf("Inserisci il lato del quadrato: ");/*richiesta di inserimento del lato*/
    		scanf("%d",&lato);/*memorizzazione del dato*/
    	
    	riga=lato;/*assegnamento del valore del lato a riga*/
    	
    	
    while(riga>=1){/*1° cilco,fintanto che riga è maggiore o uguale a 1*/
    	
    	colonna=lato;/*assegno il dato del lato a colonna*/
    	
    	while(colonna>=1){/*2°ciclo , itero fintanto che colonna è maggiore o uguale a 1*/
    		
    		colonna--;/*decremento del valore inserito*/
    		printf("%s",riga?"*":"*");/*stampa del disegno del quadrato*/
    	
    	}/*fine del 2°ciclo*/
    	
    	riga--;/*decremento del valore inserito*/
    	printf("\n");/*ritorno a capo*/
    
    }/*fine del 1° cilco*/
    
    return 0;/*programma eseguito correttamente*/
    }
    
    
    
    è corretto così?

    ora dovrò fare lo stesso esercizio, solo che invece di stampare un quadrato pieno dovrà stampare solamente il contorno , quindi in mezzo dovrà essere vuoto, un suggerimento ?
  • Re: [C] Esercizio: quadrato di asterischi

    Ma se è corretto non lo vedi tu eseguendolo? Lo hai fatto?
  • Re: [C] Esercizio: quadrato di asterischi

    I il programma funziona, volevo solo sapere il modo come l'ho scritto va bene o si può fare di meglio
Devi accedere o registrarti per scrivere nel forum
13 risposte