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:
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
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.