Invertir una cadena

Blanca Simón

/* Lee una cadena del teclado y la invierte:
por ejemplo, si damos como entrada: “Hola Pepe”,
la salida debe ser: “epeP aloh”.
Utilizar reserva dinamica de memoria */

#include <stdio.h>

main()
{
char cad[100];
char *p;
int i,lon;

printf(“\n Dame cadena:”);
gets(cad);

/* (1) Calcular la longitud de la cadena de caracteres: cad[] */
i=0;
while(cad[i] = ‘\o’) /* lectura de los caracteres hasta el final de cadena */
++i;
lon=i;

/* (2) aqui la inviertes haciendo por ejemplo un bucle; puedes
utilizar una cadena adicional cad1[] si te resulta mas sencillo */

p = (char *) malloc (lon+1);
for (i=0;i<lon;i++)
p[i]=cad[lon-i-1];
p[i]= ‘\o’;

printf(“n La cadena invertida es: “);
printf(“%s\n\n”,p);
free (p);

system(“PAUSE”);
return 0;
}

/* NOTA: En los ‘\o’ la letra ‘o’ debe ser el número ’0′. Se pone así porque si no el wordpress no lo escribe bien. */

Esta entrada fue publicada en Ciencia y programación. Guarda el enlace permanente.

2 respuestas a Invertir una cadena

  1. Tomas J. dijo:

    En C# sería mucho más sencillo de implementar, sería algo así:

    static void main()
    {
    Console.WriteLine(“Escribe una palabra:”);
    //Guardo la palabra escrita en s
    string s = Console.ReadLine();
    //Invierto s
    string result = Invertir(s);
    //Imprimo la cadena invertida
    Console.WriteLine(s);
    }

    static string Invertir (string s)
    {
    string result= “”;
    for(int i=s.Lenght-1; i>=0; i–)
    result+= s[i];
    return result;
    }

    En C# no hay que declarar los métodos o funciones antes de implementarlos, ni hay que trabajar con punteros. Además, está la clase string, que puede ser tratada como un tipo. Lo que pasa es que en C++ se puede optimizar mucho más el código y el programa. Pueden ver más ejemplos de como invertir un string en C# aquí:
    Invertir un string C#

  2. se agradece tu comentario, aunque en nuestro caso justamente nos sirve
    de aprendizaje el implementar dichas funciones.. evidentemente la solución
    que propones en C# es correcta, como tantas otras que se pueden dar..
    (observo que tienes un blog muy didáctico, así que lo linkearé desde aquí)..
    gracias por tu post.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s