karlangadas

Facturas 2

Apr 6th, 2017
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.81 KB | None | 0 0
  1. #include <cstdio>
  2. #include <iostream>
  3. #include <limits.h>
  4. #define linea 100
  5.  
  6. using namespace std;
  7.  
  8. char leerPalabra(){
  9.     char c;
  10.     scanf(" %c",&c);
  11.     while(c!=' ' && c!='\t' && (c!='\n') && c!=EOF){
  12.         putchar(c);
  13.         c=getchar();
  14.     }
  15.     return c;
  16. }
  17. char leerPalabrasinPrint(){
  18.     char c;
  19.     scanf(" %c",&c);
  20.     while(c!=' ' && c!='\t' && (c!='\n') && c!=EOF){
  21.         c=getchar();
  22.     }
  23.     return c;
  24. }
  25. int procesarPalabra(){
  26.     char c;
  27.     int count=0, fin;
  28.     fin = scanf(" %c", &c);
  29.     if (fin==EOF || fin==0) return 0;
  30.     while(c!=' ' && c!='\t'){
  31.         count++;
  32.         putchar(c);
  33.         c = getchar();
  34.     }
  35.     return count;
  36. }
  37. int procesarPalabrasinPrint(){
  38.     char c;
  39.     int count=0, fin;
  40.     fin = scanf(" %c", &c);
  41.     if (fin==EOF || fin==0) return 0;
  42.     while(c!=' ' && c!='\t'){
  43.         count++;
  44.         c = getchar();
  45.     }
  46.     return count;
  47. }
  48. void printCar(char c, int n,int m){
  49.     int i;
  50.     for (i=0;i<n;i++) putchar(c);
  51.     if(m==1)
  52.         printf("\n");
  53. }
  54.  
  55. int valido(int fecha,int fechaini,int fechafin,int nfact,int nfactini,int nfactfin){
  56.     return (fecha<=fechafin && fecha >=fechaini && nfact<=nfactfin && nfact>=nfactini);
  57. }
  58.  
  59. void LeerSinImprimir(){
  60.     char c;int dd,mm,aa;float precio;
  61.         scanf(" %c",&c);
  62.         while(c!=' '){
  63.             c=getchar();
  64.          }
  65.         while((scanf("%d/%d/%d",&dd,&mm,&aa))==1){
  66.             leerPalabrasinPrint();
  67.             while(scanf(" %f",&precio)==0){
  68.                 procesarPalabrasinPrint();
  69.             }
  70.         }  
  71. }
  72. int main() {
  73.     int cant,i,j,cont,dd,mm,aa,nfact;
  74.     char c;
  75.     float precio,total;
  76.     int totalfacturas=0,maxfact,minfact;
  77.     float totalfacturado=0,max=0,min=INT_MAX;
  78.     int fecha,fechaini=20091101,fechafin=20161129,nfactini=0,nfactfin= 175476;
  79.     scanf("%d/%d/%d",&dd,&mm,&aa);
  80.     while(scanf("%d",&nfact)!=EOF){
  81.         fecha=aa*10000+mm*100+dd;
  82.         if (!valido(fecha,fechaini,fechafin,nfact,nfactini,nfactfin)){
  83.             LeerSinImprimir();
  84.             continue;
  85.         }
  86.         totalfacturas++;
  87.         total=0;
  88.         printf("Factura No. %d\nCliente: ",nfact);
  89.         scanf(" %c",&c);
  90.         cont=0;
  91.         while(c!=' '){
  92.             cont++;
  93.             putchar(c);
  94.             c=getchar();
  95.         }
  96.         printCar(' ',linea-cont-26,0);
  97.         printf("Fecha: %02d/%02d/%4d\n",dd,mm,aa);
  98.         printCar('-',linea,1);
  99.         printf("CODIGO       DESCRIPCION                                   CANTIDAD           P.U.          SUBTOTAL\n");
  100.         printCar('-',linea,1);
  101.         while((scanf("%d/%d/%d",&dd,&mm,&aa))==1){
  102.             leerPalabra();printCar(' ',6,0);
  103.             cont=0;
  104.             while(scanf(" %f",&precio)==0){
  105.                 putchar(' ');
  106.                 cont++;
  107.                 cont+=procesarPalabra();
  108.             }
  109.             printCar(' ',50-cont,0);
  110.             printf("%2d           %7.2f         %9.2f\n",dd,precio,dd*precio);
  111.             total+=dd*precio;
  112.            
  113.         }
  114.         totalfacturado+=total;
  115.         if(total>=max){
  116.             max=total;
  117.             maxfact=nfact;
  118.         }
  119.         if(total<=min){
  120.             min=total;
  121.             minfact=nfact;
  122.         }
  123.        
  124.         printCar('-',linea,1);
  125.         printf("Total facturado");printCar(' ',linea-24,0);printf("%9.2f\n\n",total);  
  126.     }
  127.     printf("Resumen:\nTotal de facturas en los rangos: %d\nTotal facturado para los rangos: %.2f\nPromedio facturado: %.2f\n",totalfacturas,totalfacturado,totalfacturado/totalfacturas);
  128.     printf("Numero de factura con mayor facturacion: %d                             Total facturado: %8.2f\n",maxfact,max);
  129.     printf("Numero de factura con menor facturacion: %d                             Total facturado: %8.2f\n",minfact,min);
  130.    
  131.    
  132.    
  133.     return 0;
  134. }
Advertisement
Add Comment
Please, Sign In to add comment