Ir ao conteúdo
  • Cadastre-se

C Programa que inverte uma frase (letra a letra)


Posts recomendados

Eu estou tentando criar um programa que inverta a frase letra a letra. Meu programa está assim no momento.

Entrada: olá mundo

Saída: odnum alo

O desejado: álo odnum

 

Vejo que tem um exercício semelhante a esse nesse cite respondido com funções, mas como eu ainda não aprendi funções tem uma forma de fazer isso sem funções? 

Desde de já agradeço.😌

#include<stdio.h>
#include<string.h>

int main(){
char nome[100];
char inverso[100];
int i, h = 0;
printf("Digite uma frase: \n");
gets(nome);
strlen(nome);

for(i = strlen(nome) - 1; i >= 0; --i){
    inverso[h] = nome[i];   // inverte a frase toda e joga na string inverso
    ++h;
}
inverso[h] = '\0';

printf("\nO inverso: %s \n", inverso);
return 0;
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

A dica é você separar palavra por palavra e o que as separa é o espaço. A cada vez que achar espaço significa que é o fim de uma e começo de outra. Algo como ... coloque no buffer até achar o espaço, inverta o buffer e continue com o processo até o fim da frase... geralmente um caracter 0

Link para o comentário
Compartilhar em outros sites

51 minutos atrás, Emerson2156547384729849 disse:

Vejo que tem um exercício semelhante a esse nesse cite respondido com funções, mas como eu ainda não aprendi funções tem uma forma de fazer isso sem funções?

 

Apenas aprenda a escrever funções. É muito mais fácil assim. Ninguém vai culpar você por ler mais duas páginas do livro. E de todo modo C sem funções é inútil. A menos que o enunciado exija escrever em um bloco só.

 

Faça o simples.

 

Mas nesse caso se tudo o que quer é inverter um frase e ela já está na memória basta um loop e dois endereços. Isso quer dizer algo como

 

    char	frase[80];
    char*	inicio_reverso
    char*	fim_reverso = frase;

 

O final da string de saída é claro que vai ser a primeira letra da string inicial, certo? E tal string pode ter uma letra só.

E o final? a string original terminal em zero como toda string em C. Ao encontrar o zero antes dele vai estar a primeira letra da string invertida, claro: "Azul" vai virar "luzA" e no final delas vai ter sempre um zero, por exemplo.

 

Se sabe o início e o fim basta copiar para a saída, em um único loop. E colocar um zero no fim. E mostrar as duas strings. E encerrar o programa.

Link para o comentário
Compartilhar em outros sites

@Emerson2156547384729849  Olá!

 

3 horas atrás, Emerson2156547384729849 disse:

Vejo que tem um exercício semelhante a esse nesse cite respondido com funções, mas como eu ainda não aprendi funções tem uma forma de fazer isso sem funções? 

Sim e tem nome para regra, chama-se: programação Imperativa, geralmente não fica só nesse padrão então não se dedique; esse alerte é válido porque entre os modelos esse é a que mais se assemelha com pensamento e essa é a razão de ser fácil se apegar, e de ser o primeiro modelo dos principiantes, porém logo-logo será substituído pela programação estruturada, etc.

 

 

Pense imperativamente em como você faria, escreva as instruções em português  (etapa por etapa) e por fim faça uma tentativa sincera da solução em linguagem c, caso precise de ajuda compartilhe suas versões (em português e c).

 

Até [:)

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...