• Sábado 14 de Diciembre de 2024, 21:41

Autor Tema:  toma de datos  (Leído 2059 veces)

ra_castilloq

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
toma de datos
« en: Sábado 14 de Febrero de 2009, 22:33 »
0
problema de toma de datos
en mi programa q es una clase q hace todo
tngo el problema q cuando kiero ingresar linas de texto
los espacios hacen que el programa se salte lineas de codigo
necesito saber si es posible en c++
q el programa capture todos los datos incluyendo los espacios
aki les pongo el codigo
gracias x su tiempo aprecieria sus respuestas lo mas pronto posible


#include<iostream.h>
#include<conio.h>

class Planilla{
    //VARIABLES QUE SE VAN A INGRESAR
    char nombres[25]; //donde se guardaran los nombres
    char apellidos[25]; //donde se guardaran los apellidos
    char direccion[100]; //donde se guardara la direccion
    char dui[]; //string xq no se van a realizar operaciones con el
    char nit[]; //string tambien x que no se van a realizar operaciones con el
    char edad[]; //donde se guardara la edad del empleado
    double sueldo; //donde se va a guardar el suelo del empleado
    //VARIABLES QUE SE VAN A CALCULAR
    double renta; //donde se guardara el descuento de la renta
    double isss; //donde se guardara el descuento del isss
    double afp; //donde se guardara el descuento del afp
    double neto; //donde se guardara el sueldo neto
    double descuentos; //donde se guardara la suma de todos los descuentos
    public:
    //CONSTRUCTOR Y DESTRUCTOR
    Planilla(); //constructor
    ~Planilla(); //destructor
    //CALCULOS DE DESCUENTOS
    void calcular_renta(); //donde se calculara la renta
    void calcular_isss(); //donde se calculara el seguro social
    void calcular_afp(); //donde se calculara el AFP
    void calcular_neto(); //donde se calculara el sueldo neto
    void mostrar_info(); //funcion que mostrara la toda la informacion
    };
   
    Planilla::Planilla(){  //ingreso de datos
        cout<<"Informacion basica empleados ACME"<<endl;
        cout<<endl;
        cout<<"Por favor ingrese los datos que se solicitaran"<<endl;
        cout<<"Nombres: ";
        cin>>nombres;
        cout<<"Apellidos: ";
        cin>>apellidos;
        cout<<endl;
        cout<<"Direccion: ";
        cin>>direccion;
        cout<<endl;
        cout<<"Numero de DUI: ";
        cin>>dui;
        cout<<endl;
        cout<<"Numero de NIT: ";
        cin>>nit;
        cout<<endl;
        cout<<"Edad ";
        cin>>edad;
        cout<<endl;
        cout<<"Sueldo: ";
        cin>>sueldo;
        }
   
    Planilla::~Planilla(){ //destructor
        getch();
        }
       
    void Planilla::calcular_renta(){ //calculo de la renta
        renta=(sueldo*0.15);
        }
       
    void Planilla::calcular_afp(){ //calculo del afp
        afp=(sueldo*0.10);
        }
       
    void Planilla::calcular_isss(){ //calculo del isss
        isss=(sueldo*0.10);
        }
   
    void Planilla::calcular_neto(){ //calculo sueldo neto
        descuentos=renta+afp+isss;
        neto=sueldo-descuentos;
        }
   
    void Planilla::mostrar_info(){ //funcion para mostrar info basica y calculos
        cout<<"Calculando los descuentos......"<<endl;
        getch();
        cout<<"Nombre del empleado: "<<nombres<<" "<<apellidos<<endl;
        cout<<"Direccion: "<<direccion<<endl;
        cout<<"DUI: "<<dui<<endl;
        cout<<"Edad: "<<edad<<endl;
        cout<<"Sueldo: "<<sueldo<<endl;
        cout<<"Descuento de la renta: "<<renta<<endl;
        cout<<"Descuento del Seguro Social: "<<isss<<endl;
        cout<<"Descuento del AFP: "<<afp<<endl;
        cout<<"Sueldo neto: "<<neto<<endl;
        }
       
    main(){
        Planilla objeto01=Planilla();
        objeto01.calcular_renta();
        objeto01.calcular_afp();
        objeto01.calcular_isss();
        objeto01.calcular_neto();
        objeto01.mostrar_info();
        }

betopin

  • Miembro activo
  • **
  • Mensajes: 93
  • Nacionalidad: co
    • Ver Perfil
    • http://www.programasenc.blogspot.com
Re: toma de datos
« Respuesta #1 en: Sábado 14 de Febrero de 2009, 22:44 »
0
Cuando vayas a capturar cadenas de caracteres utiliza gets()...el te tolera espacios y es ANSI C

Saludos

ra_castilloq

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: toma de datos
« Respuesta #2 en: Sábado 14 de Febrero de 2009, 22:46 »
0
perdon, soy nuevo en esto de c++ y nose como es la sintaxis del gets()
me podrias decir como por favor
gracias

shakka

  • Miembro HIPER activo
  • ****
  • Mensajes: 679
  • Nacionalidad: cr
    • Ver Perfil
    • http://mbrenes.com
Re: toma de datos
« Respuesta #3 en: Domingo 15 de Febrero de 2009, 03:29 »
0
No es recomendable el uso de gets(), y tampoco mezclar C con C++ innecesariamente, teniendo clases en C++ para el manejo de streams.

Puedes usar el metodo getline de cin:

ejemplo:

Código: C++
  1. cin.getline(variable, 20);
  2.  

Por defecto captura datos hasta que encuentre el caracterer de fin de linea, para cambiar ese comportamiento puedes pasarle un 3er parametro para indicarle ese delimitador.

http://www.cplusplus.com/reference/string/getline.html

Por cierto evita usar conio.h, te mal acostumbraras, ya que veo que solo la usas por la funcion getch(), lee mas sobre como hacer eso en C++.

betopin

  • Miembro activo
  • **
  • Mensajes: 93
  • Nacionalidad: co
    • Ver Perfil
    • http://www.programasenc.blogspot.com
Re: toma de datos
« Respuesta #4 en: Domingo 15 de Febrero de 2009, 17:11 »
0
Bueno...yo no considero que sea un error...total, pienso que c++ y c son partes de un mismo todo y mas si eres principiante. Creeria que es mas aconsejable a que domine bien c antes de que entre a c++. El uso de gets implica el uso de la libreria ANSI C stdio.h....si deseas capturar una cadena...esto te puede servir

Código: C
  1. #include <stdio.h>
  2. int main()
  3. {
  4.  char cadena[100];
  5.  gets(cadena);
  6.  return 0;
  7. }
  8.  

Importante...debes tener presente que el tamaño de la cadena ingresada no sea superior al tamaño del arreglo.

Saludos

Cita de: "ra_castilloq"
perdon, soy nuevo en esto de c++ y nose como es la sintaxis del gets()
me podrias decir como por favor
gracias

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: toma de datos
« Respuesta #5 en: Domingo 15 de Febrero de 2009, 22:14 »
0
Cita de: "betopin"
total, pienso que c++ y c son partes de un mismo todo y mas si eres principiante
Para nada. Al revés, si eres principiantes debes distinguir entre uno y otro e intentar no mezclarlos. La cuestión trata sobre todo de si vas a usar programación estructurada u orientada a objetos, dos formas de pensar válidas pero diferentes. Si mezclas, te verás hecho un lío en el diseño.

Salud.