Borrar un carácter de una secuencia de caracteres
Publicado por Federico (11 intervenciones) el 12/12/2017 23:12:42
Buenas tengo que hacer un ejercicio que dada una secuencia de caracteres, le des un carácter a borrar y te elimine ese carácter de toda la secuencia, la cosa es que cuando sale ese carácter consecutivo solo se borra una vez, aquí les dejo el código.
Seguramente haya que retocar alguna tonteria, si me pueden ayudar.
Gracias
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include <iostream>
using namespace std;
class SecuenciaCaracteres{
private:
static const int TAMANIO = 100;
char vector_privado[TAMANIO];
int total_utilizados;
public:
SecuenciaCaracteres()
:total_utilizados(0)
{
}
int Capacidad(){
return TAMANIO;
}
int TotalUtilizados(){
return total_utilizados;
}
void Aniade(char nuevo){
if (total_utilizados < TAMANIO){
vector_privado[total_utilizados] = nuevo;
total_utilizados++;
}
}
char Elemento(int indice){
return vector_privado[indice];
}
void Modifica(int indice_componente, char nuevo){
if (indice_componente >= 0 && indice_componente < total_utilizados)
vector_privado[indice_componente] = nuevo;
}
void Imprimir (){
for (int i=0; i<total_utilizados; i++){
cout << vector_privado[i] << " , ";
}
}
void Elimina (int posicion){
if (posicion >= 0 && posicion < total_utilizados){
int tope = total_utilizados-1;
for (int i = posicion ; i < tope ; i++)
vector_privado[i] = vector_privado[i+1];
total_utilizados--;
}
}
void EliminarOcurrencias (char a_borrar){
for (int i=0; i<total_utilizados; i++){
if (vector_privado[i] == a_borrar)
Elimina (i);
}
}
};
int main(){
const char TERMINADOR = '#';
int total_introducidos;
char caracter;
char caracter_a_borrar;
int capacidad_secuencia;
SecuenciaCaracteres secuencia;
cout << "Introduzca los caracteres(Terminador: #): " << endl;
total_introducidos = 0;
capacidad_secuencia = secuencia.Capacidad();
caracter = cin.get();
while (caracter != TERMINADOR && total_introducidos < capacidad_secuencia){
secuencia.Aniade(caracter);
caracter = cin.get();
}
cout << "Introduzca el caracter a borrar: " << endl;
cin >> caracter_a_borrar;
secuencia.EliminarOcurrencias (caracter_a_borrar);
secuencia.Imprimir();
}
Seguramente haya que retocar alguna tonteria, si me pueden ayudar.
Gracias
Valora esta pregunta


0