Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: lucho666 en 17 Octubre 2014, 16:13 pm



Título: invertir una frase en C
Publicado por: lucho666 en 17 Octubre 2014, 16:13 pm
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


Título: Re: invertir una frase en C
Publicado por: milx86 en 17 Octubre 2014, 17:56 pm
Código
  1. #include <stdio.h>
  2. #include <string.h>
  3. #define TAM 90
  4.  
  5. void readLine(char cadena[], int tam)
  6. {
  7.    char c;
  8.    fgets(cadena,tam,stdin);
  9.    if (cadena[strlen(cadena)-1] == '\n')
  10.        cadena[strlen(cadena)-1] = '\0';
  11.    else
  12.    {
  13.        cadena[tam-1] = '\0';
  14.        while((c = getchar()) != '\n'){};
  15.    }
  16. }
  17.  
  18. int main()
  19. {
  20.    char frase[TAM];
  21.    printf("Ingrese frase: ");
  22.    readLine(frase,TAM);
  23.    printf("%s\n",frase);
  24.  
  25.    int i=strlen(frase);
  26.    int aux;
  27.    for(i; i>=0; i--)
  28.    {
  29.        if(frase[i]==' '){
  30.            aux = i+1;
  31.            while(frase[aux] !=' '){
  32.                if(aux==strlen(frase))
  33.                    break;
  34.                printf("%c",frase[aux]);
  35.                aux++;
  36.            }
  37.            printf(" ");
  38.        }
  39.        if(i==0){
  40.            aux = i;
  41.            while(frase[aux] !=' '){
  42.                printf("%c",frase[aux]);
  43.                aux++;
  44.            }
  45.        }
  46.    }
  47.    return 0;
  48. }

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


Título: Re: invertir una frase en C
Publicado por: lucho666 en 17 Octubre 2014, 18:00 pm
muchas gracias !! lo revisare y mejorare