Untitled

 avatar
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