Ir ao conteúdo

Posts recomendados

Postado

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
  • Membro VIP
Postado

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

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

Postado

@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é [:)

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!