Untitled
unknown
plain_text
18 days ago
4.7 kB
3
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