Faça um programa na linguagem C que leia uma palavra e, se ela for lida de trás para frente, como diz a personagem Woo Young Woo, o programa deve escrever: baleia. Senão, a saída deve ser dorama.
Ex:
Entrada: Saída:
catraca baleia
cômoda dorama
comico baleia
Para facilitar o seu desenvolvimento, você pode considerar que todos os inputs serão sem acentos. Você pode ler a quantidade de sílabas de cada palavra a ser analisada (TAM). Em seguida, ler cada sílaba separadamente (como TAM inputs).
Ex:
Informe a quantidade de sílabas a serem lidas:
TAM = 3
Sílaba 1: Woo
Sílaba 2: Young
Sílaba 3: Woo
Saída: baleia

Passo 1

Beleza, vamos começar resumindo o que a questão pede! Temos que criar um programa em linguagem C que lê uma palavra e verifica se, ao lê-la de trás para frente, ela corresponde a uma condição específica: se for igual à forma invertida, o programa deve imprimir “baleia”. Caso contrário, deve imprimir “dorama”.
Para resolver isso, vamos precisar entender alguns conceitos básicos de programação em C, como leitura de entrada, manipulação de strings e lógica condicional. Também vamos precisar saber como inverter uma string.

Passo 2

Primeiro, precisamos ler a quantidade de sílabas que a palavra tem. Isso vai nos ajudar a saber quantas vezes vamos precisar ler uma sílaba da palavra. Vamos usar uma variável chamada TAM para armazenar esse valor.
int TAM;
printf("Informe a quantidade de sílabas a serem lidas:\n");
scanf("%d", &TAM);
Aqui, usamos printf para exibir uma mensagem ao usuário e scanf para ler o valor digitado.

Passo 3

Agora, vamos ler cada sílaba da palavra individualmente. Para isso, vamos utilizar um array de strings para armazenar as sílabas. Vamos chamar esse array de silabas.
char silabas[TAM][50]; // Assumindo que cada sílaba tem no máximo 49 caracteres
for(int i = 0; i < TAM; i++) {
    printf("Sílaba %d: ", i+1);
    scanf("%s", silabas[i]);
}
Aqui, usamos um loop for para iterar de 0 até TAM-1, solicitando ao usuário que insira cada sílaba e armazenando-as no array silabas.

Passo 4

Depois de ler todas as sílabas, vamos juntar essas sílabas para formar a palavra completa. Para isso, vamos usar uma string chamada palavra e concatenar cada sílaba nela.
char palavra[TAM*50]; // Tamanho máximo da palavra
palavra[0] = '\0'; // Inicializa a string vazia

for(int i = 0; i < TAM; i++) {
    strcat(palavra, silabas[i]);
}
Aqui, usamos a função strcat para concatenar cada sílaba à string palavra. Também inicializamos a string palavra como vazia antes de começar a concatenar.

Passo 5

Agora que temos a palavra completa, precisamos criar uma versão invertida dessa palavra. Vamos chamar essa string de reversa. Para inverter a palavra, vamos percorrer a string original de trás para frente e copiar os caracteres para a nova string.
char reversa[TAM*50];
int len = strlen(palavra);

for(int i = 0; i < len; i++) {
    reversa[i] = palavra[len - i - 1];
}
reversa[len] = '\0'; // Adiciona o caractere nulo no final
Aqui, usamos a função strlen para obter o comprimento da palavra e então iteramos sobre cada caractere, copiando de trás para frente para a string reversa. Por fim, adicionamos o caractere nulo '\0' para finalizar a string.

Passo 6

Com a palavra original e sua versão reversa, agora podemos comparar as duas para decidir qual saída exibir. Se as duas strings forem iguais, imprimimos “baleia”; caso contrário, imprimimos “dorama”.
if(strcmp(palavra, reversa) == 0) {
    printf("baleia\n");
} else {
    printf("dorama\n");
}
Aqui, usamos a função strcmp para comparar as duas strings. Se elas forem iguais, strcmp retorna 0, e então imprimimos “baleia”. Se não forem iguais, imprimimos “dorama”.

Resposta

Pronto! Com esses passos, o programa lê uma palavra sílaba por sílaba, junta as sílabas, inverte a palavra e verifica se a palavra original é igual à sua versão invertida. Dependendo disso, imprime “baleia” ou “dorama”.
Aqui está o código completo:
#include <stdio.h>
#include <string.h>

int main() {
    int TAM;
    printf("Informe a quantidade de sílabas a serem lidas:\n");
    scanf("%d", &TAM);
    
    char silabas[TAM][50]; // Assumindo que cada sílaba tem no máximo 49 caracteres
    for(int i = 0; i < TAM; i++) {
        printf("Sílaba %d: ", i+1);
        scanf("%s", silabas[i]);
    }
    
    char palavra[TAM*50];
    palavra[0] = '\0'; // Inicializa a string vazia
    
    for(int i = 0; i < TAM; i++) {
        strcat(palavra, silabas[i]);
    }
    
    char reversa[TAM*50];
    int len = strlen(palavra);
    
    for(int i = 0; i < len; i++) {
        reversa[i] = palavra[len - i - 1];
    }
    reversa[len] = '\0'; // Adiciona o caractere nulo no final
    
    if(strcmp(palavra, reversa) == 0) {
        printf("baleia\n");
    } else {
        printf("dorama\n");
    }
    
    return 0;
}
Exemplo de Execução:
Informe a quantidade de sílabas a serem lidas:
3
Sílaba 1: Woo
Sílaba 2: Young
Sílaba 3: Woo
baleia
Esse código funciona conforme o enunciado do exercício, verificando se a palavra formada pelas sílabas é igual à sua versão invertida e exibindo a saída apropriada.

Exercícios relacionados