Programación General > C/C++
funcion de entrada que no se cuelgue
(1/1)
luchojimenez:
estoy trabajndo en un codigo con vectores , donde tengo que introducir un valor tipo cadena , el problema es que la primera iteracion del ciclo for anda bien , pero cuando voy a introducir la cadena de caracteres en la segunda iteracion del ciclo for, salta en esta parte , no dejandome ingresar los valores tipo cadena de caracteres mejor les pongo el codigo y juzguen ud mismos;
--- Código: C++ --- #include<iostream>#include<conio2.h>#include<cstdio>#include<string.h> using namespace std;void ingresar();int l,j;struct empleado{char nombre[25];int up[30];}p[30]; int main(){ for(j=1;j<=30;j++){system("cls");ingresar();}system("pause");return 0;} void ingresar(){int i=0,k,n=0;cout<<"nningrese su nombre: ";cin.getline(p[j].nombre,70);//me gustaria reemplazar esta funcion por otra //que se funcional en todo el ciclo forwhile(i<5){i=i+1;cout<<"ningrese las unidades producidas/dias"<<endl;cin>>p[j].up[i]; n=n + p[j].up[i]; }system("cls");k=n/5;cout<<" producion total mes/empleado: "<<n<<endl;cout<<"promedio produccion dia/empleado: "<<k<<endl;system("pause");}
nagitarami:
--- Código: C++ ---#include<iostream>//#include<conio.h>//#include<cstdio>//#include<string.h> using namespace std; void ingresar();int j;struct empleado{ char nombre[25]; int up[30];}p[3]; int main(){ for(j=0;j<3;j++) { //system("cls"); ingresar(); } system("pause"); return 0;} void ingresar(){ int i=0,k = 0,n=0,s=0; s =j; cout<<"nningrese su nombre: "<<j<<" "; cin.getline(p[s].nombre,25);//me gustaria reemplazar esta funcion por otra //que se funcional en todo el ciclo for while(i<5) { cout<<"ningrese las unidades producidas/dias"<<endl; cin>>p[s].up[i]; n=n + p[s].up[i]; i++; } //system("cls"); k=n/3; cout<<"el nombre es: "<<p[s].nombre<<endl; cout<<" producion total mes/empleado: "<<n<<endl; cout<<"promedio produccion dia/empleado: "<<k<<endl; cin.ignore(); //system("pause");}
Bueno Aqui esta el codigo, para comenzar, debes cuidar bien el tamaño de la cadena, en este caso 25 caracteres, debes cuidar las refencias de las variables globales y las locales, es ineficinete y mala practica utilizar variables globales x ejemplo int j; sobre una funcion, es recomendable usarlo dentro de la funcion ingresar(), la buena programacion se trata q las funciones sean reutilizables en otros codigos, y en este caso no lo es... bueno y por ultimo despues de cada ciclo cuando llamas cin.getline se lee una cadena o string, y qda algunos caracteres en memoria como ''' o 'n' y para limpiarlo se usa x ejemplo un cin.ignore() al final para asegurar q volvera a leer un nuevo contenido.... cualquier otra cosa me preguntas
Navegación
Ir a la versión completa