Matriz cuarta

Iniciado por Eva93, 29 Agosto 2013, 13:36 PM

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

Eva93

Código (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
#define DIM 100

using namespace std ;

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);
void Matriz_cuarta (float C[DIM][DIM], float D[DIM][DIM],int N);

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

printf("Dame la dimension de las matrices: ");
scanf("%d", &N);
printf("\nIntroduce la 1a matriz: \n\n");
lee_Matriz(A,N);
system("pause");
system("cls");

printf("La primera matriz es: \n\n");
escribe_Matriz(A,N);



printf("El cuadrado de esa matrices es: \n\n");
producto_Matriz(A,A,C,N);
escribe_Matriz(C,N);

printf("La cuarta potencia de esa matrices es: \n\n");
Matriz_cuarta(A,D,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[i][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[i][j]);
}
printf(")\n");
}
}

void 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[i][j]=0;
for(l=0;l<N;l++)
{
C[i][j]+=A[i][l]*B[l][j];
}
}
}
return;
}

void Matriz_cuarta(float C[DIM][DIM], float D [DIM][DIM],int N)

{
int i,j,l;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{

D[i][j]=0;
for(l=0;l<N;l++)
{
D[i][j]+=C[i][l]*C[l][j];
}
}
}
return;
}



Solo tengo un pequeño problema sobre este programa, a la hora de mostrar en pantalla la matriz a la cuarta, me vuelve a salir la matriz al cuadrado.

Supongo que es un fallo en la función pero por muchos cambios que haga tengo el mismo problema.

¿ cual es mi error ? gracias de antemano

eferion

#1
printf("El cuadrado de esa matrices es: \n\n");
producto_Matriz(A,A,C,N);
escribe_Matriz(C,N);

printf("La cuarta potencia de esa matrices es: \n\n");
Matriz_cuarta(A,D,N);
escribe_Matriz(C,N);


A ver, analizando tu programa, el código de arriba hace lo siguiente:

* para el producto: C = A * A
* para la cuarta: D = A * A

Si te das cuenta, en la cuarta estas haciendo D = A * A y luego estas imprimiendo C... Cosas del copypaste... Mas bien creo que lo que deberías hacer es D = C * C.

En cualquier caso la función que calcula la cuarta es un poco absurda porque es un calco de la función de producto, la única diferencia es que solo usa una matriz en vez de dos. Si quieres que la función cuarta calcule la cuarta potencia ella sola deberías replante arte el algoritmo.

Eva93

Muchas gracias, al fijarme en mis errores y probar mas programitas ya me van saliendo programas sobre matrices