elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Dar vuelta un string
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Dar vuelta un string  (Leído 11,234 veces)
VCore

Desconectado Desconectado

Mensajes: 71



Ver Perfil
Dar vuelta un string
« en: 27 Julio 2011, 03:47 am »

Buenas, quiero hacer una función para dar vuelta un string (ya se que existe strrev pero quiero hacer la mia).

La cosa es que no se me ocurre como "desglosar" cada caracter del string ¿como puedo hacer esto?, y por otro lado me gustaría saber como convertir un string a una lista.

Saludos.


En línea

Beakman

Desconectado Desconectado

Mensajes: 190



Ver Perfil WWW
Re: Dar vuelta un string
« Respuesta #1 en: 27 Julio 2011, 03:55 am »

Para acceder a los caracteres del string, lo hacés de igual manera que con un vector de caracteres.
Código
  1. variable_string[ a ];
Después bueno, supongo que ya sabrás, haces una triangulación, o copiás los caracteres a un nuevo string, etc..

No se qué querés decir con "convertir un string a una lista..."


En línea

Triper0

Desconectado Desconectado

Mensajes: 38



Ver Perfil
Re: Dar vuelta un string
« Respuesta #2 en: 27 Julio 2011, 04:02 am »

Supongo que con lo de la lista te referís a poner cada carácter en cada nodo de la lista, en ese caso, como te dijo qily, agarras a la variable_string, la tomas como un vector, y vas recorriendo los índices y cargándolos en los nodos.
Cuando declaras la lista, la declaras con un dato de tipo char y el último, si necesitas, le pones el '\0' para que quede como una lista de string.
En línea

naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: Dar vuelta un string
« Respuesta #3 en: 27 Julio 2011, 04:39 am »

Una string no es mas que un arreglo de caracteres, entonces supongamos que tenemos la variable cadena que es un string y esta contiene Hola tenemos que el arreglo sería así:

cadena[0] = 'H';
cadena[1] = 'o';
cadena[2] = 'l';
cadena[3] = 'a';
cadena[4] = '\0';

Por lo tanto no es mas que hacer un for desde 0 a 3 (strlen(cadena)-1).
En línea

VCore

Desconectado Desconectado

Mensajes: 71



Ver Perfil
Re: Dar vuelta un string
« Respuesta #4 en: 27 Julio 2011, 07:38 am »

Quedo clarisimo, gracias  :-*
En línea

Lambda


Desconectado Desconectado

Mensajes: 371



Ver Perfil WWW
Re: Dar vuelta un string
« Respuesta #5 en: 27 Julio 2011, 13:50 pm »

Un for de 0 a 3 seria 0, 1, 2, seria de 0 a 4 (0, 1, 2, 3), no hace falta el -1 en el strlen, notese que si pones como condicion <= en el for de 0 a 3 seria lo mismo que si pusieses < y de 0 a 4, es mas "rapido" por que te ahorras una doble comparacion y la resta al strlen
« Última modificación: 27 Julio 2011, 13:52 pm por Lambda » En línea

Dark Invader

Desconectado Desconectado

Mensajes: 111


Lucha hasta el final para conseguir tu objetivo.


Ver Perfil
Re: Dar vuelta un string
« Respuesta #6 en: 27 Julio 2011, 13:51 pm »

Creo que en vez de arreglos puedes usar punteros,en este caso se alarga,pero para hacer funciones de ese tipo es lo mejor que hay:

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int main(){
  5. int j =0;
  6. char cadena[]=("Hola");
  7. j =strlen(cadena);
  8. char *p =&cadena[j];
  9. char *q =cadena;
  10. while(*p!=*q){
  11. *p--;
  12. printf("%c",*p);
  13. }
  14. return 0;
  15. }

Solo era un pequeño detalle.Para hacer funciones de la libreria string.h,lo mejor son los punteros.

Salu2
En línea

naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: Dar vuelta un string
« Respuesta #7 en: 27 Julio 2011, 18:37 pm »

Pero a la final es un puntero a una cadena osea a un arreglo de caracteres. No es cuestión de querer o no usar un arreglo, las cadenas son arreglos quieras o no.
En línea

Dark Invader

Desconectado Desconectado

Mensajes: 111


Lucha hasta el final para conseguir tu objetivo.


Ver Perfil
Re: Dar vuelta un string
« Respuesta #8 en: 27 Julio 2011, 18:48 pm »

Pero a la final es un puntero a una cadena osea a un arreglo de caracteres. No es cuestión de querer o no usar un arreglo, las cadenas son arreglos quieras o no.

Cierto,pero me parece mas facil manejarlo asi...Por lo menos desde mi punto de vista claro esta,cualquiera tiene su metodo...Creo que apuntando a las cadenas y aumentando el valor del puntero es mas facil,pero bueno para gustos los colores...

Salu2
En línea

VCore

Desconectado Desconectado

Mensajes: 71



Ver Perfil
Re: Dar vuelta un string
« Respuesta #9 en: 4 Agosto 2011, 02:50 am »

A ver tengo esto:

Código:
#include <cstdlib>
#include <iostream>
#include <../Proyectos/Test/misFunciones.h>
using namespace std;

int main()
{
string entrada;
cout << "Pone un string que te lo doy vuelta:";
cin >> entrada;
cout << darVuelta(entrada);
cout << endl;
return 0;
}



Código:
#include <string>
using namespace std;

string darVuelta(string unString)
{
       string outputString;
       
       for(int i = unString.size(); i > -1; i = i - 1)
               outputString[unString[i]];
       return outputString;
}

Código:
using namespace std;

string darVuelta(string unString);

Me compila sin problemas, pero luego de poner un texto cualquiera y darle enter se me cierra la pantalla y no llego a verlo.
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines