Ayuda para corregir codigo C++

Iniciado por KroVarCK, 21 Abril 2017, 04:45 AM

0 Miembros y 1 Visitante están viendo este tema.

KroVarCK

Buenas, soy estudiante de ingenieria de primero año y soy medio novato con los codigos. Y queria saber si me pueden ayudar a encontrar el error en el problema.
Me piden hacer un contador de sueldos y que cuando coloque el numero 0 se corte el programa. RESULTA QUE CUANDO COLOCO EL SEGUNDO NUMERO != 0 , SE ME CORTA EL PROGRAMA. Actualmente estoy usando el Eclipse como editor y compilador.
Olvide aclarar que no puedo usar switches

Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;

int main() {
cout << "Ingrese valores para contar cuanto ganan los empleado, para finalizar coloque 0" << endl;
int k;
int valor2,valor3,valor4,valor5;
valor2=0;
valor3=0;
valor4=0;
valor5=0;
cin >>k;
while (k!=0){
  if (k>0 && k<2000)
{     valor2++;
}
  else if (k>=2000 && k<3000)
{
  valor3++;
}
  else if (k>=3000 && k<5000)
 {    valor4++;
}
  else if (k>=5000)
 {    valor5++;
     cin >> k;}

     cout << "Menos de 2000: " << valor2 << endl;
     cout << "Entre 2000 y 3000: " << valor3 << endl;
     cout << "Entre 4000 y 5000: " << valor4 << endl;
     cout << "Mayor a 5000: " << valor5 << endl;



return 0;
}
}





· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro
-Engel Lex

ivancea96

En primer lugar, tienes un return 0; dentro dle while. Cuando llegue a ese punto, se va a terminar la ejecución.

Y luego, bueno, el segundo cin>>k está dentro del if, por tanto, solo llegará a pedir otro número si se cumple esa condición.

MAFUS

ivancea69 lo ha dicho todo.
Para mí que te has liado por tener mal formateado el código. ¿Es feo, verdad?
Sangra (usa sangrías) el código, coloca las instrucciones del mismo nivel en la misma sangría, las de nivel más profundo en un sangrado de mayor nivel.
Mira, tu mismo código con los mismos errores pero bien formateado. ¿A que ahora se ven?
Código (c++) [Seleccionar]
#include <iostream>

using namespace std;

int main() {
   cout << "Ingrese valores para contar cuanto ganan los empleado, para finalizar coloque 0" << endl;

   int k;
   int valor2,valor3,valor4,valor5;
   
   valor2=0;
   valor3=0;
   valor4=0;
   valor5=0;

   cin >> k;

   while (k!=0) {
       if (k>0 && k<2000) {
           valor2++;
       }
       else if (k>=2000 && k<3000) {
           valor3++;
       }
       else if (k>=3000 && k<5000) {
           valor4++;
       }
       else if (k>=5000) {
           valor5++;
           cin >> k;
       }
       
       cout << "Menos de 2000: " << valor2 << endl;
       cout << "Entre 2000 y 3000: " << valor3 << endl;
       cout << "Entre 4000 y 5000: " << valor4 << endl;
       cout << "Mayor a 5000: " << valor5 << endl;
       
       return 0;
   }
}

KroVarCK

Cita de: ivancea96 en 21 Abril 2017, 18:20 PM
En primer lugar, tienes un return 0; dentro dle while. Cuando llegue a ese punto, se va a terminar la ejecución.

Y luego, bueno, el segundo cin>>k está dentro del if, por tanto, solo llegará a pedir otro número si se cumple esa condición.

Buenas ivancea, corregí lo que me dijiste sin embargo el programa no me corta. Saludos