Declaracion de una funcion de lectura matricial
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");
}
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");
}
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(),
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(),
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
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
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*************************/
/******************************************************************/
# 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*************************/
/******************************************************************/
