invertir una frase en C

Iniciado por lucho666, 17 Octubre 2014, 16:13 PM

0 Miembros y 1 Visitante están viendo este tema.

lucho666

hola gente!!

tengo un pequeño proble en C , queria ver si me podrian ayudar ..

tengo que hacer un programa que lea una frase por pantalla y me la devuelva invertida , es decir: hola gente como estan ----> estan como gente hola

trate de hacerlo con punteros pero no hay forma de que me salgra , trate de ir almacenando la cadena en una matriz y por cada espacio que se salte una fila e ingrese la otra palabra pero tampoco pude... si alguien me puede dar una mano en esto que aun no manejo muy bien C

milx86

#1
#include <stdio.h>
#include <string.h>
#define TAM 90

void readLine(char cadena[], int tam)
{
   char c;
   fgets(cadena,tam,stdin);
   if (cadena[strlen(cadena)-1] == '\n')
       cadena[strlen(cadena)-1] = '\0';
   else
   {
       cadena[tam-1] = '\0';
       while((c = getchar()) != '\n'){};
   }
}

int main()
{
   char frase[TAM];
   printf("Ingrese frase: ");
   readLine(frase,TAM);
   printf("%s\n",frase);

   int i=strlen(frase);
   int aux;
   for(i; i>=0; i--)
   {
       if(frase[i]==' '){
           aux = i+1;
           while(frase[aux] !=' '){
               if(aux==strlen(frase))
                   break;
               printf("%c",frase[aux]);
               aux++;
           }
           printf(" ");
       }
       if(i==0){
           aux = i;
           while(frase[aux] !=' '){
               printf("%c",frase[aux]);
               aux++;
           }
       }
   }
   return 0;
}


nota xd:
* El programa se puede mejorar.
* Si deseas reemplazar readLine por scanf... es tu decición.
* Si lo que querías no era imprimir invertido sino crear una nueva frase invertida, creas otro arreglo y en lugar de imprimir lo almacenas allí.
Saludos
La abstracción es la clave para lidiar con la complejidad.

lucho666

muchas gracias !! lo revisare y mejorare