es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

C++ ¿Por qué obtengo errores al usar el operador ternario?

Aquí está mi código y simplemente no puedo encontrar qué está mal.
¡Agradecería mucho cualquier ayuda!

#include <iostream>
using namespace std;
int main()
{
    int x, I = 2;

    for (x = 100; x <= 500; x++)
    {
        (x % 3 == 0 && x % 5 == 0) ? (cout << x << endl) : (I = 2);
    }

    return 0;
}

Errores:

enter image description here

Actualización:
Sé que podría usar if y else, pero solo me dio curiosidad. Por cierto, este programa supuestamente encuentra todos los números divisibles por 3 y 5 del 100 al 500.
Además, si ejecuto:

#include <iostream>
using namespace std;
int main()
{
    int x, I = 2;

    for (x = 100; x <= 500; x++)
    {
        ((x % 3 == 0) && (x % 5 == 0)) ? (cout << x << endl) : (cout << "algo");
    }

    return 0;
}

Funciona bien, así que supongo que el problema estaba en la segunda expresión, ¿hay alguna forma de reemplazarla con algo que no haga nada (ese era el propósito de I = 2)?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema con el código se encuentra en la sintaxis del operador ternario. El operador espera que se evalúen dos expresiones basadas en la condición. En este caso, la segunda expresión solo establece el valor de I en 2, lo cual no hace nada en el programa. Para solucionar esto, simplemente podrías eliminar la segunda expresión y dejarla en blanco de la siguiente manera:

    (x % 3 == 0 && x % 5 == 0)? (cout << x << endl) : ();
    

    Esto indica al programa que no evalúe nada si la condición es falsa. Alternativamente, podrías utilizar una declaración if-else en lugar del operador ternario para una mejor legibilidad:

    if (x % 3 == 0 && x % 5 == 0) {
        cout << x << endl;
    } else {
        I = 2;
    }
    

    Esto lograría el mismo resultado de una manera más clara.

Comments are closed.