Ok mo posto tutto meglio.
Devo creare un triangolo che da un array di 5 interi casuali, deve fare la sottrazione con a[0] - a[1] poi a[1] - a[2] e cosi via... e generare un triangolo isoscele (se possibile) come nell'esempio qui sotto.
5
4 9
7 11 2
8 1 12 10
6 14 15 3 13
i numeri sono generati in un intervallo tra 1 e 15.
IL MAIN (main.c) usando codeblocks
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void proceduraTriangolo(int [], int);
int main()
{
int array[5];
int i;
srand(time(NULL));
for(i=0;i<5;i++)
{
array[i]=1 + rand() %15;
printf ("%4d",array[i]);
}
proceduraTriangolo(array,5);
return ;
}
LA FUNZIONE uso sempre codeblocks (windows)
ATTENZIONE: la funzione la metto in un file.c separato dal main.
Mi sposto all'interno di una matrice 2D facendo il primo ciclo for per associare l'arry 2D all'array.
Poi faccio 2 cicli for innestati per fare l'oprerazione di sottrazione dei 2 alementi.
Poi faccio altri 2 cicli for innestati per la stampa del triangolo .
ATTENZIONE: mi da un warning dove sta nella funzione int i,j; dicendomi che i non viene utilizzata. Non so perchè? il ciclo for che richiede i ci sta.
#include <stdlib.h>
#include <stdio.h>
void proceduraTriangolo (int array[],int n)
{
int array2D[n][n];
int i,j;
for (int i = 0; i < n ; i++)
{
array2D[n-1][i] = array[i];
for (int i = n-2; i >= 0; i--)
for (int j = 0; j <= i; j++)
{
array2D[i][j] = array2D[i+1][j] - array2D[i+1][j+1];
}
for ( i = 0; i < n; i++)
for( j = 0; j <= i ; j++)
{
printf("%4d",array2D[i][j]);
}
printf ("\n");
}
}
Spero che qualcuno possa aiutarmi, altrimenti se ci sta una soluzione migliore o alternativa della funzione per me va bene, perchè per quanto riguarda il costo spazio-tempo non è uno dei migliori.