Eliminar caracteres repetidos de una cadena

rrr_vanquish
30 de Septiembre del 2008
Hola, es mi primer mensaje en el foro, por lo que os envio un saludo a todos.
Tengo un problema con un pequeño ejercicio: eliminar caracteres repetidos de una cadena, por supuesto con punteros (que se me dan fatal).

Una funcion recibe una cadena y debe retornar la cadena sin caracteres repetidos.
Sé que debe ser muy sencillo pero me he estancado y no soy capaz de solucionar el problema.

Alguien podría ayudarme a encontrar la solución?

Gracias

Diabliyo
30 de Septiembre del 2008
Hola:

Puedes hacerlo de MUCHAS maneras, pero es primordial saber TU NIVEL de programacion.... ya que se puede hacer usando: arreglos, estructuras, arboles binarios...

byeeeeeeeeeee

nosic
30 de Septiembre del 2008
hola!, a ver, una manera muy simple es que una vez leida la matriz, la muestre por pantalla (que es opcional, pero queda bonito), y le pida al usuario q introduzca el valor q desea borrar. ahora solo te keda hacerte un bucle for q recorra la matriz e ir preguntando en cada paso si la matriz[i][j] es = a la variable en la q guardastes el dato introducido por el usuario. entiendes el mecanismo verdad?? seria algo parecido a esto para rastrear la matriz:

for (i=0;i<numero_filas;i++
{
for (j=0;j<numero_columnas;j++)
if (matriz[i][j] == valor_usuario) matriz [i][j]=0;
}

espero que te sea util, asta luego!

Alejandro 95
30 de Septiembre del 2008
Hola, no sé si esto es tan sencillo, a mi me a costado bastante, así que si es lo que necesitabas, pues bueno, tu invitas la cerveza!


//---------------------------------------------------------------------------
#include <iostream>
using namespace std;

void Unico(char* cadena, char* resultado, int n);
bool Esta(char a, char* cadena, int n); // Cuál?

int main()
{

char *cadena = "Recuerdame no usar punteros a menos que sea "
"estrictamente necesario !";
cout << cadena << endl;

int n = strlen(cadena);
char *resultado = new char[n+1];
for(int i=0; i<n+1; i++) resultado[i] = '';

Unico(cadena, resultado, n);

cout << resultado << endl;

getchar();
delete resultado;

return 0;
}
//---------------------------------------------------------------------------
void Unico(char* cadena, char* resultado, int n)
{

// el primero:
*resultado = *cadena;
int k = 1;

// los siguientes:

for(int i=1; i<=n; ++i) {
bool esta = Esta(cadena[i], resultado, n);

if (!esta) {
*(resultado+k) = *(cadena+i);
k++;
}

}
}
//--------------------------------------------
bool Esta(char a, char* cadena, int n)
{
for(int i=0; i<=n; ++i) {
if(a == *(cadena+i) )
return true;
}

return false;
}
//--------------------------------------------------------------------------------------

Uffff

jimmy
30 de Septiembre del 2008
Hola amigo visita mi blog, ahi desarrolle dos maneras de solucionar ese pequeño problemita. saludos! :D
la URL es: http://algodecodigo.blogspot.com