Dev - C++ - Introducir un precio con decimales

 
Vista:

Introducir un precio con decimales

Publicado por Paco (3 intervenciones) el 12/08/2020 21:54:02
Buen día. Estoy haciendo un programa en el que debo ingresar el precio de un producto. El precio debe imprimirse con 2 decimales. Si el usuario no ingresa el punto y los dos decimales, yo debo ingresarselos (creo que es con la función de concatenar cadenas), pero si el usuario si ingresa decimales, ¿cómo puedo validar que solo sea 1 punto y no más de 2 decimales? Gracias
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

Introducir un precio con decimales

Publicado por Paco (16 intervenciones) el 13/08/2020 23:34:13
Ya pude hacerlo compañeros, fue algo dificil pero lo logré. Si alguien quiere verlo responda a esto y se los enseño
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
Imágen de perfil de joel
Val: 66
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Introducir un precio con decimales

Publicado por joel (23 intervenciones) el 14/08/2020 09:01:11
Hola Paco, agradecería si nos puedes compartir como lo has solucionado...
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

Introducir un precio con decimales

Publicado por Paco (3 intervenciones) el 14/08/2020 18:45:15
Aquí está. Si el usuario quiere ingresar decimales a su precio, deben ser dos, no una ni más de dos. Si el usuario no quiere agregar decimales a su precio puede poner .00 o bien no poner nada y se agrega automáticamente.
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
do {
    system("CLS");
    contadorprecio = 0;
    cout << "Introduzca el precio correctamente" << endl;
    cout << "Si desea agregar decimales, deben ser dos" << endl;
    cout<<"Si no desea agregar decimales puede agregar .00 al final del precio o se agrega automaticamente"<<endl;
    getline(cin, videojuegos[i].precio);
 
    longitudprecio = videojuegos[i].precio.length();
    posicionpunto = longitudprecio - 3;
 
    if ((videojuegos[i].precio[posicionpunto]) == '.') {  //Si el punto está en la posicion correcta (con dos decimales enfrente) va a validar que los demas caracteres sean numeros
        for (int k = 0; k < posicionpunto; k++) {
            if (videojuegos[i].precio[k] < '0' || videojuegos[i].precio[k]>'9') {
                contadorprecio++;
            }
        }
        for (int k = posicionpunto + 1; k < longitudprecio; k++) {
            if (videojuegos[i].precio[k] < '0' || videojuegos[i].precio[k]>'9') {
                contadorprecio++;
            }
        }
    }
    else {  //Si el punto no está en la posicion correcta va a validar si todos los caracteres son numeros
        for (int k = 0; k < longitudprecio; k++) {
            if (videojuegos[i].precio[k] < '0' || videojuegos[i].precio[k]>'9') {
                contadorprecio++;
            }
        }
    }
} while (contadorprecio > 0);
 
longitudprecio = videojuegos[i].precio.length();
posicionpunto = longitudprecio - 3;
 
if ((videojuegos[i].precio[posicionpunto]) != '.') { //Como ya se validó que el usuario no agregó decimales y también se validó que todos caracteres son numeros, para evitar
    videojuegos[i].precio = videojuegos[i].precio + ".00";             //que  si el usuario agregó decimales tambien se le agregue .00, solo se agregará si en la posicion donde debe ir el punto, no está
}
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
Imágen de perfil de joel
Val: 66
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Introducir un precio con decimales

Publicado por joel (23 intervenciones) el 15/08/2020 09:48:38
Muchas 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