Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
Snoogy

Invertendo Strings

Recommended Posts

Boa Noite Galera!

Poderiam me ajudar ? Preciso alterar a função de tal forma que inverta palavra por palavra e não a frase inteira (exemplo: você digita a palavra "pasta de dente" e será impresso na tela "atsap ed etned").

 

Fiz abaixo , porém a função me devolve apenas a frase inteira:

 

# include <stdio.h>
# include <conio.h>
# include <string.h>
# include "pilhas.h"

int main ( ) {
printf ( "Programa: ed_p_22.c\n" ) ;
int i;
tpPilha pilha;
char palavra [ 30 ] ;
printf ( "Digite uma frase: " ) ;
gets ( palavra ) ;
init ( &pilha ) ;
for ( i = 0; i <= strlen ( palavra ) ; i++ )
push ( &pilha, palavra [ i ] ) ;
printf( "\n\nValor devolvido => " ) ;
while ( isEmpty ( &pilha ) == 0 )
printf ( "%c", pop ( &pilha ) ) ;
getch ( ) ;
return 0 ;
}

 

Poderiam me ajudar ?

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Snoogy      eu ainda não sei mexer com pilha push e pop,  mas se servir fazer

com vetores então pode ser feito assim :

#include <stdio.h>
#include <string.h>
char frase [300];
char frase2[305];
int b,c,d,f,i,j;
int main(){
    printf("       Vamos Inverter As Palavras\n\n");
    printf("Digite Uma Frase Com Ate 300 Caracteres: ");
    gets(frase);
    c=0;d=0;
    f=strlen(frase);          /*pega o tamanho da frase*/
    for(i=0;i<f;i++){
        if(frase[i]==' '){    /*verifica quantos espaços tem na frase*/
            d++;
        }
    }
    if(d==0 && f > 0){       /*se na frase não tem nenhum espaço mas tem uma palavra*/
        for(i=f-1;i>=0;i--){ /*pegando da ultima letra da palavra ate a primaeira*/
            printf("%c",frase[i]);/*imprime ela na tela ao contrario*/
        }
    }
    if(f==0){printf("\nVoce Nao Digitou Nada...!\n\n");}
    if(d>0){
        frase2[0]=' ';                  /*coloca um espaço no começo da frase*/
        for(i=0;i<f;i++){frase2[i+1]=frase[i];}/*frase2 igual frase*/
        frase2[f+1]='.';                /*coloca um ponto no final da frase*/
        for(i=1;i<=f+1;i++){            /*vai percorrer toda a frase*/
            if(frase2[i]==' ' || frase2[i]=='.'){  /*um espaço fim da palavra*/
                c=i-1;                  /*pega a posição da ultima letra da palavra*/
                while(frase2[c]!=' '){  /*repete ate encontrar um espaço na frase que é o começo da palavra*/
                    printf("%c",frase2[c]); /*imprime a letra que esta nessa posição da frase*/
                    c--;                /*volta uma posição na frase*/
                }
                printf(" ");            /*coloca um espaço entre a palavra e a proxima*/
            }
        }
    }
    gets(frase);                        /*esper apertar enter*/
    return 0;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×