Oppure

Loading
04/06/08 18:00
DAN
Scusatemi se il titolo può sembrare strano o fuorviante ma non saprei come riassumerlo diversamente.
Dunque dal principio. Tra le varie esercitazioni che avevo da fare ce ne stava una che diceva.

/* Scrivere un programma che disegni sullo schermo un trangolo
 * di asterischi data l'altezza dall'utente.
 * L'altezza sara' minore di 20
 *
 * Es.
 *
 *      *
 *     ***
 *    *****
 *   *******
 *  *********
 *     
 * */


Dal punto di vista strettamente organizzativo non ci ho messo molto a capire cosa avrei dovuto fare (chiedere l'altezza, verificare che fosse < 20 e nidificare dei for prima rispetto l'altezza, poi gli spazi infine gli *)
Il problema, è che finchè non ho visto la soluzione, non riuscivo ad immaginare l'operazione anzi le due operazioni che mi portavano a calcolare lungo l'esecuzione degli ultimi due for, come calcolare le successioni matematiche che ponevano il numero corretto di spazi e asterischi.
Il meglio che sono riuscito a cavare è stato un triangolo rettangolo.



Adesso mi chiedo, in vista di future esercitazioni di questo tipo es. disegnare rombi come posso fare per allenarmi a capire che razza di forma dare alla successione che controlla il relativo ciclo for ?
E' al quanto snervante "vedere" la strada giusta e non poterla seguire perchè non mi accorgo di un muretto all'altezza delle ginocchia...


#include <stdio.h>

main()
{
	int h,i,j,k;

	printf("Inserire l'altezza dell'albero : ");
	scanf("%d",&h);

	printf("\n");
	for(i=0;i<h;i++)
	{
		for(j=0;j<h-i;j++)
			printf(" ");
		for(k=0;k<( (i+1)*2-1);k++)
			printf("*");

		printf("\n");
	}
}


Nel caso in oggetto questa è la soluzione e come potete vedere non mi veniva proprio in testa quel
k<( (i+1)*2-1)

Come faccio a riuscirci in futuro ?
aaa
04/06/08 19:02
Bond93
Be allora innanzi tutto hai capito perchè il programma si doveva fare così?
Se sì è già un gran passo avanti...
Comunque la chiave è fare esercizio provare e riprovare e nel modo più assoluto non guardare le soluzioni ( a meno che non debbe consegnare il compito ) sbattici la testa e avrai anche delle belle soddisfazioni se proprio non sai che 'pesci pigliare' vai per tentativi ( a compilare ci perdi qlc secondo ) o chiedi sulla comunity ma posso garantirti che più fai da solo più impari...
Poi il for non non nasconde proprio nulla fai un po di es e non avrai + problemi
:k::k:
aaa
04/06/08 19:10
DAN
Beh tolta sta mania strana di usare singole lettere come variabili (preferisco di gran lunga nomi comprensibili e prefissi tipo C_ --> Contatore) alla lunga lo capisco, solo che mi viene la paura che una eventuale prossima volta sarò di nuovo punto a capo.
Fra non molto tento la fortuna con un esercizio simile che prevede un rombo.
aaa
04/06/08 19:14
FHF93
la soluzione non è necessariamente ed esclusivamente quella , puoi benissimo fartelo da te l'algoritmo , ci pensi un pò su come costruire questo triangolo e continui a buttar giù codice
aaa
04/06/08 19:27
Bond93
Togliti le paure davvero prova mica stai facendo un programma per dei missili nucleari:D stai solo disegnando dei rombi alla peggio vengono sbilenchi:k: cmq Per le variabili sappi che in C troverai pochissime perseno che usano variabili come cnt C_for1 ecc.. I contatori 'classici' sono i, k, j o n e sono i più utilizzati:k:
aaa
04/06/08 20:04
DAN
Ma non esiste un modo umano per ricostruire una successione (perchè alla fine è quello che controlla il for) a partire dai risultati ?

Edit: A prop. del modo Umano penso di aver trovato un metodo di ragionamento che segno a futura memoria di altri niubbi e del sottoscritto non appena se ne dimenticherà :D

Dato il disegno d'esempio (se è sbagliato quello sono cavoli amari) e dato l'aver già compreso come nidificare i for (chi arriva prima e chi dopo)

Segnarsi a lato del disegno i numeri delle righe come si fa per gli indici dei vettori e segnarsi sopra a quale variabile di quale for appartengono (visto che i for nidificati fanno uso delle variabili dei for "nidificatori";).
Poi in maniera simile al passo-passo farsi tutti i conti in modo da essere ben consci del valore di ogni singola variabile ad ogni giro di for.

Ragionare solo sulle lettere e per pochi giri, manda in pappa il cervello ed al terzo passaggio si finisce per domandarsi già chi era uno chi l'altro e soprattutto perchè si faceva tutto questo.
Ultima modifica effettuata da DAN 04/06/08 21:45
aaa