C/Visual C - Cadena Invertida con punteros

   
Vista:

Cadena Invertida con punteros

Publicado por Jose (4 intervenciones) el 31/08/2007 15:45:25
Saludos, soy bien nuevo en el mundo de la programacion y actualmente en la universidad estoy viendo punteros los cuales he visto muy poco....quisiera saber si me pudieran dar una idea con punteros de como podria realizar un programa que reciba una cadena y la imprima invertida, no puedo utilizar strlen, stcpy, strcat.

Muchas Gracias por adelantado
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Cadena Invertida con punteros

Publicado por AntonioG (42 intervenciones) el 31/08/2007 16:38:14
Hola,

Lo priemro es poder recorrer la cadena e imprimirla en orden.

Este ejemplo va a tener una cadena que termina en el caracter '\0', si usas otro caracter para terminar la cadena solo cambia donde parece eso:

-------------------------------------------------------------------
void main()
{

char *cadena="123456789\0";//aqui esta almacenada la cadena
char *puntero;//puntero a caracter que usaremos para recorrer la cadena

puntero=cadena;//apuntar al primer caracter de la cadena

do{
printf("%c",*puntero);//imprimir caracter al que estamos apuntando
puntero++; //ir al siguiente caracter
}while(*puntero!='\0');//hacerlo hasta encontrar el caracter que termina la cadena

}
-------------------------------------------------------------------

Ahora, para imprimirla invertida, pues en la primera pasada en lugar d eimprimir lso caracteres vamso contando cuantos son, y ya en una segunda pasada vamos imprimiendo los caracteres de el ultimo caracter al primero.

-------------------------------------------------------------------
#include "stdio.h";

void main()
{

char *cadena="123456789\0";//aqui esta almacenada la cadena
char *puntero;//puntero a caracter que usaremos para recorrer la cadena
int i;//contador para ver cuntas letras tiene la cadena

puntero=cadena;//apuntar al primer caracter de la cadena
i=0;//para comenzar a contar
do{
i++;//contar un caracter mas
puntero++; //ir al siguiente caracter
}while(*puntero!='\0');//hacerlo hasta encontrar el caracter que termina la cadena

//aqui puntero sigue apuntando al final de la cadena, asi que vamos a regresarnos un caracter, que es la ultima letra de la palabra
puntero--;
//ahora si a imprimir de atras hacia el principio
do{
printf("%c",*puntero);
i--;//decrementar contador, cuando lelgue a cero es que ya terminamos de imprimir la cadena
puntero--; //ir a la letra anterior
}while(i>0);//hacerlo hasta encontrar el caracter que termina la cadena

}
-------------------------------------------------------------------
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cadena Invertida con punteros

Publicado por Diego (10 intervenciones) el 01/09/2007 02:42:24
Buenas

Aqui tienes:

void reversa(char *s)
{
if(*s){
reversa(s + 1);
printf("%c", *s);
}

return;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar