Dev - C++ - Como puedo hacer una condición en C para que el usuario no digite letras repetidas

 
Vista:
sin imagen de perfil
Val: 4
Ha disminuido su posición en 3 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Como puedo hacer una condición en C para que el usuario no digite letras repetidas

Publicado por Plus (2 intervenciones) el 09/03/2019 21:42:21
Hola, soy novato en programacion, estoy tratando de hacer un ahorcado en el lenguaje C, solo que me encontre con un pequeño problema. ¿Como puedo hacer una condicion para que el usuario no digite letras repetidas al tratar de adivinar la palabra?... les agradeceria mucho su ayuda.
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 Alfil
Val: 4.344
Oro
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Como puedo hacer una condición en C para que el usuario no digite letras repetidas

Publicado por Alfil (1444 intervenciones) el 10/03/2019 06:21:02
Hay dos formas de hacerlo, almacenando los datos en una lista ligada, o en un array de caracteres; como el usuario no va a introducir más letras de las que hay en el abecedario, lo he hecho como un array.

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
#include <stdio.h>
#include <ctype.h>
 
int main(){
 
    char letras[27];
    char c, opcion;
    int i = 0;
    int pos;
 
    do{
        printf( "\nIntroduzca una letra: " );
        scanf( " %c", &c );
        c = toupper( c );
        pos = 0;
 
        while( pos < 27 && letras[pos] != c ){
            pos++;
        }
        if( pos >= 27 ){
            printf( "\nHa introduido la letra %c.", c );
            letras[i] = c;
            i++;
        } else {
            printf( "\nLa letra %c esta repetida", c );
        }
 
        printf( "\n\nIntroducir otra letra (S/n): " );
        scanf( " %c", &opcion );
 
    } while( toupper( opcion ) == 'S' );
 
    return 0;
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Como puedo hacer una condición en C para que el usuario no digite letras repetidas

Publicado por Nacho (181 intervenciones) el 10/03/2019 14:36:33
Lo más sencillo es un array de 127 bool a false, uno por cada carácter ascii. Cuando entra un carácter se pone la posición del array de ese carácter a true.

1
2
3
4
5
char c;
bool cc[127]{ 0 };
printf("\nIntroduzca una letra: ");
scanf(" %c", &c);
cc[c] = true;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 4
Ha disminuido su posición en 3 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Como puedo hacer una condición en C para que el usuario no digite letras repetidas

Publicado por Plus (2 intervenciones) el 10/03/2019 22:45:59
muchas gracias amigo!
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