Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * File: main.cpp
- * Author: MAGUI
- *
- * Created on 2 de septiembre de 2014, 09:45 PM
- */
- #include <cstdlib>
- #include <cstdio>
- #define maxc 60
- #define maxli 79
- using namespace std;
- typedef struct{
- int dd;
- int mm;
- int aa;
- }fecha;
- bool esta_rango(fecha source,fecha f1,fecha f2){
- int d;
- if(source.aa>=f1.aa){
- if(source.aa==f1.aa){
- if(source.mm>=f1.mm){
- if(source.mm==f1.mm){
- if(source.dd>=f1.dd){
- d=1;
- }else return false;
- }else{
- d=1;
- }
- }else return false;
- }else{
- d=1;
- }
- }else return false;
- if(f2.aa>=source.aa){
- if(f2.aa==source.aa){
- if(f2.mm>=source.mm){
- if(source.mm==f2.mm){
- if(f2.dd>=source.dd){
- d=1;
- }else return false;
- }else{
- d=1;
- }
- }else return false;
- }else{
- d=1;
- }
- }else return false;
- return true;
- }
- bool factura_valida(int f1,int f2,int cand){
- if(cand>=f1 && cand<=f2) return true;
- else return false;
- }
- int main(int argc, char** argv) {
- fecha f;
- int opt,nfact,nfact1,num,lect,cant,cont,c1;
- int contf=0;
- int fl1,fl2;
- int m1,m2;
- int tot1,tot2;
- float pu,total,totf;
- fecha fant;
- char c,c2;
- bool primera=true;fecha fi,ff;
- total=0.0;
- scanf("%d",&fl1);
- scanf("%d",&fl2);
- scanf("%d/%d/%d",&fi.dd,&fi.mm,&fi.aa);
- scanf("%d/%d/%d",&ff.dd,&ff.mm,&ff.aa);
- printf("Rango de facturas: del %d al %d\n",fl1,fl2);
- printf("Rango de fechas: desde el %d/%d/%d al %d/%d/%d\n",fi.dd,fi.mm,fi.aa,
- ff.dd,ff.mm,ff.aa);
- m1=0;tot1=0.0;m2=0;tot2=100000.0;totf=0.0;
- while(true){
- opt=scanf("%d/%d/%d",&f.dd,&f.mm,&f.aa);
- if(opt==3 ){//encontró fecha
- if(!primera && esta_rango(fant,fi,ff)&& factura_valida(fl1,fl2,nfact1)){
- for(int i=0;i<maxli;i++){
- printf("-");
- }
- printf("\n");printf("Total facturado");
- //for(int i=0;i<59;i++) putchar(' ');
- printf("%63.3f\n",total);printf("\n");
- totf+=total;
- if(tot1<total){
- tot1=total;m1=nfact1;}
- else if(total<tot2){
- tot2=total;m2=nfact1;
- }
- }
- primera=false;total=0;
- //leo factura y ignoro
- scanf("%d%*d",&nfact1);
- if(esta_rango(f,fi,ff)&& factura_valida(fl1,fl2,nfact1)){
- contf++;
- printf("Factura No. %d\n",nfact1);
- cont=0;
- printf("Cliente: ");
- }
- while((c=getchar())!=' ' && c!='\t'){
- if(esta_rango(f,fi,ff)&& factura_valida(fl1,fl2,nfact1)){
- putchar(c);cont++;
- }
- }
- //cuento caracteres para la tabulacion
- cont=maxc-cont;c1=0;
- if(esta_rango(f,fi,ff)&& factura_valida(fl1,fl2,nfact1)){
- putchar(c);cont++;
- }
- if(esta_rango(f,fi,ff)&& factura_valida(fl1,fl2,nfact1)){
- while(c1<=cont){
- putchar(' ');c1++;
- }
- printf("Fecha: %d/%d/%d\n",f.dd,f.mm,f.aa);
- for(int i=0;i<maxli;i++){
- printf("-");
- }
- printf("\n");
- printf("CODIGO DESCRIPCION");
- for(int i=0;i<33;i++) putchar(' ');
- printf("CANTIDAD P.U SUBTOTAL\n");
- for(int i=0;i<maxli;i++){
- printf("-");
- }
- printf("\n");
- }
- fant=f;
- }else if(opt==1){
- cant=f.dd;//he leido la cantidad de producto
- //Leo espacios en blanco y el primer caracter del codigo del producto
- while (1){
- scanf("%c",&c);
- if (c!=' ') {
- if(esta_rango(fant,fi,ff)&& factura_valida(fl1,fl2,nfact1)){
- printf("%c",c);}
- break;
- }
- }
- //Leo lo que queda del codigo del producto
- scanf("%c%d",&c2,&num);
- if(esta_rango(fant,fi,ff)&& factura_valida(fl1,fl2,nfact1)) {printf("%c%d ",c2,num);}
- //hasta aqui he impreso el codigo del producto
- //Leo lo que queda de la descripcion hasta el espacio en blanco
- cont=0;
- while (1){
- while (1){
- scanf("%c",&c);
- if(esta_rango(fant,fi,ff)&& factura_valida(fl1,fl2,nfact1)) {printf("%c",c);}
- cont++;
- if (c==' ')break;
- }
- lect=scanf("%f",&pu);
- if (lect==1) break;
- }
- cont=maxli-cont-34;
- if(esta_rango(fant,fi,ff)&& factura_valida(fl1,fl2,nfact1)){
- for(int i=0;i<cont;i++) putchar(' ');
- printf("%5d",cant);
- printf("%10.2f",pu);
- printf("%10.2f\n",pu*cant);
- total+=(pu*cant);
- }
- }else if(opt==EOF) {
- if(esta_rango(f,fi,ff)&& factura_valida(fl1,fl2,nfact1)){
- for(int i=0;i<maxli;i++){
- printf("-");
- }
- printf("\n");printf("Total facturado");
- //for(int i=0;i<59;i++) putchar(' ');
- printf("%63.3f\n",total);printf("\n");
- totf+=total;
- }
- printf("Resumen:\n");
- float prom=totf/contf;
- if(tot1<total){
- tot1=total;m1=nfact1;}
- if(total<tot2){
- tot2=total;m2=nfact1;
- }
- printf("Total de facturas en los rangos:%d\n",contf);
- printf("Total facturado para los rangos:%7.2f\n",totf);
- printf("Promedio facturado: %.2f\n",prom);
- printf("Numero de factura con mayor facturación: %d",m1);
- printf(" Total facturado %3.2f\n",tot1);
- printf("Numero de factura con menor facturación: %d",m2);
- printf(" Total facturado %3.2f\n",tot2);
- break;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement