C/Visual C - eliminar letras repetidas en una cadena

 
Vista:

eliminar letras repetidas en una cadena

Publicado por ayuda como lo puedo hacer (1 intervención) el 26/06/2017 07:20:05
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
#include<stdio.h>
 
 
int main (){
 char frase[50], matriz [5][5] ,frase2[50], aux;
 int i, j;
 
 
printf ("ingrese una frase ");
  gets(frase);
 
 
 
 for (i=1; i<50  && frase != '\0'; i++){
 
          for( j=0 ; j <50 ; j++){
              if (frase[i] != frase[j]){
                aux = frase[j];
          frase[j] = frase[i];
                frase[j] = aux;
                  frase2[j]= frase[j];
 
}
}
 
}
printf ("%s", frase2 );
 
 
getchar ();
}
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
Imágen de perfil de [abZeroX]
Val: 23
Ha aumentado su posición en 2 puestos en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

eliminar letras repetidas en una cadena

Publicado por [abZeroX] (4 intervenciones) el 27/06/2017 00:26:18
Hola hice un pequeño código capaz te sirve:

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
#include <stdio.h>
#define TAMANIO 50
 
int busqueda(const char b[], int llave, int tamanio);
 
int main() {
	int x = 0;
	char frase[TAMANIO];
	char frase_2[TAMANIO] = {""};
 
	printf("Introduze una frase: ");
	fgets(frase, 50, stdin);
 
	for (int i = 0; i < 50 && frase[i] != '\n'; i++) {
		printf("%c\n", frase[i]);
		if (busqueda(frase_2, frase[i], 50) == -1) {
			frase_2[x] = frase[i];
			x++;
		}
	}
 
	printf("La frase SIN LETRAS REPETIDAS es: %s\n", frase_2);
 
	return 0;
}
 
int busqueda(const char b[], int llave, int tamanio) {
	for (int i = 0; i < tamanio; ++i) {
		if (b[i] == llave) {
			return i;
		}
 	}
	return -1;
}

Nos comentas.
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
sin imagen de perfil
Val: 60
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

eliminar letras repetidas en una cadena

Publicado por Yamil Bracho (26 intervenciones) el 27/06/2017 01:04:09
Deja un solo caracter . Por ejemplo si colocas 111 te retorna 1
Solo debes hacer un pequeño cambio en busqueda, algo como :

1
2
3
4
5
6
7
8
9
10
int busqueda(const char b[], int llave, int tamanio) {
      if (isalpha(llave))  {
	for (int i = 0; i < tamanio; ++i) {
		if (b[i] == llave) {
			return i;
		}
 	}
       }
	return -1;
}
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