Ir ao conteúdo
  • Cadastre-se

C ATRIBUIÇAO DE VALOR EM MATRIZ de acordo com a soma dos indices


hfagif19

Posts recomendados

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
Link para o comentário
Compartilhar em outros sites

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
Link para o comentário
Compartilhar em outros sites

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!