Ir ao conteúdo

Posts recomendados

Postado

Elabore uma algoritmo que solicite ao usuário a ordem (tamanho) para uma matriz quadrada. Preencha a matriz da seguinte forma:

  • se a soma dos índices da matriz for um valor par ou nulo, atribua o valor 2 para a matriz.
  • se a soma dos índices da matriz for um valor ímpar, atribua o valor -2 para a matriz.
  • para cada elemento da matriz, some o valor 5 para os valores que estão em uma posição em que a soma dos índices for um número múltiplo de 3.

Seu algoritmo deve somar os valores positivos da matriz e mostrar a soma desses valores. Seu algoritmo deve mostrar apenas o valor da soma dos itens.

Exemplo para uma matriz de ordem 3 

7  -2  2

-2  2  3

2   3   2

Soma: 21

 

Eu cheguei nisto, mas quando o for vai fazer a atribuição de valor para um indice cuja soma seja um multiplo de 3, quando o valor daquela posipção é positivo (2), ta tudo certo, mas quando é negativo (-2) pela soma do indice ser impar, ele gera o valor 8, até agora não consegui achar onde ta sendo o problema, poderiam me ajudar?

 

 

<CODE>

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

int main(){
    int i, j, n=1, mat[n][n], soma=0;
    printf("ordem de grandeza:");
    scanf("%i", &n);

    for(i=0; i<n; i++){         // geração da matriz com a soma dos indices OK
        for(j=0; j<n; j++){
            mat[i][j]= i+j;
        }
    }

    for(i=0; i<n; i++){         // atribuição valor de impar e par   OK
        for(j=0; j<n; j++){
            if ((i+j==0)||((i+j)%2==0)){
                mat[i][j]= 2;
            }else{
                mat[i][j]= -2;
            }
        }
    }

    for(i=0; i<n; i++){         // atribuição valor de multiplo de 3     ERRO COM OS NUMEROS -2 DO VETOR
        for(j=0; j<n; j++){
            if ((i+j)%3==0){
                mat[i][j]= mat[i][j]+5;
            }
        }
    }

    for(i=0; i<n; i++){         // soma    OK
        for(j=0; j<n; j++){
            if(mat[i][j]>0){
            soma= soma+ mat[i][j];
            }
        }
    }

    for(i=0; i<n; i++){         // printf da matriz     OK  PROVISÓRIO!!
        for(j=0; j<n; j++){
           printf("%i \t ", mat[i][j]);
        }
        printf("\n ");
    }

    printf("\n ");
    printf("%i", soma);

    return 0;
}
 

  • Obrigado 1
Postado

Acho que isso resolve teu problema:

 

#include <stdio.h>

int main(){
    int somapositivos, i, j, mat[100][100], n;
    printf("Digite a ordem da Matriz: ");
    scanf("%d", &n);
    
    for(i = 0; i < n; i++){
        for(j = 0; j < n; j++){
            mat[i][j] = ((i + j) % 2 == 0) ? 2 : -2; //Aqui atribui o valor.

            if((i + j) % 3 == 0){
                mat[i][j] += 5; //Aqui soma 5 caso seja múltiplo de 3.
            }

            if(mat[i][j] > 0){
                somapositivos += mat[i][j]; //Aqui soma se for positivo.
            }
        }
    }

    printf("Soma: %d.", somapositivos);
    return 0;
}

 

  • Curtir 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...