O Sistersinspirit.ca é a melhor solução para quem busca respostas rápidas e precisas para suas perguntas. Descubra soluções abrangentes para suas perguntas de profissionais experientes em diversas áreas em nossa plataforma. Explore milhares de perguntas e respostas de uma comunidade de especialistas em nossa plataforma amigável.

Faça um programa que leia uma matriz de tamanho 5 × 5. Calcule e imprima a soma dos elementos dessa matriz que não pertencem à diagonal principal nem à diagonal secundária.

Sagot :

Resposta:

int main(int argc, const char * argv[]) {

   int m [5] [5], i , j, soma = 0;

   for (i = 0; i < 5; i++) {

       for (j = 0; j < 5; j++) {

           m [j] [i] = i + j;// aqui eu improvisei a atribuição para nao dwdggigitar//

       }

   }

   for (i = 0; i < 5; i++) {

       for (j = 0; j < 5; j++) {

           if (j != i && 4 - i != j ){

               printf ("%d ", m [i] [j]);

               soma += m [i] [j];

           }else{

               printf("0 ");

           }

       }

       printf("\n");//ele irá pular de linha sempre que uma nova linha começar

   }

   printf("A SOMA DOS NÚMEROS DIGITADOS É %d\n", soma);

   return 0;

Explicação:

SE i (linha) FOR IGUAL A j (coluna) ESSE VALOR ESTARÁ NA DIAGONAL PRINCIPAL, PORTANTO PARA NÃO DIGITAR ESSE VALOR, NÓS VAMOS MOSTRAR SOMENTE OS DIFERENTES, POR ISSO j != i (j deve ser diferente de i).

//* O 4 REPRESENTA A ÚLTIMA COLUNA DA MATRIZ ((5-1)0,1,2,3,4 = 5), SE VOCE SUBTRAIR O VALOR DA ULTIMA LINHA DA COLUNA (no caso 4) POR i (Linha, que pode ser 0,1,2,3,4) VOCE VAI TER UMA QUEDA GRADUAL DE UMA CASA DA ÚLTIMA COLUNA DA PRIMEIRA LINHA ATÉ A PRIMEIRA COLUNA DA ULTIMA LINHA.

SE J (coluna) FOR DIFIRENTE DE 4 - i ELE IRÁ PRINTAR NORMALMENTE. COLOQUEI O ELSE PARA ELE PRINTAR 0 QUANDO O IF NAO for acionado pra dar uma ideia gráfica de como funciona. É muito complicado de explicar porque eu não domino esse pensamento direito.