secondo me per quello che devi fare, va benissimo usare una matrice di char sovradimensionata, come hai fatto tu, e comunque c'è un problema nel caricamento della matrice perchè quando si inseriscono i caratteri con la
codice:
scanf("%c",&carattere);
c'è il problema del solito return(invio) che di per sè rappresenta un carattere(\n); per questo motivo viene letto anche il return man mano che vengono introdotti i dati e questo fa andare in palla la lettura, quindi a volte per rimediare a questo si usa:
codice:
scanf("%c%c",&invio, &carattere);
in modo che il primo %c si "mangia" il carattere del return e non va a causare problemi nell'acquisizione!
Apparte questo problema, c'era qualche problema nel codice, ovvero che leggi la matrice al contrario! Ovvero leggi le colonne al posto delle righe! comunque ti posto qua il codice un pò corretto, prova un pò tu, vedi se ci sono altri problemi...ciao
codice:
#include <stdio.h>
#define col 50
#define rig 30
int confronto(char[][col],int);
void stampaA ( char A[][col], int x );
int main(){
char A[rig][col];
char invio;
int i,j,x,res;
printf("Dammi 1 N >0. N x N sara' la grandezza della matrice\n");
scanf("%d",&x);
//RIEMPIMENTO MATRICE
for(j=0;j<x;j++){
printf("Riempire la %d Riga con %d lettere\n ",j+1,x);
for(i=0;i<x;i++)
scanf("%c%c",&invio, &A[j][i]);
}
printf ("\nMatrice di caratteri:\n");
stampaA ( A, x );
res=confronto(A,x);
if(res==1)printf("TRUE\n");
else printf("FALSE\n");
system ("pause");
return 1;
}
int confronto(char c[rig][col],int x){
int i,j,k,res;
for(j=0;j<x;j++)
for(i=0;i<x;i++)
for(k=0;k<x;k++){
if(c[i][j]!=c[k][j+1])
res=1;
if(c[i][j]!=c[k][j+1])
res=0;
}
return res;
}
void stampaA ( char A[][col], int x )
{
int i, j;
for(i=0;i<x;i++) {
for(j=0;j<x;j++) {
printf ("%c ", A[i][j]);
}
printf ("\n");
}
return;
}