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
#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);
}
}
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.