Stai usando C o C++? In C la sintassi
Stai ancora facendo l'errore di usare VLA invece di array normali:
Prova a fare la stessa cosa anche con prodotto_matrice. Devi creare una funzione
Ci sono dei difetti di stile, ma io ne riparlerei solo dopo aver sistemato gli errori.
int &a;
(variabile di tipo riferimento) non esiste e oltretutto la stai usando in modo sbagliato. In C quando definisci una variabile con la sintassi tipo nome_variabile;
non puoi usare il simbolo &, se vuoi un puntatore puoi usare il simbolo *. Puoi usare la & solo se la variabile l'hai già definita e vuoi prendere il suo indirizzo, ma a quel punto non devi specificare il tipo.
C:
int leggi_dato() {
int a;
printf("Inserire numero minore di 6=");
scanf("%d", &a);
if (controllo_dato(a) == 0) {
printf("Numero errato");
return 0;
}
return a;
}
Stai ancora facendo l'errore di usare VLA invece di array normali:
int u[n];
dovrebbe essere int u[N];
e int w[n];
dovrebbe essere int w[N];
. Le funzioni non possono restituire un array, quindi anche u[n] = leggi_vettore(n);
è sbagliato. Dovresti implementare leggi_vettore allo stesso modo in cui hai implementato leggi_matrice:
C:
void leggi_vettore(int a[N], int n) {
for (int i = 0; i < n; i++) {
printf("Inserire %d componente del vettore u=", i + 1);
scanf("%d", &a[i]);
}
}
Prova a fare la stessa cosa anche con prodotto_matrice. Devi creare una funzione
void prodotto_matrice(int[N], int[N][N], int[N], int);
dove il primo argomento è il vettore int w[N];
che sei interessata a riempire e gli altri tre parametri sono la matrice, il vettore e la dimensione. Ci sono dei difetti di stile, ma io ne riparlerei solo dopo aver sistemato gli errori.