Problema en Algoritmo Basico de Ejercicio en C++

Iniciado por carlosjazzc1, 30 Mayo 2016, 19:21 PM

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

carlosjazzc1

CitarAl llegar a la parte de el Nombre del Usuario cin.getline(nombre, 30) se salta este y no me permite ingresar la cadena de texto. Y pasa directamente al calculo de las horas empleadas


#include<iostream>
#include<string.h>
#include <stdlib.h>
#include <conio.h>
using namespace std;


   //SUJETOPROFESION
int horas_variable,num_empleados[10], z, i, empleo;
float sueldo1;
char obre, arq, limp;
char nombre[30];
string tip_empl;
   //PAGA
int obre_paga40 = 20;
int obre_pagaextra = 25;
int limpiador_paga20 = 15;
int limpiador_pagaextra = 25;
int ing_paga40 = 60;
int ing_pagaextra = 85;

int main(){
cout<<"*Calculo de pago de Trabajador*\n\n";
cout<<"*******************************";
cout<<("\nArea de el Empleado: ");
cout<<("\n 1. Obrero");
cout<<("\n 2 Limpiador");
cout<<("\n 3. Ingenierio\n\t");
cout<<"\tEsperando dato. . .\t";
cin>>empleo;

   switch(empleo)
   { case 1:
   cout<<endl<<"Cantidad de obreros.\t"<<endl;
   cin>>num_empleados[z];
   for(i=0;i<num_empleados[z];i++){
           cout<<endl<<"Usuario del obrero.\t"<<endl;
           cin.getline(nombre,30);
           cout<<endl<<"Usuario: "<<nombre<<endl;
           cout<<endl<<"Cuantas horas empleadas?.\t"<<endl;
           cin>>horas_variable;
           if(horas_variable<=40){
               sueldo1=horas_variable*obre_paga40;
               cout<<"El sueldo relativo es:"<<" "<<sueldo1<<"Bolivares Fuertes"<<endl;}
               if(horas_variable>40){
                   sueldo1=800+(25*(horas_variable-40));
                   cout<<"El sueldo relativo es:"<<" "<<sueldo1<<"Bolivares Fuertes"<<endl;}
                   getch();
                   system("cls" );


               }
   }
}



Me gustaria saber por que pasa esto, que estoy ignorando?

MAFUS

Te puede quedar el '\n' en el buffer stdin y es lo que recoge getline.

carlosjazzc1