Ir ao conteúdo

Posts recomendados

Postado

<code>

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

void ler_matriz(int ordem){
    int i, j;
    int matriz[ordem][ordem];
        for(i = 0; i < ordem; i++){
            for(j = 0; j < ordem; j++){
                printf("Digite os valores da %i(a) Linha: ", i+1);
                scanf("%i", &matriz[j]);
        }
    }
}

void imprimir_matriz(int ordem){
    int i, j;
    int matriz[ordem][ordem];
    printf("\n");
    printf("A matriz montada eh: ");
    printf("\n");
    for(i = 0; i < ordem; i++){
        for(j = 0; j < ordem; j++){
            printf("%i ", matriz[j]);
        }
        printf("\n");
    }
}

void determinante_matriz(int ordem){
    int matriz[ordem][ordem];
    int detord1 = 0, detord2 = 0, detord3 = 0;
    if(ordem == 1){
        detord1 = matriz[0][0];
        printf("\n\tO determinante da matriz %ix%i eh: %i", ordem, ordem, detord1);
    }
    if(ordem == 2){
        detord2 = (matriz[0][0]*matriz[1][1]) - (matriz[0][1]*matriz[1][0]);
        printf("\n\tO determinante da matriz %ix%i eh: %i", ordem, ordem, detord2);
    }
    if(ordem == 3){
        detord3 = (matriz[0][0]*matriz[1][1]*matriz[2][2]) + (matriz[0][1]*matriz[1][2]*matriz[2][0]) + (matriz[0][2]*matriz[1][0]*matriz[2][1])
          - ((matriz[0][1]*matriz[1][0]*matriz[2][2]) + (matriz[0][0]*matriz[1][2]*matriz[2][1]) + (matriz[0][2]*matriz[1][1]*matriz[2][0]));
          printf("\n\tO determinante da matriz %ix%i eh: %i", ordem, ordem, detord3);
    }
}

int main(){
    int ordem;
    printf("O programa recebe a ordem de uma matriz, seus valores, imprime a matriz e calcula seu determinante: ");
    printf("\nDigite a ordem da matriz: ");
    scanf("%i", &ordem);
    int matriz[ordem][ordem];
    ler_matriz(ordem);
    imprimir_matriz(ordem);
    determinante_matriz(ordem);
    return 0;
}

alguém poderia me dizer o porquê do meu determinante estar dando zero?

  • Curtir 1
  • Obrigado 1
Postado

@Madson Smitt       mas qual valor deveria dar ? ,  pesquisei sobre determinante mas não encontrei nada que esclarecesse ,  então o que seria essa determinante ?  mas vi um erro na função ler_matriz ,  que nela você criou uma matriz , local , com o mesmo nome , mas essa nova matriz criada não é a mesma que foi criada anteriormente , e você insere valores nela , mas quando volta para a main ou outra função ela perde todos os valores inseridos nela e  a matriz original  estará vazia , pois nessa não foi colocado nenhum valor , então para isso você precisa enviar também a matriz por parâmetro para a função .

  • Curtir 1
Postado

@devair1010

22 minutos atrás, devair1010 disse:

@Madson Smitt       mas qual valor deveria dar ? ,  pesquisei sobre determinante mas não encontrei nada que esclarecesse ,  então o que seria essa determinante ?  mas vi um erro na função ler_matriz ,  que nela você criou uma matriz , local , com o mesmo nome , mas essa nova matriz criada não é a mesma que foi criada anteriormente , e você insere valores nela , mas quando volta para a main ou outra função ela perde todos os valores inseridos nela e  a matriz original  estará vazia , pois nessa não foi colocado nenhum valor , então para isso você precisa enviar também a matriz por parâmetro para a função .

Tipo, se ela for uma matriz 2x2 e o usuario digita na 1 2 3 4 para os valores dela, ficaria (matriz[0][0]*matriz[1][1]) - (matriz[0][1]*matriz[1][0]) ou seja 1*4 - 3*2, que daria -2... e como eu faria para passar esse valores de ler_matriz para determinante_matriz?

  • Curtir 2
Postado

@Madson Smitt    seu código poderia ser assim  :

#include <stdlib.h>
#include <stdio.h>
int i,j;
void ler_matriz(int ordem, int mesma[][ordem]){
    for(i = 0; i < ordem; i++)
        for(j = 0; j < ordem; j++){
            printf("Digite os valores da %i%c Linha e %d%c Coluna : ",
                    i+1,166,j+1,166);
            scanf("%i",&mesma[i][j]);
        }
}
void imprimir_matriz(int ordem, int matriz[][ordem]){
    printf("\nA matriz montada eh: \n");
    for(i = 0; i < ordem; i++){
        for(j = 0; j < ordem; j++)
            printf("%i ", matriz[i][j]);
        printf("\n");
    }
}
void determinante_matriz(int ordem, int matriz[][ordem]){
    int detord = matriz[0][0];
    if(ordem == 2)
        detord = (matriz[0][0]*matriz[1][1]) - (matriz[0][1]*matriz[1][0]);
    else
    if(ordem == 3)
        detord = (matriz[0][0]*matriz[1][1]*matriz[2][2]) +
                 (matriz[0][1]*matriz[1][2]*matriz[2][0]) +
                 (matriz[0][2]*matriz[1][0]*matriz[2][1]) -
                 ((matriz[0][1]*matriz[1][0]*matriz[2][2])+
                 (matriz[0][0]*matriz[1][2]*matriz[2][1]) +
                 (matriz[0][2]*matriz[1][1]*matriz[2][0]));
    printf("\n\tO determinante da matriz %ix%i eh: %i", ordem, ordem, detord);
}
int main(){
    int ordem;
    printf("O programa recebe a ordem de uma matriz, seus valores,\n");
    printf("imprime a matriz e calcula seu determinante:\n");
    printf("Digite a ordem da matriz : ");
    scanf("%i",&ordem);
    int matriz[ordem][ordem];
    ler_matriz(ordem,matriz);
    imprimir_matriz(ordem,matriz);
    determinante_matriz(ordem,matriz);
    return 0;
}

