comando verifica

 avatar
unknown
plain_text
3 days ago
2.2 kB
2
Indexable
bool verificar(char cmd, char *arg, ESTADO *e) {
    if (cmd != 'v' || arg != NULL) return false;

    bool valido = true;
    int total_violacoes = 0;

    // Verificar linhas
    for (int i = 0; i < e->linhas; i++) {
        for (int j = 0; j < e->colunas; j++) {
            char celula = e->tabuleiro[i][j];
            if (isSupper(celula)) {  // Se é branca
                char minuscula = toLower(celula); 

                // verifica na LINHA
                for (int k = j + 1; k < e->colunas; k++) {
                    if (e->tabuleiro[i][k] == celula) {
                        printf("Atenção: Símbolo '%c' tem múltiplas brancas na linha %d\n", celula, i+1);
                        valido = false;
                        total_violacoes++;
                    }
                   
                    if (k != j && toLower(e->tabuleiro[i][k]) == minuscula && e->tabuleiro[i][k] != '#') { // k!=j garante que não compara com a pŕopria célula
                        printf("Atenção: Réplica '%c' não riscada na linha %d, coluna %c\n", minuscula, i+1, 'a'+k);
                        valido = false;
                        total_violacoes++;
                    }
                }

                // verifica na COLUNA
                for (int k = i + 1; k < e->linhas; k++) {
                    if (e->tabuleiro[k][j] == celula) {
                        printf("Atenção: Símbolo '%c' tem múltiplas brancas na coluna %c\n", celula, 'a'+j);
                        valido = false;
                        total_violacoes++;
                    }
                     
                    if (k != i && toLower(e->tabuleiro[k][j]) == minuscula && e->tabuleiro[k][j] != '#') {
                        printf("Atenção: Réplica '%c' não riscada na linha %d, coluna %c\n", minuscula, k+1, 'a'+j);
                        valido = false;
                        total_violacoes++;
                    }
                }
            }
        }
    }

    if (valido) printf("Tabuleiro válido! Nenhuma restrição violada.\n");
    else printf("Total de violações encontradas: %d\n", total_violacoes);

    return true;
}
Editor is loading...
Leave a Comment