Demo entry 2825607

ProyectNarnia

   

Submitted by anonymous on Oct 07, 2015 at 04:24
Language: C++. Code size: 5.3 kB.

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

struct empleados
{
       int dia;
       int horaentrada;
       int horasalida;
}emp;

int numempleado;
int numeromes;
int dias[12];

//declaracion de prototipos
int HHMMtoMM(int);
int MMtoHHMM(int);
void faltas();
string conversor(int);
int horastrabajadas(int,int);

int main()
{    
     
    dias[0]=31;
    dias[1]=28;
    dias[2]=31;
    dias[3]=30;
    dias[4]=31;
    dias[5]=30;
    dias[6]=31;
    dias[7]=31;
    dias[8]=30;
    dias[9]=31;
    dias[10]=30;
    dias[11]=31;
    
    FILE *EMP;
    FILE *TXT;
    char empleado[10]; 
    
    do{
   cout<<"ingrese numero de empleado: ";
    cin>>numempleado;
    if((numempleado<1000) || (numempleado>5000))
                          cout<<"numero de empleado incorrecto. ingrese un numero de empleado entre 1000 y 5000.\n";                         
    else{
         sprintf(empleado,"%d.dat", numempleado); //junta numempleado con la extension ".dat"
         EMP = fopen(empleado,"r");
         if(!EMP) cout<<"el numero de empleado ingresado no corresponde a un archivo valido\n"; 
    }        
    }while((numempleado<1000) || (numempleado>5000) || !EMP);
               
                
    do{
    cout<<"ingrese numero de mes: ";
    
    cin>>numeromes;
    if((numeromes<1) || (numeromes>12))
    cout<<"numero de mes erroneo. ingrese un numero entre 1 y 12";
    }while((numeromes<1) || (numeromes>12)); 
    cout<<"archivo creado";  
    int auxE;
    int auxS;
    int menor8=0;
    int mintrab[dias[numeromes]];
    int asistencia[dias[numeromes]];
    int mintrabtotal=0;
    int faltastot=0;
    int promMM=0;
    
    for(int i=0;i<dias[numeromes]+1;i++) {
            asistencia[i]=1;
            mintrab[i]=0; //el indice del vector asistencia es el vector dias
            }
    fread(&emp,sizeof(struct empleados),1,EMP);
    
    while(!feof(EMP))
    {
                     //FALTAS
                     asistencia[emp.dia]=0;
                     //faltas();
                     //DIAS TRABAJADOS -8HS
                     mintrab[emp.dia] = horastrabajadas(emp.horaentrada,emp.horasalida);
                     fread(&emp,sizeof(struct empleados),1,EMP);                              
    }
     TXT = fopen("trabajo.txt","w");
                         //FALTAS
                     fprintf(TXT,"dias de inasistencias\n");
                     for(int i=0;i<dias[numeromes];i++)
                     {
                             if(asistencia[i]==1)
                             {
                                                 //falta mandarla al archivo txt
                                                 faltastot+=1;
                                                fprintf(TXT,"%d\n",i+1);
                             }              
                     }  
                     
                     //HORAS TRABAJADAS -8 Y PROMEDIO
                     fprintf(TXT,"dias que trabajo menos de 8 horas\n");
                     for(int i=0;i<dias[numeromes];i++)
                     {
                             mintrabtotal+=mintrab[i];
                             if(mintrab[i]<480) //mandar al txt
                             {
                                 menor8++;
                                 fprintf(TXT,"%d\n",i+1);
                             }
                     }
                     
    promMM=mintrabtotal/(dias[numeromes]-faltastot);
    promMM=MMtoHHMM(promMM);
    mintrabtotal = MMtoHHMM(mintrabtotal);
                     //mandar a txt el promedio y las horas trabajadas totales
    string mt = conversor(mintrabtotal);
    string prm = conversor(promMM); //string que almacena el valor devuelto
    cout<<prm;
    
//convertir string en char[]
    char mts[6],prms[6];
    for(int i=0;i<6;i++){   
             mts[i]=mt[i];
             prms[i]=prm[i];
             }
   
//imprimir resultados en un txt
    fprintf(TXT," inasistencias   dias trab. menos de 8 hs   horas trabajadas totales   promedio de horas\n");
    fprintf(TXT," %10d %18d %25s %25s ",faltastot, menor8-faltastot,mts , prms);
    fclose(TXT);
    fclose(EMP);
    getch();
}

int HHMMtoMM(int HHMM)
{
    int HH, MM, minutos;
    int aux;
    HH = HHMM/100;
    aux = HH*100;
    MM = HHMM-aux;
    minutos = MM+(HH*60);    
    return minutos;
}

int MMtoHHMM(int minutos)
{
    int HH = minutos/60;
    int MM = minutos%60;
    int HHMM = (HH*100) + MM;
    return HHMM;
}

int horastrabajadas(int entrada, int salida)
{
     int aux = HHMMtoMM(salida) - HHMMtoMM(entrada);
     return aux;
}

int suma(int valor1, int valor2)
{
    int aux = HHMMtoMM(valor1) + HHMMtoMM(valor2);
    return MMtoHHMM(aux);
}

string conversor(int hora)
{
       
       int h = hora/100;
       int m = hora%100;
       string r = h+":"+m;
       stringstream stream,stream2; 

       stream << h; 
       stream2 << m;
       r = stream.str()+":"+stream2.str();
       cout<<r<<h<<"\n";
       getch();
       char mts[6];
       for(int i=0;i<6;i++) mts[i]=r[i];
       return mts;       
}

This snippet took 0.02 seconds to highlight.

Back to the Entry List or Home.

Delete this entry (admin only).