PDA

Visualizza la versione completa : funzione con matrice NxN [C]


TheJoeseph
26-08-2014, 14:02
Salve ragazzi,
sono alle prese con un esercizio che consiste nel realizzare un programma che mi permetta di creare una matrice quadrata e che per mi stampi a video una matrice con gli elementi che stanno sopra la diagonale principale con quelli che stanno sotto... io il codice l'ho fatto ma il problema che richiesta l'uso di almeno una funzione.. come posso fare? mi dice "error type of formal parameter 1 is incomplete"


ecco il codice:


#include <stdio.h>
#include <stdlib.h>
#define MAX 100
void print(int mat[n][n]);
int main()
{
int i, j, n,temp;
int mat[MAX][MAX];


do{
printf("quante righe/colonne deve avere la matrice? ");
scanf("%d",&n);
} while(n<=0 || n>MAX);




for(i=0;i<n;i++)
for(j=0; j<n;j++) {
printf("inserire il valore di posto %d,%d:",i,j);
scanf("%d",&mat[i][j]);


}
printf(mat[n][n]);
return 0;
}


void printf(int mat[n][n]){
int i,j;
for(i=0;i<n;i++){
for(j=0;j<n;j++){
printf("%d\t",mat[j][i]);
}
printf("\n");
}
}

grazie in anticipo.

oregon
26-08-2014, 14:40
Non puoi chiamare la tua funzione printf dato che una funzione di libreria

E poi devi passarle semplicemente mat

TheJoeseph
26-08-2014, 14:42
ah si scusa.. errore di battitura ;) comunque mi dice che n non dichiarato...

oregon
26-08-2014, 14:46
Devi passare n alla funzione ... riproponi il codice dopo averlo corretto.

Occhio agli errori di battitura altrimenti non ci capiamo ...

TheJoeseph
26-08-2014, 14:49
#include <stdio.h>#include <stdlib.h>
#define MAX 100
void print(int n,int mat[n][n]);
int main()
{
int i, j, n,temp;
int mat[MAX][MAX];


do{
printf("quante righe/colonne deve avere la matrice? ");
scanf("%d",&n);
} while(n<=0 || n>MAX);




for(i=0;i<n;i++)
for(j=0; j<n;j++) {
printf("inserire il valore di posto %d,%d:",i,j);
scanf("%d",&mat[i][j]);


}
print(n,mat[n][n]);
return 0;
}


void print(int n, int mat[n][n]){
int i,j;
for(i=0;i<n;i++){
for(j=0;j<n;j++){
printf("%d\t",mat[j][i]);
}
printf("\n");
}
}




me lo fa eseguire ma dopo aver inserito i numeri si blocca.. c' qualche problema nell'esecuzione della funzione

oregon
26-08-2014, 15:37
Nelle dichiarazioni deve essere

print(int n, int mat[MAX][MAX])

e nella chiamata

print(n, mat);

TheJoeseph
26-08-2014, 15:49
hai ragione.. funziona tutto perfettamente :)... un'altra cosa.. come dovrei impostarla la funzione se non uso MAX?

oregon
26-08-2014, 18:08
hai ragione.. funziona tutto perfettamente :)... un'altra cosa.. come dovrei impostarla la funzione se non uso MAX?

Dovresti usare l'allocazione dinamica della memoria (funzione malloc e simili). La conosci?

TheJoeseph
27-08-2014, 12:43
io uso il malloc per la creazione di liste concatenate ma in questo caso non ho malta dimestichezza.

oregon
27-08-2014, 13:22
Beh ... non c' molta differenza ... ma se ancora non sei confidente nell'uso della malloc, usa un massimo con MAX

Loading