Ir ao conteúdo
  • Cadastre-se

Invertendo Strings


Snoogy

Posts recomendados

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
Link para o comentário
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;
}

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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