Declaracion de una funcion de lectura matricial

nosic
08 de Marzo del 2004
Necesito saber donde tengo el fallo para poder proseguir con el programa, me da error como si no tuviese declarada la funcion lectura, y no se porque, si alguien podria decirmelo se lo agradeceria, aqui dejo la parte del programa correspondiente a la funcion lectura, las variables m1[10][10] y m2[10][10] son globales.

void lectura (float, float);
.
.
.
void main (void)
{
.
.
.
switch (op)
{
case 1: lectura (m1,m2); break;
.
.
.
default: .....

.
.
.
}

void lectura (float m1[10][10],float m2[10][10])
{
char con;
int i, j;
clrscr ();
do
{
for (i=0;i<nf;i++)
{
for (j=0; j<nc;j++)
{
printf ("Introduzca el elemento [%d] [%d] de la matriz A",i+1,j+1);
scanf ("%f",&m1[i][j]);
clrscr ();
}
}
printf ("Ahora leeremos la matriz B");
for (i=0;i<nf;i++)
{
for (j=0; j<nc;j++)
{
printf ("Introduzca el elemento [%d] [%d] de la matriz B",i+1,j+1);
scanf ("%d",&m2[i][j]);
clrscr ();
}
}
clrscr ();
escribir (m1, m2);
printf ("n¨Son correctas las matrices introducidas? <S/N>: ");
scanf ("%c",&con);
if (con == "S" || con == "s") break;
}
while (con == "N" || con == "n");
}

noel solw
08 de Marzo del 2004
la declaracion y la implementacion de la funcion son
incompatibles, por una parte tu declaras
void lectura(float,float)
y luego implementas
void lectura(float m1[10][10],float m2[10][10]);
lo mejor es borrar lo primero y pasar la implementacion arriba de main(),

Alejandro 0.0.1
08 de Marzo del 2004
Viendo mejor tu función lectura(), encuentro que declaras a la variable

char con; // guarda un caracter.

mientras que después, cuando comparas al final del ciclo pones:

... ... ... ...
if (con == "S" || con == "s") break;
}
while (con == "N" || con == "n");
}

fíjate que "S" no es un caracter sino una cadena de dos caracteres ('S' y ''), y lo mismo pasa con "s", "N" y "n".

Deberías poner

if(con == 'S' || con == 's') break;
... ... ... ...


Aljandro

Nosic
08 de Marzo del 2004
Encontre el fayo!!!!! :D:D gracias a todos que me habeis ayudado :D, mirad, el fayo que me dice es que cuando opera con las variables float (m1, y m2) ahi es donde faya, dice q no linked o algo asi (point floatin no linked) o algo x el estilo, ahi es donde faya la cosa, xo el caso es que eso está bien, puesto que las variables globales m1 y m2 son float, y a la hora de escanearlas sta puesto: scanf ("%f", &m1[i][j]); ahi es donde esta el error, donde?, no lo se, kizas xq las variables sean globales?, me toca investigar, porque lo acaba de descubrir ahora ;) si alguien es capaz de ver donde faya dejo aki el codifo fuente entero, saludos y gracias!

# include <stdio.h>
# include <conio.h>

/*int lectura();*/
void suma ();
void escribir ();
void escribirsuma ();

/**************************Varibles globales**************************/
float m1[10][10];
float m2[10][10];
float m3[10][10];
int nf,nc, i, j;

/*************************Programa Principal**************************/
void main (void)
{
int op=0, marca=0;

textcolor (0);
textbackground (15);
do
{
printf ("Introduzca el numero de filas: "); scanf ("%d",&nf);
printf ("nIntroduzca el numero de columnas: "); scanf ("%d",&nc);
if (nf>10 || nc>10)
{
clrscr ();
gotoxy (32,12);
printf ("El numero de filas o de columnas es mayor de lo permitido (10)");
}
}
while (nf>10 || nc>10);
do
{
printf ("n1.- Leer matriz A y matriz B.");
printf ("n2.- Sumar las matrices dadas.");
printf ("n3.- Salir del programa.");
printf ("nElige una opcion: ");
scanf ("%d",&op);

switch (op)
{
case 1: for (i=0;i<nf;i++)
{
for (j=0; j<nc;j++)
{
printf ("Introduzca el elemento [%d] [%d] de la matriz A",i+1,j+1);
scanf ("%f",&m1[i][j]);
clrscr ();
}
}
printf ("Ahora leeremos la matriz B");
for (i=0;i<nf;i++)
{
for (j=0; j<nc;j++)
{
printf ("Introduzca el elemento [%d] [%d] de la matriz B",i+1,j+1);
scanf ("%f",&m2[i][j]);
clrscr ();
}
}
clrscr ();
break;
case 2: if (marca)
{
suma ();
break;
}
else
{
clrscr ();
gotoxy (32,12); printf ("No hay ninguna matriz!!");
getch ();
clrscr ();
break;
}
case 3: clrscr ();
gotoxy (21,12); printf ("*****Programado por Antonio Fernandez*****");
getch();
break;
default:clrscr (); gotoxy (31,12); printf ("Opcion incorrecta!!");
}
}
while (op !=3);
}

/*************************Fin Programa Principal*********************/
/********************************************************************/


/*************************Inicio Funcion Lectura*********************/

int lectura()
{
char con;
do
{
clrscr ();
for (i=0;i<nf;i++)
{
for (j=0; j<nc;j++)
{
printf ("Introduzca el elemento [%d] [%d] de la matriz A",i+1,j+1);
scanf ("%f",&m1[i][j]);
clrscr ();
}
}
printf ("Ahora leeremos la matriz B");
for (i=0;i<nf;i++)
{
for (j=0; j<nc;j++)
{
printf ("Introduzca el elemento [%d] [%d] de la matriz B",i+1,j+1);
scanf ("%f",&m2[i][j]);
clrscr ();
}
}
clrscr ();
escribir ();
printf ("n¨Son correctas las matrices introducidas? <S/N>: ");
scanf ("%c",&con);
if (con == 'S' || con == 's') return 1; break;
}
while (con == 'N' || con == 'n');

}
*/
/*************************Fin Funcion Lectura*************************/
/*********************************************************************/

/***********************Inicio Funcion Escribir***********************/
void escribir()
{
for (i=0; i<nf;i++)
{
for (j=0; j<nc;j++)
printf ("%f ",m1[i][j]);
printf ("n");
}
printf ("nn");
for (i=0; i<nf; i++)
{
for (j=0; j<nc;j++)
printf ("%f ",m2[i][j]);
printf ("n");
}
}

/*************************Fin Funcion Escribir************************/
/*********************************************************************/

/*************************Inicio Funcion Suma*************************/

void suma ()
{
for (i=0; i<nf; i++)
{
for (j=0;j<nc;j++)
m3[i][j] = m1[i][j] + m2[i][j];
}
for (i=0; i<nf; i++)
{
for (j=0; j<nc; j++)
printf ("%f ",m3[i][j]);
printf ("n");
}

}

/*************************Fin Funcion Suma*************************/
/******************************************************************/

nosic
08 de Marzo del 2004
ab, e adjuntado el archivo que no es, ese tiene algunos errores de sintaxis, pero weno, ya no mareo mas a la gente, muchas gracias de nuevo a todos, hasta la proxima duda ;)