1
resposta

[Dúvida] não sei se minha função de verificação esta correta, pode me ajudar?

int tabuleiro[TAMANHO_TABULEIRO][TAMANHO_TABULEIRO]; int tabuleiroExibido[TAMANHO_TABULEIRO][TAMANHO_TABULEIRO];

// Função para gerar números aleatórios de 0 a 9

int gerarNumeroAleatorio() { return rand() % 10; }

// Função para inicializar o tabuleiro com pares de números aleatórios

void inicializarTabuleiro() { int i, j, k; int contadorConjuntos[TOTAL_CONJUNTOS] = {0};

srand(time(NULL));

for (i = 0; i < TAMANHO_TABULEIRO; i++) {
    for (j = 0; j < TAMANHO_TABULEIRO; j++) {
        do {
            k = gerarNumeroAleatorio();
        } while (contadorConjuntos[k] >= 2);

        tabuleiro[i][j] = k;
        contadorConjuntos[k]++;
    }
}

}

// Função que verifica pares de números

void verificarTabuleiro() { int i, j, k; int numerosRepetidos[TOTAL_CONJUNTOS] = {0};

for (i = 0; i < TAMANHO_TABULEIRO; i++) {
    for (j = 0; j < TAMANHO_TABULEIRO; j++) {
        int elementoAtual = tabuleiro[i][j];
        numerosRepetidos[elementoAtual]++;
    }
}

int naoTemNumeroRepetido = 1;

for (k = 0; k < TOTAL_CONJUNTOS; k++) {
    if (numerosRepetidos[k] < 2) {
        naoTemNumeroRepetido = 0;
        break;
    }
}

if (naoTemNumeroRepetido == 0) {
    inicializarTabuleiro();
}

}

// Função para exibir o tabuleiro

void exibirTabuleiro() { int i, j;

printf("Tabuleiro:\n\n");

for (i = 0; i < TAMANHO_TABULEIRO; i++) {
    for (j = 0; j < TAMANHO_TABULEIRO; j++) {
        if (tabuleiroExibido[i][j]) {
            printf("[%d] ", tabuleiro[i][j]);
        } else {
            printf("[?] ");
        }
    }
    printf("\n");
}

}

Esse é meu codigo, os numeros gerados são de 0 a 9, e a tabela tem 16 elementos, além disso cada numero deve ter um par na matriz, então quando eu estiver gerando os numeros aleatorios e colocando nas casas pode haver uma casa que não tenha um numero para formar um par, sendo assim criei a função que verifica pares de numeros, mas não sei como testar de forma efetiva se ela funciona, alguem pode me dizer se esta correta um me esclarecer como testar isso?

1 resposta

A função que você escreveu parece estar correta para verificar se existem números repetidos suficientes para formar pares na matriz. No entanto, é difícil avaliar a eficácia dessa função sem ver o código completo e entender o contexto em que ela é usada. Uma maneira de testar essa função seria criar alguns cenários de teste em que você controla os valores do array numerosRepetidos manualmente e verifica se o comportamento da função está de acordo com o esperado. Por exemplo, você pode definir manualmente alguns valores para o array numerosRepetidos e verificar se a função está marcando corretamente quando não há números repetidos suficientes para formar pares. Aqui está um exemplo de teste:

#include <stdio.h>
#define TOTAL_CONJUNTOS 10
int main() {
    int numerosRepetidos[TOTAL_CONJUNTOS] = {0, 0, 1, 2, 2, 0, 1, 3, 2, 2};
    int naoTemNumeroRepetido = 1;
    int k;
    for (k = 0; k < TOTAL_CONJUNTOS; k++) {
        if (numerosRepetidos[k] < 2) {
            naoTemNumeroRepetido = 0;
            break;
        }
    }
    if (naoTemNumeroRepetido == 0) {
        printf("Não há números repetidos suficientes para formar pares.\n");
    } else {
        printf("Todos os pares estão presentes.\n");
    }
    return 0;
}

Nesse exemplo, o array numerosRepetidos é definido com alguns valores manualmente. Ao executar o código, ele imprimirá a mensagem apropriada, indicando se há ou não números repetidos suficientes para formar pares. Você pode criar outros cenários de teste semelhantes, alterando os valores do array numerosRepetidos para testar diferentes condições e verificar se a função está se comportando corretamente. Além disso, é importante lembrar que testes automatizados, como a utilização de estruturas como testes unitários, podem fornecer uma abordagem mais sistemática e escalável para testar essa função, especialmente se o código for mais complexo ou parte de um projeto maior.