Dev - C++ - ¿Cómo se usa el isalnum?

 
Vista:

¿Cómo se usa el isalnum?

Publicado por Efren (16 intervenciones) el 12/08/2020 06:56:39
Hola, estoy intentando validar que al ingresar un nombre de videojuego solo acepte letras, números y espacios.
Pero no se cómo hacer que el contador de los if funcionen cuando no sea letras, números o espacios. Este es el código:
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
cout << "Introduzca el nombre del videojuego" << endl;
		getline(cin, videojuegos[i].nombrevideojuego);
 
		//INICIA LA VALIDACION DEL NOMBRE DEL VIDEOJUEGO
 
		longitudnombre = videojuegos[i].nombrevideojuego.length();
 
		cout << longitudnombre;
 
		for (int k = 0; k < longitudnombre; k++) {
 
			if(!(isalnum(videojuegos[i].nombrevideojuego[k]))){
				contadornombre++;
			}
 
			if (!(isspace(videojuegos[i].nombrevideojuego[k]))) {
				contadornombre++;
			}
		}
 
		while (contadornombre > 0) {
			system("CLS");
			cout << "El nombre del videojuego tiene "<<contadornombre<< " caracteres diferentes de letras o numeros" << endl;
			cout << "Ingrese el nombre correctamente" << endl;
			getline(cin, videojuegos[i].nombrevideojuego);
 
			contadornombre = 0;
 
			longitudnombre = videojuegos[i].nombrevideojuego.length();
 
			cout << longitudnombre;
 
			for (int k = 0; k < longitudnombre; k++) {
 
				if (!(isalnum(videojuegos[i].nombrevideojuego[k]))) {
					contadornombre++;
				}
 
				if (!(isspace(videojuegos[i].nombrevideojuego[k]))) {
					contadornombre++;
				}
			}
		}
 
		//TERMINA LA VALIDACION DEL NOMBRE DEL VIDEOJUEGO
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

¿Cómo se usa el isalnum?

Publicado por Efren (16 intervenciones) el 12/08/2020 07:36:13
Hice otra versión e igual no funciona. Tengo entendido que el isalnum y el isspace regresan un 0 si no son numeros o letras, o espacios respectivamente, entonces le indiqué que aumentara el contador si las otras variables a las que igualé a isalnum y isspace son igual a 0, pero no, no funciona. Intenté hacer una función que aparece en youtube pero no puedo pasar un arreglo de estructura como parametro.

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
cout << "Introduzca el nombre del videojuego" << endl;
getline(cin, videojuegos[i].nombrevideojuego);
 
//INICIA LA VALIDACION DEL NOMBRE DEL VIDEOJUEGO
 
longitudnombre = videojuegos[i].nombrevideojuego.length();
 
cout << longitudnombre;
 
for (int k = 0; k < longitudnombre; k++) {
 
    numoletra = isalnum(videojuegos[i].nombrevideojuego[k]);
    espacio = isspace(videojuegos[i].nombrevideojuego[k]);
 
    if(numoletra==0){
        contadornombre++;
    }
    else {
        if (espacio == 0) {
            contadornombre++;
        }
    }
}
 
while (contadornombre > 0) {
    system("CLS");
    cout << "El nombre del videojuego tiene "<<contadornombre<< " caracteres diferentes de letras o numeros" << endl;
    cout << "Ingrese el nombre correctamente" << endl;
    getline(cin, videojuegos[i].nombrevideojuego);
 
    contadornombre = 0;
 
    longitudnombre = videojuegos[i].nombrevideojuego.length();
 
    cout << longitudnombre;
 
    for (int k = 0; k < longitudnombre; k++) {
 
        numoletra = isalnum(videojuegos[i].nombrevideojuego[k]);
        espacio = isspace(videojuegos[i].nombrevideojuego[k]);
 
        if (numoletra == 0) {
            contadornombre++;
        }
        else {
            if (espacio == 0) {
                contadornombre++;
            }
        }
    }
}
 
//TERMINA LA VALIDACION DEL NOMBRE DEL VIDEOJUEGO
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

¿Cómo se usa el isalnum?

Publicado por Efren (16 intervenciones) el 12/08/2020 07:41:41
Creen que el que está causando problemas es el isspace? Por ahí leí que decía que detecta espacios O SIMILARES, y ese similares me da mala espina
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

¿Cómo se usa el isalnum?

Publicado por Nacho (181 intervenciones) el 12/08/2020 16:30:26
¿Esto quieres hacer?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void ver()
{
    int contadornombre = 0;
    do
    {
        char nombrevideojuego[50];
        cout << "Introduzca el nombre del videojuego" << endl;
        fgets(nombrevideojuego, 50, stdin);
        //INICIA LA VALIDACION DEL NOMBRE DEL VIDEOJUEGO
        int longitudnombre = strlen(nombrevideojuego) - 1;
        cout << longitudnombre;
        for (int k = 0; k < longitudnombre; k++) {
            bool numoletra = isalnum(nombrevideojuego[k]);
            bool espacio = isspace(nombrevideojuego[k]);
            if (!(numoletra || espacio)) contadornombre++;
        }
        // imprimir cuál es el error
    } while (contadornombre != 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

¿Cómo se usa el isalnum?

Publicado por Efren (16 intervenciones) el 12/08/2020 20:04:43
SI! Eso es justo lo que quería hacer, muchisimas gracias
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