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

[0] Índice de Mensajes

Ir a la versión completa