E' un progetto per un esame universitario.
Ah si scusa, scrivo così perchè il professore ci ha detto di dichiarare le variabili e poi dopo formare il for, magari la vede come cosa positiva.
Scusa le ho cambiate nell'ultimo progetto salvato questo era il penultimo post, e avevo tolto num_norepeat.
Questo è l'ultimo progetto salvato...
Ora faccio ciò che mi hai consigliato, quindi di sistemare la function controllo_numero e ti aggiorno.
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void visualizza_numeri(int numeri[], int num);
void visualizza_base(int b[][5], int numeri_base);
void visualizza_array_b(int b[5][5], int rig, int col);
void genera_numeri_senza_ripetizione_base(int b[][5]);
void sottrazioni(int b[][5], int rig, int col);
int controllo(int b[5][5], int n);
int controllo_piramide(int b[5][5]);
int main()
{
int numeri[15]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
srand(time(0));
int b[5][5];/*={{1},{2,3},{4,5,6},{7,8,9,10},{11,12,13,14,15}};ho fatto la prova, funziona,
viene 1 quando a tutti i numeri presenti viene assegnato 1 alla funzione controllo tutti i numeri sono uguali*/
int num=15, numeri_base=5;
int rig=5, col=5;
printf("Numeri da utilizzare: ");
visualizza_numeri(numeri, num);
printf("\n\n");
int p;
for(p=0; p<5; p++)
{
printf("\n%da simulazione:\n\nArray A pseudo-random di partenza in ultima fila quindi base della piramide: \n\n", p+1);
do{
genera_numeri_senza_ripetizione_base(b);
sottrazioni(b,rig,col);
}while(controllo_piramide(b)==1);
visualizza_base(b,numeri_base);
printf("\n\n");
visualizza_array_b(b,5,5);
printf("\n-----------------------------------------------------------------------------\n");
}
}
void visualizza_numeri(int numeri[], int num)
{
int i;
for(i=0; i<num; i++)
printf("%3d", numeri[i]);
}
void visualizza_base(int b[][5], int numeri_base)
{
int i;
for(i=0; i<numeri_base; i++)
{printf("%3d", b[4][i]);}
}
void genera_numeri_senza_ripetizione_base(int b[][5])
{
int i, j;
int *base=b[4];
for(i=0; i<5; i++)
{
base[i]=1+rand()%15;
for(j=0; j<i; j++)
{
if(base[i]==base[j])
{
i--;
break;
}
}
}
}
void sottrazioni(int b[][5], int rig, int col)
{
int i,j;
for(i=3; i>=0; --i)
{
for(j=i; j>=0; --j)
{
b[i][j]=b[i+1][j]-b[i+1][j+1];
if(b[i][j]<0)
{
b[i][j]=b[i][j]*-1;
}
}
}
}
int controllo(int b[5][5], int n)
{
int i, j;
for (i=0 ; i<5; ++i)
{
for(j=0; j<5; ++j)
{if ( b[i][j] == n )
{
return 1;
}
}
}
return 0;
}
void visualizza_array_b(int b[5][5], int rig, int col)
{
int i,j;
for(i=0; i<rig; i++)
{
for(j=col; j>i; --j)
{printf(" ");}
for(j=0; j<=i; j++)
printf(" %3d ", b[i][j]);
printf("\n\n\n");
}
}
int controllo_piramide(int b[5][5])
{
int n;
for(n=1; n<=15; ++n)
{
if(!controllo(b,n))
{
return 1;
}
}
return 0;
}