comando verifica
unknown
plain_text
6 months ago
2.2 kB
5
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