Realizziamo un algoritmo che sviluppi il triangolo di Tartaglia in C.
Definizione triangolo di Tartaglia
In matematica il triangolo di Tartaglia è una tabella di numeri naturali disposti a triangolo e dove ciascun elemento è detto coefficiente binomiale perché coincide con i coefficienti delle potenze di un binomio.
Come si ottiene?
Al vertice e lungo i due lati esterni si inserisce il numero 1 mentre ogni elemento interno si ottiene dalla somma dei numeri della riga precedente sopra di esso.
Ad esempio nella terza riga il 2 è ottenuto come somma dei due uno che stanno sopra; o ancora nella quarta riga il 3 è ottenuto sommando gli elementi che stanno sopra 1 e 2. E così via.
Vogliamo realizzare un programma che rappresenti il triangolo di Tartaglia in C.
Procedimento algoritmo triangolo di Tartaglia in C
Dapprima chiediamo quante righe vogliamo visualizzare e lo facciamo controllando, come sempre, che il numero di righe non sia inferiore a 1 o che non superi il limite massimo.
Dopo inizializziamo la prima riga che avrà il vertice uguale a 1 e tutti gli altri elementi saranno a 0. Quindi a(0,0)=1.
Poi calcoliamo le altre righe, quindi utilizziamo due cicli, partendo dalla seconda riga ovvero da i=1.
Il primo elemento di ciascuna riga, in quanto elemento esterno, abbiamo detto che deve essere 1, quindi: a[i][0]=1;
Se ad esempio n=6 in questo modo tutti gli elementi da a(1,0) ad a(5,0) saranno uguali a 1. L’elemento a(0,0) lo abbiamo impostato prima.
Tutti gli altri elementi seguiranno questo calcolo:
a[i][j]=a[i-1][j-1]+a[i-1][j];
Ad esempio se consideriamo la seconda riga avremo:
a(1,0)=1
a(1,1)=a((i-1),(j-1))+a((i-1),(j)) ovvero: a(1,1)=a(0,0)+a(0,1)=1+0=1
Se consideriamo la terza riga avremo:
a(2,0)=1
a(2,1)=a(1,0)+a(1,1)=1+1=2
a(2,2)=a(1,1)+a(1,2)=1+0=1
E così via per le altre righe.
Non ci resta che visualizzarlo con due semplici cicli for.
Allego il listato completo.
#include<stdio.h>
#define N 100
int main(){
int n,i,j,a[N][N];
do {
printf("Dammi il numero di righe: ");
scanf("%d", &n);
} while ((n>=N) || (n<1));
//inizializzo la prima riga
a[0][0]=1;
for(j=1;j<n;j++)
a[0][j]=0;
//calcolo le altre righe
for(i=1;i<n;i++) {
a[i][0]=1;
for(j=1;j<n;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
//visualizzazione triangolo di tartaglia
for(i=0;i<n;i++){
for(j=0;j<=i;j++)
printf("%d ", a[i][j]);
printf("\n"); //va a capo
}
}
Sviluppato in questo modo per n=6 si avrà questo risultato:
Sarebbe più gradevole visualizzare il triangolo di Tartaglia inserendo gli spazi vuoti.
Basterà modificare solo la parte della visualizzazione in questo modo:
//visualizzazione triangolo di tartaglia
for(i=0;i<n;i++){
for (j=1; j<(n-i)*4;j++)
printf(" "); //inserisce gli spazi bianchi
for(j=0;j<=i;j++)
printf("%8d ", a[i][j]);
printf("\n");
}
Ecco un possibile sviluppo del triangolo di Tartaglia in C.
Alcuni link utili
Somma elementi diagonale principale di una matrice
Sommare elementi cornice esterna
Sommare dei numeri di una matrice
Ricerca elementi in una matrice