mas mesmo assim o valor da determinante que é mostrado é zero mesmo .

  • Curtir 1
Postado

@devair1010

1 hora atrás, devair1010 disse:

@Madson Smitt    seu código poderia ser assim  :


#include <stdlib.h>
#include <stdio.h>
int i,j;
void ler_matriz(int ordem, int mesma[][ordem]){/* ordem estava aqui */
    /*int matriz[ordem][ordem];*/
    for(i = 0; i < ordem; i++){
        for(j = 0; j < ordem; j++){
            printf("Digite os valores da %i%c Linha e %d%c Coluna : ",i+1,167,j+1,167);
            scanf("%i",&mesma[i][j]);
        }
    }
}
void imprimir_matriz(int ordem, int matriz[][ordem]){
    /*int matriz[ordem][ordem];*/
    printf("\n");
    printf("A matriz montada eh: ");
    printf("\n");
    for(i = 0; i < ordem; i++){
        for(j = 0; j < ordem; j++){
            printf("%i ", matriz[i][j]);
        }
        printf("\n");
    }
}

void determinante_matriz(int ordem, int matriz[][ordem]){
    /*int matriz[ordem][ordem];*/
    int detord1 = 0, detord2 = 0, detord3 = 0;
    if(ordem == 1){
        detord1 = matriz[0][0];
        printf("\n\tO determinante da matriz %ix%i eh: %i", ordem, ordem, detord1);
    }
    else
    if(ordem == 2){
        detord2 = (matriz[0][0]*matriz[1][1]) - (matriz[0][1]*matriz[1][0]);
        printf("\n\tO determinante da matriz %ix%i eh: %i", ordem, ordem, detord2);
    }
    else
    if(ordem == 3){
        detord3 = (matriz[0][0]*matriz[1][1]*matriz[2][2]) + (matriz[0][1]*matriz[1][2]*matriz[2][0]) + (matriz[0][2]*matriz[1][0]*matriz[2][1])
          - ((matriz[0][1]*matriz[1][0]*matriz[2][2]) + (matriz[0][0]*matriz[1][2]*matriz[2][1]) + (matriz[0][2]*matriz[1][1]*matriz[2][0]));
          printf("\n\tO determinante da matriz %ix%i eh: %i", ordem, ordem, detord3);
    }
}

int main(){
    int ordem;
    printf("O programa recebe a ordem de uma matriz, seus valores,\nimprime a matriz e calcula seu determinante: ");
    printf("\nDigite a ordem da matriz: ");
    scanf("%i",&ordem);
    int matriz[ordem][ordem];
    ler_matriz(ordem,matriz);/* ordem estava aqui */

    imprimir_matriz(ordem,matriz);/* ordem estava aqui */
    determinante_matriz(ordem,matriz);/* ordem estava aqui */
    return 0;
}

mas mesmo assim o valor da determinante que é mostrado é zero mesmo .

continua dando erro de undeclared...

  • Curtir 1
Postado

@devair1010

4 minutos atrás, devair1010 disse:

@Madson Smitt   o que undeclared ?  aqui no code blocks está funcionando normal .

1809090094_matrizcodeblocks.JPG.5b8773b788b4519c4c6b24aedc815462.JPG

consegui entender. apliquei aqui.. tentei revisar tudo mas o determinante 3x3 continua sendo zero. na 2x2 ela funciona normalmente... o que será q pode ser?

adicionado 24 minutos depois

@devair1010 Consegui resolver aqui. Vlwwww

  • Curtir 1
Postado

@devair1010 Tipo, são questões sobre matriz. E, uma delas, é criar uma função que faça o determinante de uma matriz...

Daí para acha-lo é só multiplicar as diagonais principais com as diagonais secundarias e vai resultar em um valor. Esse valor pode-se saber diversas propriedades da matriz...

adicionado 3 minutos depois

@devair1010 e sabe dizer porque nessa situação da undeclared? 

<code>

#include <stdlib.h>
#include <stdio.h>
void ler_matriz(int ordem, int matriz[][ordem]){
    int i, j;
    for(i = 0; i < ordem; i++){
        for(j = 0; j < ordem; j++){
            printf("Digite os valores da %i(a) Linha: ", i+1);
            scanf("%i", &matriz[j]);
        }
    }
}

int main(){
    int ordem;
    printf("O programa recebe a ordem de uma matriz, seus valores,\n");
    printf("imprime a matriz e calcula seu determinante:\n");
    printf("Digite a ordem da matriz: ");
    scanf("%i",&ordem);
    
    int matriz[ordem][ordem];
    
    ler_matriz(ordem,matriz);
    
    return 0;
}

  • Obrigado 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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!