salve a tutti, sto provando a realizzare un programma che dato in input un array fino al carattere terminatore "-1" mi stampi una matrice di dimensioni NxN(dove N è la dimensione dell'array) e dove ogni elemento b[i][j]=a[i]*a[j]; l'ho realizzato, tutto ok, solo che con un input troppo "lungo" la piattaforma mi da errore di violazione del limite di memoria, potreste dare un occhiata al codice perfavore? Io sono due giorni che ci sbatto la testa ma non trovo soluzione.
codice:
#include <stdio.h>
#include <stdlib.h>
int** prodottoscalare(int *a,int dim);
int main()
{
int i=0;
int c;
int j;
int *a;
a=malloc(sizeof(int));
while(c!=-1){
scanf("%d",&c);
if(c!=-1){
a[i]=c;
i++;
a=realloc(a,(i+1)*sizeof(int));
}
}
int** b;
b=prodottoscalare(a,i);
for(j=0;j<i;j++){
if(j!=0){
printf("\n");}
for(c=0;c<i;c++){printf("%d ",b[j][c]);}
}
return 0;
}
int **prodottoscalare(int *a,int dim){
int i;
int j;
int **b;
b=malloc(dim*sizeof(int));
for(i=0;i<dim;i++){b[i]=malloc(dim*sizeof(int));}
for(i=0;i<dim;i++){
for(j=0;j<dim;j++){
b[i][j]=a[i]*a[j];
}
}
return b;
}