Untitled
unknown
plain_text
9 months ago
4.7 kB
12
Indexable
#include <stdio.h>
#include <ctype.h>// Inclui a biblioteca para manipulação de caracteres, como a função toupper.
/// Função para converter uma coordenada no formato "letra+número" (ex.: "a1") em índices de linha e coluna.
/// @param coord: String contendo a coordenada no formato "letra+número".
/// @param linha: Ponteiro para armazenar o índice da linha correspondente.
/// @param coluna: Ponteiro para armazenar o índice da coluna correspondente.
/// @return: Retorna 0 se a conversão for bem-sucedida, ou 1 se a coordenada for inválida.
int coordenada_para_indices(char* coord, int* linha, int* coluna) {
// Verifica se o primeiro caractere da coordenada está entre 'a' e 'z'.
// Isso garante que a entrada seja uma letra válida para a coluna.
if (coord[0] < 'a' || coord[0] > 'z') return 1;
// Verifica se o segundo caractere da coordenada está entre '0' e '9'.
// Isso garante que a entrada seja um número válido para a linha.
if (coord[1] < '0' || coord[1] > '9') return 1;
// Converte a letra da coordenada em um índice numérico para a coluna.
// Exemplo: 'a' - 'a' = 0, 'b' - 'a' = 1, etc.
*coluna = coord[0] - 'a';
// Converte o número da coordenada em um índice numérico para a linha.
// Exemplo: '1' - '1' = 0, '2' - '1' = 1, etc.
*linha = coord[1] - '1';
// Retorna 0 para indicar que a conversão foi bem-sucedida.
return 0;
}
int main() {
char comando;
// Declara um array para armazenar argumentos (como coordenadas) fornecidos pelo usuário.
char argumento[100];
// Declara e inicializa um tabuleiro 5x5 com caracteres.
// Cada célula contém um caractere representando o estado inicial do tabuleiro.
char tabuleiro[5][5] = {
{'e', 'c', 'a', 'd', 'c'},
{'d', 'c', 'd', 'e', 'c'},
{'b', 'd', 'd', 'c', 'e'},
{'c', 'd', 'e', 'e', 'b'},
{'a', 'c', 'c', 'b', 'b'}
};
// Loop infinito para manter o programa em execução até ser encerrado manualmente.
while (1) {
// Inicializa a variável comando com o caractere nulo.
// Isso garante que a variável não contenha lixo de memória.
comando = '\0';
// Inicializa o primeiro caractere do array argumento com o caractere nulo.
// Isso garante que o array esteja vazio antes de ser usado.
argumento[0] = '\0';
// Declara variáveis para armazenar os índices de linha e coluna.
int linha;
int coluna;
// Exibe o estado atual do tabuleiro.
// O loop externo percorre as linhas do tabuleiro.
for (int i = 0; i < 5; i++) {
// O loop interno percorre as colunas do tabuleiro.
for (int j = 0; j < 5; j++) {
// Imprime o caractere na posição [i][j] do tabuleiro seguido de um espaço.
printf("%c ", tabuleiro[i][j]);
}
// Adiciona uma nova linha após imprimir uma linha do tabuleiro.
printf("\n");
}
// Lê um caractere do usuário e armazena em comando.
// O espaço antes de %c ignora espaços em branco na entrada.
if (scanf(" %c", &comando) != 1) return 1;
// Verifica se o comando digitado é 'b'.
if (comando == 'b') {
// Lê uma string do usuário e armazena em argumento.
// Isso captura a coordenada fornecida pelo usuário.
if (scanf(" %s", argumento) != 1) return 1;// Se a leitura falhar, encerra o programa retornando 1.
// Converte a coordenada fornecida em índices de linha e coluna.
coordenada_para_indices(argumento, &linha, &coluna);
// Converte o caractere na célula especificada para maiúsculo.
// Usa a função toupper para realizar a conversão.
tabuleiro[linha][coluna] = toupper(tabuleiro[linha][coluna]); //DUVIDA NO TOUPERS
}
//DUVIDA
// Verifica se o comando digitado é 'r'.
if (comando == 'r') {
// Lê uma string do usuário e armazena em argumento.
// Isso captura a coordenada fornecida pelo usuário.
if (scanf(" %s", argumento) != 1) return 1; // Se a leitura falhar, encerra o programa retornando 1.
// Converte a coordenada fornecida em índices de linha e coluna.
coordenada_para_indices(argumento, &linha, &coluna);
// Substitui o caractere na célula especificada por '#'.
tabuleiro[linha][coluna] = '#';
}
}
}Editor is loading...
Leave a Comment