Nippolo ecco sono arrivato fino a qui, ho:
-creato un array con numeri differenti;
-inserito nell'ultima riga della piramide;
-fatto tutte le sottrazioni;
Ora mi manca:
-che tutti i numeri della piramide siano difìfferenti;
-ripetere per 5 volte la simulazione...
Guarda ti mostro fin dove sono riuscito a fare spero tu riesca ad aiutarmi a continuare..
#include<stdio.h>
#include<stdlib.h>
void visualizza_array_a(int a[5], int n);
void visualizza_array_b(int b[5][5], int rig, int col);
void main()
{
int numeri[15]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
srand(time(NULL));
/*Visualizzo i 15 numeri*/
int t;
printf("Numeri: ");
for(t=0; t<15; t++)
{printf("%3d", numeri[t]);}
printf("\n\n");
/*Creo e visualizzo i numeri senza ripetizioni in un array da 5
che andranno poi nella base della piramide*/
int a[5], i, j;
printf("Array A pseudo-random di partenza in ultima fila: ");
for(i=0; i<5; i++)
{a[i]=1+rand()%15;
for(j=0; j<i; j++)
{
if(a[i]==a[j]){
i--;
break;
}
}}
/*Visualizzo l'array da 5 di partenza*/
visualizza_array_a(a,5);
int b[5][5];
printf("\n\n\n\n");
/*Copio i 5 numeri dall'array di 5 alla base della piramide*/
int v;
for(v=0; v<5; v++)
{b[4][v]=a[v];}
/*Gestisco le operazioni di sottrazione con 2 cicli for annidati e un if per avere il valore assoluto e
non avere numeri negativi in sottrazione*/
int colonna, riga;
for(riga=3; riga>=0; --riga)
{ for(colonna=4; colonna>=0; --colonna)
{
b[riga][colonna-1]=b[riga+1][colonna]-b[riga+1][colonna-1];
if(b[riga][colonna-1]<0)
b[riga][colonna-1]=b[riga][colonna-1]*-1;}
}
printf("\n\n\n");
visualizza_array_b(b,5,5);
}
void visualizza_array_a(int a[5], int n)
{
int i;
for(i=0; i<5; i++)
printf("%3d", a[i]);
}
void visualizza_array_b(int b[5][5], int rig, int col)
{
for(rig=0; rig<5; rig++)
{
for(col=5; col>rig; --col)
{printf(" ");}
for(col=0; col<=rig; col++)
printf(" %3d ", b[rig][col]);
printf("\n\n\n");
}
}