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;
}