Ayuda con este ejercicio!!!!!!!!

Noelia_Pucela
07 de Enero del 2005
Me gustaria saber que error tiene este ejercicio y si me le pueden mandar corregido se lo agradecería mucho:
/*Dada como entrada una matriz de caracteres de m filas y n columnas,
construir un método que escriba en pantalla las cadenas de caracteres de dicha
matriz formadas por las diagonales. Ejemplo: dada la matriz 2 x 3
a b c
d e f
g h i
Por pantalla debe aparecer: c
bf
aei
dh
g
*/
/*Hecho por Noelia Sanz Peñas*/
#include <stdio.h>
#include <conio.h>
void IntrodMatriz(char[][3]);
void VerMatriz(char[][3]);
void EscribDiagonales(char[][3]);
void EscribDiagonal(char[][3],int,int);
void main()
{
const int m=3,n=3;
char matriz[n][m];
IntrodMatriz(matriz);
printf (" * * * Matriz * * *n");
VerMatriz(matriz);
printf (" * * * Diagonales * * *n");
EscribDiagonales(matriz);
getch();
}
void IntrodMatriz(char m[][3])
{
for (int fila=0;fila<3;fila++)
{
for(int col=0;col<3;col++)
{
printf("Introduzca el elemento %d %d :",fila,col);
fflush(stdin);
scanf("%c",&m[fila][col]);
}
}
}
void EscribDiagonales(char m[][3]){
/* Recorro las filas de arriba a abajo */
for (int fila=0; fila<=2 ;fila--)
EscribDiagonal(m,fila,0);
/* Recorro las columnas de derecha a izquierda */
for (int col=3; col>1; col--)
EscribDiagonal(m,0,col);
}
void EscribDiagonal(char m[][3],int fila,int col)
{
int i,j; /* contadores */
i=fila;
j=col;
/* mientras no encontremos un tope */
while ((i<3)&&(j<3))
{
printf("%4c ",m[i][j]);
i++;
j++;
}
printf("n");
}
void VerMatriz(char m[][3])
{
/* escribimos datos */
for (int fila=0;fila<3;fila++)
{
for(int col=0;col<3;col++)
{
printf("%4c ",m[fila][col]);
}
printf("n");
}
}
Respuestas antes del 10 de enero. Lo agradecería mucho al q me lo mande

cafesanusoft
07 de Enero del 2005
//---------------------------------------------------------------------------
#include <stdio.h>
#include <conio.h>
#define MAXFILS 2
#define MAXCOLS 2

//---------------------------------------------------------------------------

void IntrodMatriz(char[][MAXCOLS]);
void VerMatriz(char[][MAXCOLS]);
void EscribDiagonales(char[][MAXCOLS]);
void EscribDiagonalFila(char[][MAXCOLS],int);
void EscribDiagonalCol(char[][MAXCOLS],int);

int main()
{
char matriz[MAXFILS][MAXCOLS];
IntrodMatriz(matriz);
printf (" * * * Matriz * * *\n");
VerMatriz(matriz);
printf (" * * * Diagonales * * *\n");
EscribDiagonales(matriz);
getch();
}

void IntrodMatriz(char m[][MAXCOLS])
{
for (int fila=0;fila<MAXFILS;fila++)
{
for(int col=0;col<MAXCOLS;col++)
{
printf("Introduzca el elemento %d %d :",fila,col);
fflush(stdin);
scanf("%c",&m[fila][col]);
}
}
}

void EscribDiagonales(char m[][MAXCOLS])
{
/* Recorro las filas de arriba a abajo */
for (int fila=0; fila<MAXFILS ;fila++)
{
EscribDiagonalFila(m,fila);
}
/* Recorro las columnas de derecha a izquierda */
for (int col=1; col<MAXCOLS; col++)
{
EscribDiagonalCol(m,col);
}
}
void EscribDiagonalFila(char m[][MAXCOLS],int fila)
{
int i,j; /* contadores */
i=fila;
j=0;
/* mientras no encontremos un tope */
while (i<MAXFILS && j < MAXCOLS)
{
printf("%4c ",m[i][j]);
i++;
j++;
}
printf("\n");
}
void EscribDiagonalCol(char m[][MAXCOLS],int col)
{
int i,j; /* contadores */
i=0;
j=col;
/* mientras no encontremos un tope */
while (i<MAXFILS && j < MAXCOLS)
{
printf("%4c ",m[i][j]);
i++;
j++;
}
printf("\n");
}

void VerMatriz(char m[][MAXCOLS])
{
/* escribimos datos */
for (int fila=0;fila<MAXFILS;fila++)
{
for(int col=0;col<MAXCOLS;col++)
{
printf("%4c ",m[fila][col]);
}
printf("\n");
}
}
//---------------------------------------------------------------------------
Para cambiar el tamaño de la matriz solo se cambia el tamaño de la matriz en MAXFILS y MAXCOLS, y listo.