Junte todos os trechos de código solicitados nos exercícios a seguir em um código só, completo, conforme o que se pede.
Escreva a função main de um programa que utiliza a função anterior para determinar se uma matriz é um quadrado mágico. Na main, o programa deve:
  • Inicializar uma matriz diretamente no código, como abaixo:
    int matriz [3] [3] =8,0,7,4,5,6,3,10,2;
  • Chamar a função criada em a), considerando a matriz definida no item anterior.
  • Mostrar na tela uma mensagem dizendo se a matriz é um quadrado mágico ou não.

Passo 1

Beleza, o enunciado pede pra gente juntar tudo num programa só em C, usando uma função já feita (que verifica se uma matriz é quadrado mágico) e escrever a função main que:
  • Declara uma matriz 3×3 com valores fixos.
  • Chama essa função de verificação.
  • Imprime na tela se é ou não um quadrado mágico.
Conteúdo da matéria:
  • Declaração e inicialização de arrays bidimensionais em C.
  • Criação e chamada de funções.
  • Uso de loops (for) pra percorrer matrizes.
  • Condicionais (if/else) e saída na tela (printf).
O que vamos precisar:
  1. O código da função que verifica quadrado mágico (parte a).
  2. A função main que cria a matriz, chama essa função e imprime o resultado.

Passo 2

Antes da main, precisamos recapitular como funciona a função que diz se uma matriz de tamanho n é quadrado mágico. A ideia geral:
  1. Calcular a soma da primeira linha, que vai ser nossa “soma-alvo”: S = sumj=0^n-1 matriz[0][j]
    2. Verificar para cada linha sumj=0^n-1 matriz[i][j] = S:
    sumi=0^n-1 matriz[i][j] = S
  2. Verificar para cada coluna sumi=0^n-1 matriz[i][i] = S: sumi=0^n-1 matriz[i][n-1-i] = S
    4. Verificar as duas diagonais:

    Se tudo casar, devolve 1 (verdadeiro); senão, 0 (falso).

Passo 3

Vamos traduzir isso em código C. Como estamos usando tamanho fixo (3×3), podemos declarar a função assim:
#include <stdio.h>

int ehQuadradoMagico(int matriz[][3], int n) {
    int i, j;
    int somaAlvo = 0;
    // 1) soma da primeira linha
    for (j = 0; j < n; j++) {
        somaAlvo += matriz[0][j];
    }
    // 2) verificar cada linha
    for (i = 1; i < n; i++) {
        int somaLinha = 0;
        for (j = 0; j < n; j++) {
            somaLinha += matriz[i][j];
        }
        if (somaLinha != somaAlvo) return 0;
    }
    // 3) verificar cada coluna
    for (j = 0; j < n; j++) {
        int somaColuna = 0;
        for (i = 0; i < n; i++) {
            somaColuna += matriz[i][j];
        }
        if (somaColuna != somaAlvo) return 0;
    }
    // 4) diagonais
    int somaDiag1 = 0, somaDiag2 = 0;
    for (i = 0; i < n; i++) {
        somaDiag1 += matriz[i][i];
        somaDiag2 += matriz[i][n-1-i];
    }
    if (somaDiag1 != somaAlvo || somaDiag2 != somaAlvo) return 0;

    // se passou em tudo
    return 1;
}

Passo 4

Agora, a função main que o enunciado pede:
  1. Inicializa int matriz[3][3] = {{8,0,7}, {4,5,6}, {3,10,2}};
  2. Chama ehQuadradoMagico(matriz, 3)
  3. Mostra na tela “É quadrado mágico!” ou “Não é quadrado mágico!”

Resposta

#include <stdio.h>

// Função que verifica se uma matriz n×n é quadrado mágico
int ehQuadradoMagico(int matriz[][3], int n) {
    int i, j;
    int somaAlvo = 0;
    // 1) soma da primeira linha
    for (j = 0; j < n; j++) {
        somaAlvo += matriz[0][j];
    }
    // 2) verificar cada linha
    for (i = 1; i < n; i++) {
        int somaLinha = 0;
        for (j = 0; j < n; j++) {
            somaLinha += matriz[i][j];
        }
        if (somaLinha != somaAlvo) return 0;
    }
    // 3) verificar cada coluna
    for (j = 0; j < n; j++) {
        int somaColuna = 0;
        for (i = 0; i < n; i++) {
            somaColuna += matriz[i][j];
        }
        if (somaColuna != somaAlvo) return 0;
    }
    // 4) diagonais
    int somaDiag1 = 0, somaDiag2 = 0;
    for (i = 0; i < n; i++) {
        somaDiag1 += matriz[i][i];
        somaDiag2 += matriz[i][n-1-i];
    }
    if (somaDiag1 != somaAlvo || somaDiag2 != somaAlvo) return 0;

    return 1;
}

int main() {
    // Inicializa a matriz do enunciado
    int matriz[3][3] = {
        {8,  0,  7},
        {4,  5,  6},
        {3, 10,  2}
    };

    // Chama a função que verifica quadrado mágico
    if (ehQuadradoMagico(matriz, 3)) {
        printf("É quadrado mágico!\n");
    } else {
        printf("Não é quadrado mágico!\n");
    }

    return 0;
}

Exercícios relacionados