eliminar elementos desordenados

Iniciado por pilo312, 9 Mayo 2016, 17:54 PM

0 Miembros y 1 Visitante están viendo este tema.

pilo312

Mi duda es como hacer que al escribir una palabra como casa lo que salga en pantalla sea cas, osea se eliminen las repeticiones pero quede 1
Código (cpp) [Seleccionar]
#include <iostream>
#include <string>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
bool serepite(char , string );
void elimina(char , string& );

int main(){
     string frase;
     cout << "frase" << endl;
     getline(cin,frase);
     cin >> clave;
     for(int i=0;i<frase.size();++i ){
   if(serepite(frase[i],frase))
       elimina(frase[i],frase);
  }
  cout<< frase<<endl;


       return 0;}

bool serepite(char b, string cad){
   int contador = 0;
   for(int i =0;i<cad.size();++i)
       if(b==cad[i])
           contador++;
       if (contador>1)
           return true;
       return false;
   }

void elimina(char c, string &cad){
   for(int i=0;i<cad.size();++i)
       if(c==cad[i]){
           cad.erase(i,1);
       }
   }


MAFUS

Se me ocurre que tengas un array vacío que sea el que mirarás si existen las letras repetidas o no.
Así, cuándo empieces una palabra con dicho array vacío (ej todo a 0). Miras la primera letra de la palabra. Si no existe en el array de palabras repetidas la incluyes Y apuntas la letra en la palabra destino. Si existe la letra en el array destino simplemente pasas a la siguiente letra de la palabra original y empiezas de nuevo.
Cuándo la palabra original se termine pones el array de letras repetidas a 0 para ser usado en la siguiente palabra.