C/Visual C - Eliminar caracteres repetidos en un arreglo

 
Vista:

Eliminar caracteres repetidos en un arreglo

Publicado por Jorge (6 intervenciones) el 15/02/2001 18:13:30
necesito código de cómo borrar los caracteres repetidos en un arreglo unidimensional.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Eliminar caracteres repetidos en un arreglo

Publicado por beosman (37 intervenciones) el 16/02/2001 00:44:56
Lo primero es que se dice ARRAY o MATRIZ pero nunca arreglo (que eso es de arreglar). Lo segundo es que puedes hacer dos cosas, o lo recorres y lo copias en otro excepto los que quieres eliminar o, como tercera opción, para cada elemento que quieras eliminar mueves todos los siquientes una posición hacia la izquierda (tienes que hacer la función que mueva). La primera opción es más fácil y menos costosa en tiempo. La segunda es menos costosa en espacio, pero ¿quien no tiene unos cuantos megas de memoria?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Eliminar caracteres repetidos en un arreglo

Publicado por Googol (255 intervenciones) el 16/02/2001 10:25:40
Aunque tú digas array o matriz, no tienes derecho a criticar a otros hispano-hablantes porque no lo hagan.
Yo tampoco soportaba inicialmente oir lo de "arreglo". Pero en Iberoamérica lo dicen así. Y seguro que son más ellos que nosotros.
No obstante, naturalmente, yo seguiré diciendo array o matriz :-)

Bueno. Y ahora vamos a lo que importa.

int esta(char valor, char* array, int cuantos) {
// Devuelve cierto si "valor" está en los primeros <cuantos> elementos de <array>
int c = 0;
while ((c < cuantos) && (array[c] != valor)) c++;
return (c == cuantos);
}

int eliminaRepetidos(char *original, char* final, int cuantos) {
// Elimina los repetidos de original, de tamaño cuantos, y deja el
// resultado en final, que debe tener ya hueco reservado. Devuelve el
// número de elementos usados en <final>
int ptrFinal = 1;
final[0] = original[0];
for (int c = 1; c < cuantos; c++)
if (!esta(original[c], original, c-1)
final[ptrFinal++] = original[c];
return ptrFinal;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Eliminar caracteres repetidos en un arreglo

Publicado por Jorge (6 intervenciones) el 16/02/2001 15:49:46
Muchas gracias, siempre tendré en cuenta sus críticas, sin embargo, creo que hablamos español o algo parecido a este idioma, es de sabios respetar. NUNCA cambiaré mi idioma, aunque aprenda otros.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Eliminar caracteres repetidos en un arreglo

Publicado por Endos (143 intervenciones) el 16/02/2001 19:23:30
Primero, aquí tienes una versión alternativa a la ya aparecida, que genera un
informe cuando termina (solo funciona con caracteres imprimibles, el 'reductor' con
todos)

#include <stdio.h>

int Buffer[256];
char Destino[256];
char Origen[]="Esto es una prueba de eliminacion de caracteres repetidos";

void main()
{
int Cuenta=0, bucle=0;

for(bucle; bucle<sizeof(Origen); bucle++) // Suprime las repeticiones
if((*(Buffer+*(Origen+bucle)))++==0)
*(Destino+(Cuenta++))=*(Origen+bucle);

// A partir de aqui se genera un informe del resultado, puedes suprimirlo

printf(" Origen: %s\n",Origen);
printf("Destino: %s\n\n",Destino);
printf(" Reporte: Sin repetir: %u - Repetidos: %u - Total: %u\n"
" --------------------------------------------------------------\n",
Cuenta, sizeof(Origen)-Cuenta, sizeof(Origen));

for(bucle=32; bucle<127; bucle++)
printf("%c - %4u\t",bucle,*(Buffer+bucle));
}

----
Y en segundo lugar, como información para todos:

1- Yo soy español y empleo 'arreglo'
2- Si coges un diccionario y buscas 'array', lo primero que aparece es el término 'arreglo'.
3- Arreglo no significa solo arreglar, también significa orden. En cualquier caso, significa
exactamente lo mismo que 'array' porque es su traducción al español.
3- Hay varios libros, como Aprendiendo Borland C++ 5 ... , que usan 'arreglo'

Saludos,
Endos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Eliminar caracteres repetidos en un arreglo

Publicado por beosman (37 intervenciones) el 17/02/2001 01:39:30
Lo primero es que por supuesto respeto a los demás y el idioma de los demás. Lo segundo es que la traducción literal de array en inglés es matriz en castellano. Lo tercero es que arreglo viene de cuando las traducciones las hacían hace mucho tiempo donde el idioma con más adeptos en España era el francés y el inglés casi no se conocía y lo cuarto es que si he ofendido a alguien lo siento, pero el castellano es el castellano sea aquí o en cualquier parte.

beosman
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar