Matrices en C

Iniciado por criser20, 3 Abril 2014, 19:38 PM

0 Miembros y 1 Visitante están viendo este tema.

criser20

ayudenme que por alguna razon el programa no me avanza a la segunda fila, es de una tarea y eso es lo que he avanzado y me hace lo mismo en la transpuesta ayuda porfavor:((


#include <stdio.h>
#include <stdlib.h>
#define MAX 200

void llenaMatriz(int n, int m, int matriz[MAX][MAX]);
void despliegaMatriz(int n, int m, int matriz[MAX][MAX]);
void transpuesta(int n, int m, int matriz[MAX][MAX]);
void multiplicacion(int fila, int col, int fila2, int col2, int A[MAX][MAX], int B[MAX][MAX], int C[MAX][MAX]);

int main()
{int opc, f, c, c2, f2, matriz[f][c], matriz2[f][c], matriz3[f][c];

   do{
        system("CLS");
   printf("Seleccione una accion.\n");
   printf("1.Multiplicacion de matrices.\n");
   printf("2.transpuesta de una matriz.\n");
   scanf("%d", &opc);
    switch(opc){
case 1:
    printf("numero de filas:");
    scanf("%d", &f);
    printf("numero de columnas:");
    scanf("%d", &c);
    llenaMatriz(f, c, matriz);

    printf("numero de filas de la segunda matriz:");
    scanf("%d", &f2);
    printf("numero de columnas de la segunda matriz:");
    scanf("%d", &c2);
    llenaMatriz(f2, c2, matriz2);
    multiplicacion(f, c, f2, c2, matriz, matriz2, matriz3);
    despliegaMatriz(f, c, matriz);
    despliegaMatriz(f2, c2, matriz2);
    despliegaMatriz(f, c2, matriz3);
    break;

case 2:
    printf("numero de filas:");
    scanf("%d", &f);
    printf("numero de columnas:");
    scanf("%d", &c);
    llenaMatriz(f, c, matriz);
    transpuesta(f, c, matriz);
    break;


    }

   } while(opc!=0);
    return 0;
}

void llenaMatriz(int n, int m, int matriz[MAX][MAX]){
int i, j;
    for (i=0; i<n; i++) {
        for(j=0; j<m; j++) {
            printf("Introduzca la posicion %d, %d: ", i+1, j+1);
            scanf("%d", &matriz[i][j]);
        }

    }
}

void despliegaMatriz(int n, int m, int matriz[MAX][MAX]){
int i, j;
    for(i=0; i<n; i++) {
        for (j=0; j<m; j++) {
            printf("%d\t", matriz[i][j]);
        }
        printf("\n");
    }
}

void multiplicacion(int fila, int col, int fila2, int col2, int A[MAX][MAX], int B[MAX][MAX], int C[MAX][MAX]) {
    int i, j, k;
if(col==fila2){
    for(i=0;i<fila;i++){
      for(j=0;j<col2;j++){
          C[i][j]=0;
          for(k=0;k<col;k++){
              C[i][j]=(C[i][j]+(A[i][k]*B[k][j]));
          }
      }
  }
}else{printf("no es posible la multiplicacion");}
}


void transpuesta(int n, int m, int matriz[MAX][MAX]){
int i, j;

    for (j=0; j<m; j++ ){
        for(i=0; i<n; i++) {
            printf("%d\t", matriz[i][j]);
        }
        printf("\n");
    }
}


leosansan

#1

Código (cpp) [Seleccionar]
void llenaMatriz(int n, int m, int matriz[n][m]

Y análogamente en las demás funciones.

Y lo que no puedes hacer en la traspuesta de repente cambiar las filas por las columnas sin más. Sólo si son cuadradas las matrices no petará el código.


¡¡¡¡ Saluditos! ..... !!!!



criser20

Cita de: leosansan en  3 Abril 2014, 20:04 PM

Código (cpp) [Seleccionar]
void llenaMatriz(int n, int m, int matriz[n][m]

Y análogamente en las demás funciones y declaraciones.

Y lo que no puedes hacer en la traspuesta de repente cambiar las filas por las columnas sin más. Sólo si son cuadradas las matrices no petará el código.


¡¡¡¡ Saluditos! ..... !!!!



me sigue dando el error si quieres correlo para ver si es tal vez mi pc o no se pero no me quiere continuar a la segunda fila de la matriz

leosansan

#3
Cita de: criser20 en  3 Abril 2014, 20:26 PM
me sigue dando el error si quieres correlo para ver si es tal vez mi pc o no se pero no me quiere continuar a la segunda fila de la matriz

He aquí una muestra de que a mi si me funciona:

Citar
Seleccione una accion.
1.Multiplicacion de matrices.
2.transpuesta de una matriz.
2
numero de filas:2
numero de columnas:2
Introduzca la posicion 1, 1: 1
Introduzca la posicion 1, 2: 2
Introduzca la posicion 2, 1: 3
Introduzca la posicion 2, 2: 4
1       3
2       4
Seleccione una accion.
1.Multiplicacion de matrices.
2.transpuesta de una matriz.


Recuerda que te comenté que el cambio que te indiqué en el primer mensaje debe afectar a las demás funciones. Por ejemplo también a:

Código (cpp) [Seleccionar]
void transpuesta(int n, int m, int matriz[n][m])

Código (cpp) [Seleccionar]
void despliegaMatriz(int n, int m, int matriz[n][m])

¡¡¡¡ Saluditos! ..... !!!!