Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Criticall

C++ questao de uma matriz

Recommended Posts

Faça um programa que preencha uma matriz 3x3 e imprima a
soma de todos os elementos de sua diagonal principal. Utilize
estruturas de repetição.
- Ex. de saída:
2 4 6
3 5 1
9 7 8
Resultado: 15

adicionado 12 minutos depois

#include<stdio.h>

int main(){

int mat[3][3],i,j;

for(i=0; i<3; i++){
    for(j=0; j<3; j++){
        printf("Digite os valores da matriz");
        scanf("%d", &mat[j]);
    }
}
for(i=0; i<3; i++){
    for(j=0; j<3; j++){
    
    printf("%d", mat[j]);
}
printf("\n");
}

}

 

tenho esse codigo mas n sei como somar a diagonal

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)

Soma dos elementos na Diagonal Principal da Matriz

Dada uma matriz, a posição de um elemento da matriz A(mxn) é a correspondência dos índices (i, j) do elemento na matriz, de maneira bem resumida.

 

Exemplificando: 

         a11 a12 a13 | 2 4 6
         a21 a22 a23 | 3 5 1
         a31 a32 a33 | 9 7 8

 

Na teoria da álgebra linear a diagonal principal é composta pelos elementos que unem os valores do extremos: superior esquerdo e inferior direito. Assim temos:

D. Principal= { aij : i, j = (0, 0) até que i, j = (m, n) }  tais que i = j;

 

Ou seja a Diagonal Principal e o subconjunto de elementos da Matriz em que todos elementos tem índices (i, j) iguais;

         a11 a12 a13 | 2 4 6
         a21 a22 a23 | 3 5 1
         a31 a32 a33 | 9 7 8

 

****[ ! ]

Então com apenas um loop percorremos os índices gêmeos (i = j) da diagonal principal, a medita que somamos os valores do em seus elementos.

***************************************************

Dúvida, perguntas ou críticas?

 

ATUALIZADO:

soma_diagonal_principal_c.c

Spoiler

/* programa ANSI C ---calculadora da D. principal M3x3                    *
 * enconding: window-1252, compiler: gcc version 5.1.0 (tdm64-1)          *
 * editor: codelite 12.0.3 - 2018, file: soma_diagonal_principal_c.c      *
 * ver: 1.0.0                                                             */
 
#include <stdio.h>
int main(void)
{
  int matriz[3][3];
  int soma;
  
  soma = 0;  /* ---guarda o somatório da diagonal principal               */

/*  ENTRADA DE DADOS                                                      */ 
  printf("%s","*** Calculadora da D. Principal M3x3 ANSI C\n");
  printf("%s","Por favor informe de 3 em 3 valores inteiros?\n\n");
  for (int i = 0; i < 3; i += 1) {
  
    printf("%sa%d%d a%d%d a%d%d%s","[", i + 1, 1, i + 1, 2, i + 1, 3, "]: ");
    scanf(" %d%d%d", &matriz[i][0], &matriz[i][1], &matriz[i][2]);
  }
  
/* PROCESSAMENTO DE  DADOS                                                */
  for (int ij = 0; ij < 3; ij += 1) {
    
    soma += matriz[ij][ij];
  }
  
/* RESULTADO                                                              */
  printf("%s %d\n", "Soma:", soma);
  return 0;
}

 

 

Editado por AnsiC
code: adicionar main e exemplo.
  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

valeu depois eu pensei direito e consegui fazer XD

  • Haha 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
15 minutos atrás, Criticall disse:

valeu depois eu pensei direito e consegui fazer XD

Poderia postar como revolveu para que outros com mesma dúvida.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)
#include <stdio.h>

int main()
{
    int MAT[3][3], R;
    int i, j;
        
    for(i=0; i<3; i++){
        for(j=0; j<3; j++){
            printf("Digite um número\n");
            scanf("%d", &MAT[j]);
        }
    }
     for(i=0; i<3; i++){
        for(j=0; j<3; j++){
    R = MAT[0][0] + MAT[1][1] + MAT[2][2];
    ^  
    printf("A soma das diagonais dessa matriz é %d", R);
}
}
} 

 

Editado por Simon Viegas
Inserir tag CODE

Compartilhar este post


Link para o post
Compartilhar em outros sites

Foi bom ter pedido porque está muito errado.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)

Sobre:

51 minutos atrás, Criticall disse:

#include <stdio.h>

int main()
{
    int MAT[3][3], R;
    int i, j;
        
    for(i=0; i<3; i++){
        for(j=0; j<3; j++){
            printf("Digite um número\n");
            scanf("%d", &MAT[j]);
        }
    }
     for(i=0; i<3; i++){
        for(j=0; j<3; j++){
    R = MAT[0][0] + MAT[1][1] + MAT[2][2];
    ^  
    printf("A soma das diagonais dessa matriz é %d", R);
}
}
} 

 

- Você está efetuando a mesma soma 9 vezes;

- Está também exibindo a resposta 9 vezes;

 

Poderia fazer algo assim:

#include <stdio.h>

int main()  {
    int MAT[3][3], R=0;
    int i, j;
        
    for(i=0; i<3; i++) {
        for(j=0; j<3; j++) {
            printf("Digite um numero a%d%d\n",i,j);
            scanf("%d", &MAT[i][j]);
        }
    }
    R = MAT[0][0]+MAT[1][1]+MAT[2][2];
    printf("A soma das diagonais dessa matriz e %d",R);
} 

ou

    for(i=0; i<3; i++)
        R += MAT[i][i];        

 

 

Seria interessante imprimir a matriz na tela... dá uma representação visual da matriz...

Editado por Simon Viegas

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×