elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con calculadora de matrices en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con calculadora de matrices en C  (Leído 5,241 veces)
theCdummie

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Ayuda con calculadora de matrices en C
« en: 15 Noviembre 2015, 16:27 pm »

Hola buenas, estoy haciendo una calculadora de matrices en C usando funciones, y tengo un par de dudas, espero que puedan ayudarme.
Cuando llamo a la función pedirMatriz(); y empiezo a introducir los datos, no le estoy pasando bien los datos guardados en las variables de las filas y columnas que tienen las matrices, porque me pide todo el rato que introduzca datos para la fila 1 y una columnas nueva, y no para, no se si me explico.

También me saltan warnings al llamar a la función pedir matriz, que son los siguientes:

c:119:16: warning: 'filasMA' may be used uninitialized on this function
c:119:16: warning: 'columnasMA' may be used uninitialized on this function
c:119:16: warning: 'filasMB' may be used uninitialized on this function
c:119:16: warning: 'columnasMB' may be used uninitialized on this function

Se que pone que deberia usarlas sin inicializar, pero no se como hacerlo :(


El código que tengo es este:

Código:
#include <stdio.h>

#define MAX_FILAS 5 /* Número máximo de filas que puede tener una matriz */
#define MAX_COLUMNAS 5 /* Número máximo de columnas que puede tener una matriz */
#define FALSE 0 /* Cuando el valor de la sentencia es falso, devuelve un 0 */
#define TRUE 1 /* Cuando el valor dela sentencia es verdadero, devuelve un 1 */


/* ---------- Declaración de los prototipos de las funciones ---------- */

void pedirDimensiones (int *filasMA, int *columnasMA, int *filasMB, int *columnasMB);
int menu (void);
void pedirMatriz (int matrizA[MAX_FILAS][MAX_COLUMNAS], int matrizB[MAX_FILAS][MAX_COLUMNAS], int filasMA, int columnasMA, int filasMB, int columnasMB);



int main(void) {

/* ---------- Declaración de constantes ---------- */

int filasMA, columnasMA; /* Almacenan el número de filas y columnas que tiene la Matriz A */
int filasMB, columnasMB; /* Almacenan el número de filas y columnas que tiene la Matriz B */



/* ------------  Programa principal  ------------ */

printf("\n\n** Introduccion de los datos de las matrices **");

/* Llamada a la función pedirDimensiones() */
pedirDimensiones(&filasMA, &columnasMA, &filasMB, &columnasMB);

/* Imprime por pantalla las dimensiones válidas introducidas por teclado */
printf("\nLas dimensiones de la Matriz A son %d Filas por %d Columnas.", filasMA, columnasMA);
printf("\nLas dimensiones de la Matriz A son %d Filas por %d Columnas.", filasMB, columnasMB);

/* Llamada a la función menu() */
menu();

return 0;
}


/* ---------- Definición de funciones ---------- */

/* Lee de teclado las filas y columnas de los arrays con los que se va a operar */
void pedirDimensiones (int *filasMA, int *columnasMA, int *filasMB, int *columnasMB)
{
printf("\n\nNumero de Filas de la Matriz A(1-5): ");
scanf("%d", &*filasMA);
/* Cuando el usuario introduce un valor incorrecto el bucle comienza hasta que se introduce un valor válido */
while (*filasMA<1 || *filasMA>MAX_FILAS)
{
printf("Numero de Filas de la Matriz A(1-5): ");
scanf("%d", &*filasMA);
}

printf("Numero de Columnas de la Matriz A(1-5): ");
scanf("%d", &*columnasMA);
/* Cuando el usuario introduce un valor incorrecto el bucle comienza hasta que se introduce un valor válido */
while (*columnasMA<1 || *columnasMA>MAX_COLUMNAS)
{
printf("Numero de Columnas de la Matriz A(1-5): ");
scanf("%d", &*columnasMA);
}

printf("\nNumero de Filas de la Matriz B(1-5): ");
scanf("%d", &*filasMB);
/* Cuando el usuario introduce un valor incorrecto el bucle comienza hasta que se introduce un valor válido */
while (*filasMB<1 || *filasMB>MAX_FILAS)
{
printf("Numero de Filas de la Matriz B(1-5): ");
scanf("%d", &*filasMB);
}

printf("Numero de Columnas de la Matriz B(1-5): ");
scanf("%d", &*columnasMB);
/* Cuando el usuario introduce un valor incorrecto el bucle comienza hasta que se introduce un valor válido */
while (*columnasMB<1 || *columnasMB>MAX_COLUMNAS)
{
printf("Numero de Columnas de la Matriz B(1-5): ");
scanf("%d", &*columnasMB);
}
}

/* Muestra el menú por pantalla y lee de teclado la opción seleccionada */
int menu (void)
{
/* Variables locales de menu() */

int opcion; /* Opción seleccionada por el usuario */
int matrices_con_datos; /* Comprueba si se han introducido datos en las matrices */
int filasMA, columnasMA, filasMB, columnasMB;
int matrizA[MAX_FILAS][MAX_COLUMNAS], matrizB[MAX_FILAS][MAX_COLUMNAS];



/* Inicializa el valor a FALSE indicando que las matrices están vacías */
matrices_con_datos=FALSE;

do
{
printf("\n\n        1. - Introducir datos en las matrices");
printf("\n        2. - Sumar matrices (A+B)");
printf("\n        3. - Multiplicar matrices (A*B)");
printf("\n        4. - Salir");
printf("\n\nSeleccione opcion: ");
scanf("%d", &opcion);

switch (opcion)
{
   case 1: /* El usuario introduce los datos de las matrices */
printf("\nIntroducir datos en las matrices");

/* Llamada a la función pedirMatriz(); */
pedirMatriz(matrizA, matrizB, filasMA, columnasMA, filasMB, columnasMB);

/* Llamada a la función verMatriz(); */
/* verMatriz(); */

break;

   case 2: /* Suma las matrices */
printf("\nSumar matrices");

/* Comprueba si se han introducido datos en las matrices */
if (matrices_con_datos==FALSE)
{
printf("\n\nNo se han introducido datos en las matrices");
}

/* Si se han introducido datos en las matrices, se llama a la función sumarMatriz() */
else
{
/* Llamada a la función sumaMatrices() */
}

break;

   case 3: /* Multiplica las matrices */
printf("\nMultiplicar matrices");

           /* Comprueba si se han introducido datos en las matrices */
if (matrices_con_datos==FALSE)
{
printf("\n\nNo se han introducido datos en las matrices");
}

/* Si se han introducido datos en las matrices, se llama a la función multiplicarMatriz() */
else
{
/* Llamada a la función multiplicarMatriz() */
}

break;

   case 4: /* Finaliza el programa */
break;

/* Cuando se introduce un valor numérico diferente a los especificados en el menú, muestra un mensaje de error */
   default: printf("\nOpcion incorrecta");
}

} while(opcion!=4);

return opcion;
}


/* Rellena las filas y columnas del array matriz indicadas en los parámetros filas y columnas con valores enteros leídos del teclado */
void pedirMatriz(int matrizA[MAX_FILAS][MAX_COLUMNAS], int matrizB[MAX_FILAS][MAX_COLUMNAS], int filasMA, int columnasMA, int filasMB, int columnasMB)
{
int i, j; /* Recorren las filas y las columnas de las matrices A y B */

printf("\n\n** Matriz A **\n\n");

/* Pide los datos de la matriz A */
for(i=0; i<filasMA; i++)
{
for(j=0; j<columnasMA; j++)
{  
printf("Fila [%d] Columa [%d]: ", i+1,j+1);
scanf("%d",&matrizA[i][j]);
}                
}

printf("\n\n** Matriz B \n\n**");

/* Pide los datos de la matriz B */
for(i=0; i<filasMB; i++)
{
for(j=0; j<columnasMB; j++)
{  
printf("Fila [%d] Columa [%d]: ", i+1,j+1);
scanf("%d",&matrizB[i][j]);
}                
}
}


« Última modificación: 15 Noviembre 2015, 16:54 pm por theCdummie » En línea

furciorifa

Desconectado Desconectado

Mensajes: 94


Ver Perfil
Re: Ayuda con calculadora de matrices en C
« Respuesta #1 en: 18 Noviembre 2015, 23:58 pm »

Yo compile con GCC no me da ningún error tu código, bueno veo errores aquí
 scanf("%d", &opcion);
Se cicla en la introducción de matrices cuando presionas uno porque recibe

1 después \n salto de línea que es  diferente de uno y no entra jamás.

los scanf(); para los tamaños de arrays no es necesario *& , con el nombre del puntero es suficiente


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con matrices
Java
fileto 2 2,921 Último mensaje 13 Febrero 2009, 06:13 am
por fileto
Ayuda con matrices
.NET (C#, VB.NET, ASP)
sheccid65 0 2,496 Último mensaje 6 Febrero 2010, 19:44 pm
por sheccid65
Ayuda con matrices
Java
ArhennJosey 2 2,893 Último mensaje 7 Mayo 2010, 22:29 pm
por 1mpuls0
Calculadora de matrices de numeros complejosBu
Java
remic 0 1,610 Último mensaje 12 Diciembre 2014, 16:57 pm
por remic
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines