PiR2
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Matrizes e vetores em Dev C++ (Programação)

2 participantes

Ir para baixo

Matrizes e vetores em Dev C++ (Programação) Empty Matrizes e vetores em Dev C++ (Programação)

Mensagem por Giovana Martins Dom 27 maio 2018, 21:42

Dizemos que uma matriz quadrada inteira é um quadrado mágico se a soma dos elementos de cada linha, a soma dos elementos de cada coluna e a soma dos elementos das diagonais principal e secundária são todas iguais.

Exemplo de um quadrado mágico:

Matrizes e vetores em Dev C++ (Programação) Codec506

Dada uma matriz quadrada Anxn, verificar se A é um quadrado mágico.

Tem um tempinho que tento fazer este exercício, mas empaquei no meio do código que eu tinha esboçado.

Nota: se possível usem a linguagem que trabalha com a sintaxe (não sei se esta é a melhor palavra) que usa "cin", "cout" ao invés de "printf" etc.

____________________________________________
Forefathers, one and all… Bear witness!
Giovana Martins
Giovana Martins
Grande Mestre
Grande Mestre

Mensagens : 7513
Data de inscrição : 15/05/2015
Idade : 23
Localização : São Paulo

Ir para o topo Ir para baixo

Matrizes e vetores em Dev C++ (Programação) Empty Re: Matrizes e vetores em Dev C++ (Programação)

Mensagem por PedroX Dom 27 maio 2018, 22:04

Código:
bool magico=true;

int somas_linhas[n];
int somas_colunas[n];
int soma_principal=0;
int soma_secundaria=0;

for(int k=0; k<n; k++){
    somas_linhas[k] = 0;
    somas_colunas[k] = 0;
}

for(int i=0; i<n; i++){
    for(int j=0; j<n; j++){
        somas_linhas[i] += matriz[i][j];    // adiciona o valor da "célula" na soma para essa linha
        somas_colunas[j] += matriz[i][j]; // adiciona o valor da "célula" na soma para essa coluna

        if (i==j) //diagonal principal
             soma_principal += matriz[i][j];
        else
        if (i == n - j - 1) // diagonal secundária
             soma_secundaria += matriz[i][j];
     }
}

if (soma_principal != soma_secundaria)
     magico = false;
else // loop for só se necessário (basta que soma_principal não seja igual à soma_secundaria para magico=false)
for(int k=0; k<n; k++){
     if (somas_linhas[k] != soma_principal || somas_colunas[k]!= soma_principal){
          magico = false;
          break; // não precisa verificar o restante uma vez que magico=false
     }
}

No final dessas linhas você terá magico=true ou magico=false.
Está suposto que você já tem uma matriz chamada matriz e uma variável n com o número de linhas ou colunas da matriz.

Você pode facilmente adaptar o código para ser uma função booleana, colocando um return magico; no final.
PedroX
PedroX
Administração
Administração

Mensagens : 1040
Data de inscrição : 24/08/2011
Idade : 28
Localização : Campinas - SP

Ir para o topo Ir para baixo

Matrizes e vetores em Dev C++ (Programação) Empty Re: Matrizes e vetores em Dev C++ (Programação)

Mensagem por Giovana Martins Seg 28 maio 2018, 10:00

Muito obrigada.

____________________________________________
Forefathers, one and all… Bear witness!
Giovana Martins
Giovana Martins
Grande Mestre
Grande Mestre

Mensagens : 7513
Data de inscrição : 15/05/2015
Idade : 23
Localização : São Paulo

Ir para o topo Ir para baixo

Matrizes e vetores em Dev C++ (Programação) Empty Re: Matrizes e vetores em Dev C++ (Programação)

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos