int main () { SecuenciaCaracteres cadena; int tope,i; char caracter; cin>>caracter; while(caracter!='#'){ cadena.Aniade(caracter); cin>>caracter; } tope=cadena.TotalUtilizados(); for (i = 0; i < tope; i++) cout << cadena.Elemento(i); cadena.EliminaRepetidos(); tope=cadena.TotalUtilizados(); for (i = 0; i < tope; i++) cout << cadena.Elemento(i); system("pause"); }
int main(){ char caracter, letra_inicio, letra_final; int contador; SecuenciaCaracteres letras; cout << "\nintroduce una secuencia de caracteres (# para terminar): \n"; while(caracter != '#'){ caracter = cin.get(); cin.ignore(); if (caracter != '#'){ letras.Aniade(caracter); } } //imprimimos el vector original cout << "\n\nDatos del vector original" << "\n"; for(contador = 0; contador < letras.TotalUtilizados(); contador++){ cout << letras.Elemento(contador) << "\n"; } cout << "\n\nIntroduce la letra de inicio para imprimir el vector: "; cin >> letra_inicio; cout << "\n\nIntroduce la letra por la que finalizará el vector: "; cin >> letra_final; SecuenciaCaracteres resultado(letras.Ordena(letra_inicio, letra_final)); cout << "\n\nEl vector resultante es: "; for (int i = 0; i < resultado.TotalUtilizados(); i++ ){ cout << " " << resultado.Elemento(i); } cout << "\n\n"; }
SecuenciaCaracteres CountingSort_Limites(char inicio,char fin){ SecuenciaCaracteres Ordenados; char minimo,maximo,letra_actual; int i,j,apariciones; int frecuencia[TAMANIO]; int utilizados_frecuencia; minimo=vector_privado[0]; for(i=1;i<total_utilizados;i++){ if(vector_privado[i]<minimo) minimo=vector_privado[i]; } maximo=vector_privado[0]; for(i=1;i<total_utilizados;i++){ if(vector_privado[i]>maximo) maximo=vector_privado[i]; } utilizados_frecuencia=maximo-minimo+1; letra_actual=minimo; for(i=0;i<utilizados_frecuencia;i++){ apariciones=0; for(j=0;j<total_utilizados;j++){ if(vector_privado[j]==letra_actual) apariciones++; } frecuencia[i]=apariciones; letra_actual++; } letra_actual=minimo; for(i=0;i<utilizados_frecuencia;i++){ for(j=0;j<frecuencia[i];j++){ if(letra_actual>=inicio && letra_actual<=fin) Ordenados.Aniade(letra_actual); } letra_actual++; } return Ordenados; }
int main(){ SecuenciaCaracteres frase; int tope; frase.Aniade('c'); frase.Aniade('b'); frase.Aniade('b'); frase.Aniade('a'); frase.Aniade('b'); frase.Aniade('c'); frase.Aniade('c'); frase.Aniade('a'); frase.Aniade('g'); frase.Aniade('c'); frase.Aniade('b'); frase.Aniade('g'); frase.Aniade('c'); tope = frase.TotalUtilizados(); for (int i = 0; i < tope; i++) cout << frase.Elemento(i) << " "; tope = frase.TotalUtilizados(); cout << "\n"; for (int i = 0; i < tope; i++) cout << frase.CountingSort().Elemento(i) << " "; tope=frase.CountingSort_Limites('b','g').TotalUtilizados(); cout << "\n"; for (int i = 0; i < tope; i++) cout << frase.CountingSort_Limites('b','g').Elemento(i) << " "; system ("pause"); }
SecuenciaCaracteres Ordena(char caracter1, char caracter2){ SecuenciaCaracteres objeto; char letra; int indice; char minimo = 0; char maximo = 0; int frecuencia[30]; int frecuencia_utilizados = 0; char letra_inicio = caracter1; char letra_final = caracter2; //calculamos maximo y minimo for(int i = 0; i < total_utilizados; i++){ indice = vector_privado[i]; rango[indice]++; } for(int i=0; i < LETRAS_HASTA_N; i++){ letra = i; if (ElementoRango(i) > 0){ if (minimo == 0){ minimo = letra; } maximo = letra; } } for(int i = letra_inicio; i <= letra_final; i++){ frecuencia[frecuencia_utilizados] = rango[i]; frecuencia_utilizados++; } //almacenamos los caracteres tantas veces como indica la frecuencia letra = letra_inicio; for(int i = 0; i < frecuencia_utilizados; i++ ){ for(int x = 0; x < frecuencia[i]; x++){ objeto.Aniade(letra); } letra = letra + 1; } return objeto; }