Advertisement
juanjo12x

GG_2

Sep 3rd, 2014
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.64 KB | None | 0 0
  1. /*
  2.  * File:   main.cpp
  3.  * Author: MAGUI
  4.  *
  5.  * Created on 2 de septiembre de 2014, 09:45 PM
  6.  */
  7.  
  8. #include <cstdlib>
  9. #include <cstdio>
  10. #define maxc 60
  11. #define maxli 79
  12. using namespace std;
  13.  
  14. typedef struct{
  15.     int dd;
  16.     int mm;
  17.     int aa;
  18. }fecha;
  19. bool esta_rango(fecha source,fecha f1,fecha f2){
  20.     int d;
  21.     if(source.aa>=f1.aa){
  22.         if(source.aa==f1.aa){
  23.             if(source.mm>=f1.mm){
  24.                 if(source.mm==f1.mm){
  25.                     if(source.dd>=f1.dd){
  26.                         d=1;
  27.                     }else return false;
  28.                 }else{
  29.                     d=1;
  30.                 }
  31.             }else return false;
  32.         }else{
  33.             d=1;
  34.         }
  35.     }else return false;
  36.     if(f2.aa>=source.aa){
  37.         if(f2.aa==source.aa){
  38.             if(f2.mm>=source.mm){
  39.                 if(source.mm==f2.mm){
  40.                     if(f2.dd>=source.dd){
  41.                         d=1;
  42.                     }else return false;
  43.                 }else{
  44.                     d=1;
  45.                 }
  46.             }else return false;
  47.         }else{
  48.             d=1;
  49.         }
  50.     }else return false;
  51.     return true;
  52. }
  53. bool factura_valida(int f1,int f2,int cand){
  54.     if(cand>=f1 && cand<=f2) return true;
  55.     else return false;
  56. }
  57. int main(int argc, char** argv) {
  58.     fecha f;
  59.     int opt,nfact,nfact1,num,lect,cant,cont,c1;
  60.     int contf=0;
  61.     int fl1,fl2;
  62.     int m1,m2;
  63.     int tot1,tot2;
  64.     float pu,total,totf;
  65.     fecha fant;
  66.     char c,c2;
  67.     bool primera=true;fecha fi,ff;
  68.     total=0.0;
  69.     scanf("%d",&fl1);
  70.     scanf("%d",&fl2);
  71.     scanf("%d/%d/%d",&fi.dd,&fi.mm,&fi.aa);
  72.     scanf("%d/%d/%d",&ff.dd,&ff.mm,&ff.aa);
  73.     printf("Rango de facturas: del %d  al %d\n",fl1,fl2);
  74.     printf("Rango de fechas:  desde el %d/%d/%d al %d/%d/%d\n",fi.dd,fi.mm,fi.aa,
  75.             ff.dd,ff.mm,ff.aa);
  76.     m1=0;tot1=0.0;m2=0;tot2=100000.0;totf=0.0;
  77.     while(true){
  78.        
  79.         opt=scanf("%d/%d/%d",&f.dd,&f.mm,&f.aa);
  80.        
  81.         if(opt==3 ){//encontró fecha
  82.             if(!primera && esta_rango(fant,fi,ff)&& factura_valida(fl1,fl2,nfact1)){
  83.                
  84.                 for(int i=0;i<maxli;i++){
  85.                 printf("-");
  86.                 }
  87.                 printf("\n");printf("Total facturado");
  88.                 //for(int i=0;i<59;i++) putchar(' ');                
  89.                 printf("%63.3f\n",total);printf("\n");
  90.                 totf+=total;
  91.                 if(tot1<total){
  92.                     tot1=total;m1=nfact1;}
  93.                 else if(total<tot2){
  94.                     tot2=total;m2=nfact1;
  95.                 }
  96.                
  97.             }
  98.             primera=false;total=0;
  99.             //leo factura y ignoro
  100.             scanf("%d%*d",&nfact1);
  101.             if(esta_rango(f,fi,ff)&& factura_valida(fl1,fl2,nfact1)){
  102.                 contf++;
  103.                 printf("Factura No. %d\n",nfact1);
  104.                 cont=0;
  105.                printf("Cliente: ");
  106.             }
  107.            
  108.            while((c=getchar())!=' ' && c!='\t'){
  109.               if(esta_rango(f,fi,ff)&& factura_valida(fl1,fl2,nfact1)){
  110.                    putchar(c);cont++;
  111.               }              
  112.            }
  113.            //cuento caracteres para la tabulacion
  114.            cont=maxc-cont;c1=0;
  115.             if(esta_rango(f,fi,ff)&& factura_valida(fl1,fl2,nfact1)){
  116.                    putchar(c);cont++;
  117.               }
  118.            if(esta_rango(f,fi,ff)&& factura_valida(fl1,fl2,nfact1)){
  119.                 while(c1<=cont){
  120.                putchar(' ');c1++;
  121.            }
  122.            
  123.                 printf("Fecha: %d/%d/%d\n",f.dd,f.mm,f.aa);
  124.            for(int i=0;i<maxli;i++){
  125.                printf("-");
  126.            }
  127.            printf("\n");
  128.            printf("CODIGO     DESCRIPCION");
  129.            for(int i=0;i<33;i++) putchar(' ');
  130.            printf("CANTIDAD  P.U  SUBTOTAL\n");
  131.            for(int i=0;i<maxli;i++){
  132.                printf("-");
  133.            }
  134.            printf("\n");
  135.            }
  136.            fant=f;
  137.         }else if(opt==1){
  138.            
  139.             cant=f.dd;//he leido la cantidad de producto
  140.              //Leo espacios en blanco y el primer caracter del codigo del producto
  141.             while (1){
  142.               scanf("%c",&c);
  143.              
  144.               if (c!=' ') {
  145.                   if(esta_rango(fant,fi,ff)&& factura_valida(fl1,fl2,nfact1)){
  146.                   printf("%c",c);}
  147.                break;
  148.              }
  149.             }
  150.            //Leo lo que queda del codigo del producto
  151.            scanf("%c%d",&c2,&num);
  152.            if(esta_rango(fant,fi,ff)&& factura_valida(fl1,fl2,nfact1)) {printf("%c%d   ",c2,num);}
  153.            //hasta aqui he impreso el codigo del producto
  154.             //Leo lo que queda de la descripcion hasta el espacio en blanco
  155.         cont=0;
  156.         while (1){
  157.             while (1){
  158.                 scanf("%c",&c);
  159.                 if(esta_rango(fant,fi,ff)&& factura_valida(fl1,fl2,nfact1)) {printf("%c",c);}
  160.                 cont++;
  161.                 if (c==' ')break;
  162.             }
  163.             lect=scanf("%f",&pu);
  164.             if (lect==1) break;
  165.          }
  166.             cont=maxli-cont-34;
  167.             if(esta_rango(fant,fi,ff)&& factura_valida(fl1,fl2,nfact1)){
  168.             for(int i=0;i<cont;i++) putchar(' ');  
  169.             printf("%5d",cant);
  170.             printf("%10.2f",pu);
  171.             printf("%10.2f\n",pu*cant);
  172.             total+=(pu*cant);
  173.             }
  174.            
  175.            
  176.         }else if(opt==EOF) {
  177.            
  178.             if(esta_rango(f,fi,ff)&& factura_valida(fl1,fl2,nfact1)){
  179.                  for(int i=0;i<maxli;i++){
  180.                 printf("-");
  181.                 }
  182.                 printf("\n");printf("Total facturado");
  183.                 //for(int i=0;i<59;i++) putchar(' ');                
  184.                 printf("%63.3f\n",total);printf("\n");
  185.                
  186.                 totf+=total;
  187.                
  188.             }
  189.             printf("Resumen:\n");
  190.            
  191.                 float prom=totf/contf;
  192.                 if(tot1<total){
  193.                     tot1=total;m1=nfact1;}
  194.                 if(total<tot2){
  195.                     tot2=total;m2=nfact1;
  196.                 }
  197.                 printf("Total de facturas en los rangos:%d\n",contf);
  198.                 printf("Total facturado para los rangos:%7.2f\n",totf);
  199.                 printf("Promedio facturado: %.2f\n",prom);
  200.                 printf("Numero de factura con mayor facturación: %d",m1);
  201.                 printf("  Total facturado %3.2f\n",tot1);
  202.                 printf("Numero de factura con menor facturación: %d",m2);
  203.                 printf("  Total facturado %3.2f\n",tot2);
  204.             break;
  205.         }
  206.      }
  207. return 0;
  208.  
  209. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement