Ir ao conteúdo
  • Cadastre-se

Matriz com ponteiros 2


rs40

Posts recomendados

Implementar uma função que retorne o produto dos elementos da diagonal principal de uma matriz quadrada de núumeros de ponto flutuante (float). A função recebe como parâmetros a matriz de números de ponto flutuante, usando a representação de matrizes através de vetores simples, e um número inteiro n, indicando a dimensão da matriz. Essa função deve obedecer o protótipo:

float produto_diagonal_princial (float* mat, int n);

Fiz o código mas o mesmo esta com erro dizendo que as variáveis não podem ser float.

Segue o código abaixo:


#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

float produto_diagonal (float* mat, int n); /*protótipo da função*/

float produto_diagonal (float* mat, int n)
{

float produto_diagonal_principal = 1; //inicializa o produto da diagonal principal com 1
float i,j;

//processar matriz
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
{
printf("Digite os valores da matriz: ");
scanf("%f", &mat[i][j]);

if(i==j)
produto_diagonal_principal = produto_diagonal_principal * mat[i][j];

}
}
//monta a matriz
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
{
printf("%d", mat[i][j]);
}
printf("\n");
}

}

main()
{

float i,j;
float *mat;

printf("\nDigite o tamanho da matriz: ");
scanf("%f",&n);

mat = (float *) malloc((i) * (sizeof(float *)));

for(i = 0; i < n; i++)

mat[i] = (float *) malloc(j * (sizeof(float)));

for(i = 0; i < linhas; i++)

free(matriz[i]);

free(matriz);

printf("\n\nO produto dos elementos da diagonal principal da matriz é: %f ",produto_diagonal_principal);

getch();

}

Agradeço quem puder me ajudar

Link para o comentário
Compartilhar em outros sites

O erro que ocorre, é por causa da multiplicação, onde 'n' precisa ser um 'int'.

Use o tipo 'float' apenas para a matriz.

Segue código corrigido:


#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

float produto_diagonal( float **, int ); /*protótipo da função*/

int main(void)
{

int i = 0;
int j = 0;
float **mat; /** Um ponteiro para x e outro para y **/
int n = 0;

printf( "\nDigite o tamanho da matriz: " );
scanf( "%d", &n );

mat = malloc( sizeof(float *) * n );

for( i = 0; i < n; i++ )
mat[i] = malloc( sizeof(float) * n );

printf( "\n\nO produto dos elementos da diagonal principal da matriz é: %f ", produto_diagonal(mat, n) );

/** Liberar memoria apenas depois de usar a matriz **/
for( i = 0; i < n; i++ )
free( mat[i] );

free( mat );

return 0;
}

float produto_diagonal( float **mat, int n )
{

float produto_diagonal_principal = 1; //inicializa o produto da diagonal principal com 1
int i, j;

//processar matriz
for( i = 0; i < n; i++ )
{
for( j = 0; j < n; j++ )
{
printf( "Digite os valores da matriz: " );
scanf( "%f", &mat[i][j] );

if( i == j )
produto_diagonal_principal = produto_diagonal_principal * mat[i][j];

}
}
//monta a matriz
for( i = 0; i < n; i++ )
{
for( j = 0; j < n; j++ )
{
printf( "%f", mat[i][j] );
}
printf( "\n" );
}

return 0; /** Informar qual valor sera retornado **/
}

PS: Lembro que você deve informar qual valor será retornado na função 'produto_diagonal()'.

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!