Traté de escribir un programa simple para verificar algunos números. Simplemente se niega a trabajar. Debajo del código de muestra:

#include <iostream>
using namespace std;

void checknumber(int i)
{
if(i>9)
{
    if(i%2==0) {cout<<"even"<<endl;}
    else {cout<< "odd" << endl;}
}
else
{
    switch(i)
    {
        case 1:
            cout<<"one"<<endl;
            break;
        case 2:
            cout<<"two"<<endl;
            break;
        case 3:
            cout<<"three"<<endl;
            break;
        case 4:
            cout<<"four"<<endl;
            break;
        case 5:
            cout<<"five"<<endl;
            break;
        case 6:
            cout<< "six"<<endl;
            break;
        case 7:
            cout<<"seven"<<endl;
            break;
        case 8:
            cout<<"eight"<<endl;
            break;
        case 9:
            cout<<"nine"<<endl;
            break;
        default:
            break;

    }
    }
}


int main() {

int a,b;
cin >> a >> b;
for (int i=a; i==b; i++)
{
    checknumber(i);
}

return 0;
}

La función funciona bien. Pero, el programa principal se niega a funcionar como esperaba.

Entrada: 3 10, salida: nada. Lo depuré y descubrí que tengo que inicializar a un número muy negativo alrededor de -27k.

0
hacaoideas 23 oct. 2017 a las 07:16

3 respuestas

La mejor respuesta

La parte de la condición del bucle no es correcta. Tratar:

for (int i=a; i<=b; i++)
              ^^^^

Si entiendo el problema correctamente, desea ejecutarlo de 3 a 10.

En su caso, for (int i=a; i==b; i++) la condición i==b se verificará solo una vez, por lo que el bucle se romperá en la primera condición donde (3 == 10) es falso . En el ejemplo de 3 a 10 se romperá en primera condición.

4
Manwal 23 oct. 2017 a las 04:28

Lo depuro y encuentro que se inicializa a un número negativo muy grande en lugar de 'a'.

Es probable que no haya depurado correctamente. En cualquier caso, este bucle:

for (int i=a; i==b; i++)

Solo se ejecutará una vez si a == b, y cero veces de lo contrario. Probablemente quieras:

for (int i=a; i!=b; i++)
1
Employed Russian 23 oct. 2017 a las 04:20
for (int i = a; i == b; i++)
{
    checknumber(i);
}

No puedes resolver este problema así. Hacer

for (int i = a; i <= b; i++)
    {
        checknumber(i);
    }

Entonces su problema se resolverá correctamente.

0
Muhammad Abbas 23 oct. 2017 a las 04:46