Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Eva93 en 28 Agosto 2013, 19:24 pm



Título: Problema al compilar
Publicado por: Eva93 en 28 Agosto 2013, 19:24 pm
He estado trabajando en un programa que calcula el cubo de una matriz cúbica de dimension N. Pero al compilar no me sale la opción de dar la dimension y automaticamente siempre sale una matriz 3X3. aqui dejo el programa para ver el error, gracias de antemano ^.^

#include <stdio.h>
#include <stdlib.h>
#define DIM 100

void lee_Matriz (float A[DIM][DIM], int N);
void escribe_Matriz (float A[DIM][DIM], int N);
void producto_Matriz (float A[DIM][DIM], float B[DIM][DIM], float C[DIM][DIM], int N);

int main()
{
    float A[DIM][DIM], B[DIM][DIM], C[DIM][DIM];
    int N;

    printf("Dame la dimension de las matrices: ");
    scanf("%d", &N);
    printf("\nIntroduce la matriz: \n\n");
    lee_Matriz(A,N);
    system("pause");
    system("cls");
    printf("La primera fila es: \n\n");
    escribe_Matriz(A,N);
    printf("La segunda fila es: \n\n");
    escribe_Matriz(B,N);
    system("pause");
    system("cls");
    printf("El cubo de esa  fila es: \n\n");
    producto_Matriz(A,B,C,N);
    escribe_Matriz(C,N);

   return 0;
}

void lee_Matriz (float A[DIM][DIM], int N)
{
    int i, j;
    for(i=0;i<N;i++)
    for(j=0;j<N;j++)
    {
        printf("\nDame el elemento %d,%d de la matriz: ",i+1,j+1);
        scanf("%f",&A[j]);
    }
    return ;
}

 void escribe_Matriz (float A[DIM][DIM], int N)
 {
     int i, j;
     for(i=0;i<N;i++)
     {
         printf("(");
     for(j=0;j<N;j++)
     {
         printf(" %.2f ",A[j]);
     }
     printf(")\n");
     }
 }

 float producto_Matriz (float A[DIM][DIM], float B[DIM][DIM], float C[DIM][DIM], int N)
 {
     int i,j,l;
     for(i=0;i<N;i++)
     {
        for(j=0;j<N;j++)
         {
             C[j]=0;
            for(l=0;l<N;l++)
            {
               C[j]+=A[l]*B[l][j];
            }
         }
     }
     return;
 }


Título: Re: Problema al compilar
Publicado por: do-while en 28 Agosto 2013, 20:23 pm
¡Buenas!

Así, a botepronto, no veo nada raro. De todas formas edita el post y mete el codigo entre las etiquetas correspondientes GeSHi, el desplegable que tendrás arriba a la derecha en el modo de edición, al final de la primera fila de iconos.

¡Saludos!


Título: Re: Problema al compilar
Publicado por: Eva93 en 28 Agosto 2013, 20:52 pm
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define DIM 100
  4.  
  5. void lee_Matriz (float A[DIM][DIM], int N);
  6. void escribe_Matriz (float A[DIM][DIM], int N);
  7. void producto_Matriz (float A[DIM][DIM], float B[DIM][DIM], float C[DIM][DIM], int N);
  8.  
  9. int main()
  10. {
  11.    float A[DIM][DIM], B[DIM][DIM], C[DIM][DIM];
  12.    int N;
  13.  
  14.    printf("Dame la dimension de las matrices: ");
  15.    scanf("%d", &N);
  16.    printf("\nIntroduce la matriz: \n\n");
  17.    lee_Matriz(A,N);
  18.    system("pause");
  19.    system("cls");
  20.    printf("La primera fila es: \n\n");
  21.    escribe_Matriz(A,N);
  22.    printf("La segunda fila es: \n\n");
  23.    escribe_Matriz(B,N);
  24.    system("pause");
  25.    system("cls");
  26.    printf("El cubo de esa  fila es: \n\n");
  27.    producto_Matriz(A,B,C,N);
  28.    escribe_Matriz(C,N);
  29.  
  30.   return 0;
  31. }
  32.  
  33. void lee_Matriz (float A[DIM][DIM], int N)
  34. {
  35.    int i, j;
  36.    for(i=0;i<N;i++)
  37.    for(j=0;j<N;j++)
  38.    {
  39.        printf("\nDame el elemento %d,%d de la matriz: ",i+1,j+1);
  40.        scanf("%f",&A[j]);
  41.    }
  42.    return ;
  43. }
  44.  
  45. void escribe_Matriz (float A[DIM][DIM], int N)
  46. {
  47.     int i, j;
  48.     for(i=0;i<N;i++)
  49.     {
  50.         printf("(");
  51.     for(j=0;j<N;j++)
  52.     {
  53.         printf(" %.2f ",A[j]);
  54.     }
  55.     printf(")\n");
  56.     }
  57. }
  58.  
  59. float producto_Matriz (float A[DIM][DIM], float B[DIM][DIM], float C[DIM][DIM], int N)
  60. {
  61.     int i,j,l;
  62.     for(i=0;i<N;i++)
  63.     {
  64.        for(j=0;j<N;j++)
  65.         {
  66.             C[j]=0;
  67.            for(l=0;l<N;l++)
  68.            {
  69.               C[j]+=A[l]*B[l][j];
  70.            }
  71.         }
  72.     }
  73.     return;
  74. }
  75.  

Sigo teniendo problemas para compilar el programa


Título: Re: Problema al compilar
Publicado por: do-while en 28 Agosto 2013, 21:20 pm
Te faltan todos los subindices i

Si pones los errores que te da el compilador mucho mejor. Ahí te estará diciendo que falla.

Otra cosa que acabo de ver. Te falta devolver el valor de la función que hace el  producto. O quitas el devuelves un float o la declara con tipo de retorno void. De hecho en el prototipo dices que el valor de retorno es void y cuando implementas la función lo has puesto float. Creo que eso es todo...

¡Saludos!