|
Mostrar Mensajes
|
Páginas: [1] 2 3
|
1
|
Programación / Programación C/C++ / Re: Problema de Estructuras con Funciones
|
en: 10 Noviembre 2012, 18:46 pm
|
Genial, Gracias a vos pude terminar del trabajo practico la parte de estructuras... Me sirivio de mucha ayuda tus explicaciones (: Aca te dejo parte del codigo, de como lo hice struct cliente { int numcli[1000],codreg[1000],mincm[1000],minia[1000]; float impabo[1000];
}cli; int ESRANGOVALIDO(int,int,struct cliente,int,int); do { printf("Ingresar Numero Cliente(1 a 100000)"); scanf("%d",&cli.numcli[iv]); } while(ESRANGOVALIDO(1,100000,cli,iv,1)==0); do { printf("Ingresar Codigo de Region(1 a 3)"); scanf("%d",&cli.codreg[iv]); } while(ESRANGOVALIDO(1,3,cli,iv,2)==0); int ESRANGOVALIDO(int a,int b,struct cliente ,int d,int e) { if(e==1) { if(cli.numcli[d]>=a&& cli.numcli[d]<=b)
return 1; else return 0; } else { if(e==2) { if(cli.codreg[d]>=a&& cli.codreg[d]<=b)
return 1; else return 0; } else { if(e==3) { if(cli.minia[d]>=a&& cli.minia[d]<=b)
return 1; else return 0; } else { if(cli.mincm[d]>=a&& cli.mincm[d]<=b)
return 1; else return 0; } }
} } Gracias y mas gracias naderST
|
|
|
2
|
Programación / Programación C/C++ / Re: Problema de Estructuras con Funciones
|
en: 10 Noviembre 2012, 14:07 pm
|
Despues de mandar el mensaje, me puse a pensar es exactamente como me estas diciendo vos.. Pero a lo que voy es ESRANGOVALIDO la uso para numcli, codreg, mincm... y en la funcion no puedo poner : cli.numcli > valor inferior && cli.numcli < valorfinal Solo me tomaria esa variable y no las otras. No se si me explico a lo que me refiero ej: distinto de mi codigo ESRANGOVALIDO(1,20,numcli)==0 ESRANGOVALIO(1,21,codreg)==0
INT ESRANGOVALIDO(int a,int b,int c)
if(c>=a&&c<=b) return 1; else return 0;
La variable c toma tanto como a numcli, y a codreg... Pero en structuras no entiendo como hacer lo mismo . Espero que ahi se me haya entendido mejor . Desde ya muchisimas gracias
|
|
|
3
|
Programación / Programación C/C++ / Re: Problema de Estructuras con Funciones
|
en: 9 Noviembre 2012, 22:01 pm
|
De maravilla .. Esta sera mi ultima pregunta, no me toma como valido el rango .. no se como llamar a la variable adentro de la funcion. en este caso es cliente pero me tira error, querria saber q poner . desde ya muchas gracias int ESRANGOVALIDO(int,int,struct cliente,int); while(ESRANGOVALIDO(1,100000,cli,iv)==0); int ESRANGOVALIDO(int a,int b,struct cliente ,int d) { if(cliente[d]>=a&&cliente[d]<=b)
return 1; else return 0; }
|
|
|
4
|
Programación / Programación C/C++ / Re: Problema de Estructuras con Funciones
|
en: 9 Noviembre 2012, 12:58 pm
|
Genial . Hice lo que me dijiste pero aun asi me sigue tirando el mismo error.. Te dejo el prototipo , la llamada a la funcion y la funcion struct cliente { int numcli[1000],codreg[1000],mincm[1000]; float impabo[1000];
}cli; int ESRANGOVALIDO(int,int,struct cliente[],int); while(ESRANGOVALIDO(1,100000,cli.numcli,iv)==0); int ESRANGOVALIDO(int a,int b,struct cliente cli[],int d) { if(cli.mincm[d]>=a&&cli.mincm[d]<=b)
return 1; else return 0; } Plz necesito ayuda con este codigo, Se los agradeceria !
|
|
|
7
|
Programación / Programación C/C++ / Problema de Estructuras con Funciones
|
en: 8 Noviembre 2012, 17:38 pm
|
Hola buenas tardes, no me han explicado bien el tema "estructuras" en funciones y tengo un codigo que si me darian una ayuda podria encarar yo solo .. Muchisimas Gracias . Errores Type Mismatch in parameter 3 ESRANGOVALIO Type Mismatch in parameter 3 CALCIMPFACTURA Type Mismatch in parameter 1 CALCIMPFACTURA Este es el codigo #include <stdio.h> #include <conio.h> #define c 1000 struct cliente { int numcli,codreg,mincm; float impabo;
};
int ESRANGOVALIDO(int,int,struct cliente[],int); int ESRANGOVALIDO2(int,int,int); float CALCIMPFACTURA(struct cliente ,int[],struct cliente,float,int,int); int ESFECHAVALIDA(int ,int ,int); void ORDEN_VECTOR(int,float[],int[],struct cliente); void SEGMENTO_CONSUMO(struct cliente,int[],int[][5],int);
void main() {
int numcli,impabo,codigo[3],codreg,minia[20],mincm,fechad,fecham,fechaa,contcli[3],num,flag=0,abonocont=0,mat[3][5],minexc,iv,i,j,b=3; float minexreg1,total[3],minexreg2,minexreg3,totfactura,costominreg; char nomtit[41]; struct cliente cli[c]; iv=0;
for(i=0;i<=3;i++) { total[i]=0; contcli[i]=0; }
for(i=0;i<=2;i++) { for(j=0;j<=4;j++) { mat[i][j]=0; } } printf("Monto minuto excedido por Region 1:"); scanf("%f",&minexreg1); printf("Monto minuto excedido por Region 2:"); scanf("%f",&minexreg2); printf("Monto minuto excedido por Region 3:"); scanf("%f",&minexreg3); do { printf("Ingresar Numero Cliente(1 a 100000)"); scanf("%d",&cli[iv].numcli); } while(ESRANGOVALIDO(1,100000,numcli,iv)==0);
while(flag==0) {
do { printf("Ingresar Fecha vencimiento de Factura: ej 10/08/2012\n"); scanf("%d/%d/%d",&fechad,&fecham,&fechaa);
}while(ESFECHAVALIDA(fechad,fecham,fechaa)==0);
printf("Ingresar Nombre del Cliente(40 caracteres)"); scanf("%s",&nomtit[iv]); fflush(stdin);
do { printf("Ingresar Codigo de Region(1 a 3)"); scanf("%d",&cli[iv].codreg); } while(ESRANGOVALIDO(1,3,codreg,iv)==0);
do { printf("Minutos Incluidos en el Abono(1 a 2000)"); scanf("%d",&minia[iv]); } while(ESRANGOVALIDO(1,2000,minia,iv)==0);
do { printf("Minutos Consumidos en el Mes(Mayor que 0)"); scanf("%d",&cli[iv].mincm); } while(ESRANGOVALIDO(1,9999999,mincm,iv)==0);
do { printf("Importe del Abono(Mayor que 0)"); scanf("%d",&impabo[iv]); } while(ESRANGOVALIDO(1,9999999,impabo,iv)==0);
if(cli[iv].codreg==1) { if(cli[iv].mincm<=minia[iv]) { minexc=0; abonocont++; totfactura=CALCIMPFACTURA(impabo,minia,mincm,minexreg1,minexc,iv); costominreg=minexreg1; } else { minexc=cli[iv].mincm-minia[iv]; totfactura=CALCIMPFACTURA(impabo,minia,mincm,minexreg1,minexc,iv); costominreg=minexreg1; } } else { if(cli[iv].codreg==2) { if(cli[iv].mincm<=minia[iv]) { minexc=0; abonocont++; totfactura=CALCIMPFACTURA(impabo,minia,mincm,minexreg2,minexc,iv); costominreg=minexreg2; } else { minexc=cli[iv].mincm-minia[iv]; totfactura=CALCIMPFACTURA(impabo,minia,mincm,minexreg2,minexc,iv); costominreg=minexreg2; } }
else { if(cli[iv].mincm<=minia[iv]) { minexc=0; abonocont++; totfactura=CALCIMPFACTURA(impabo,minia,mincm,minexreg3,minexc,iv); costominreg=minexreg3; } else { minexc=cli[iv].mincm-minia[iv]; totfactura=CALCIMPFACTURA(impabo,minia,mincm,minexreg3,minexc,iv); costominreg=minexreg3; } } }
total[cli[iv].codreg-1]+=totfactura;
SEGMENTO_CONSUMO(codreg,mincm,mat,iv);
clrscr(); contcli[cli[iv].codreg-1]++; printf("Ingresar nuevo cliente?(1-SI ; 2-NO)"); scanf("%d",&num); clrscr(); if(num==1) { do { iv++; printf("Ingresar Numero Cliente(1 a 100000)"); scanf("%d",&numcli[iv]); } while(ESRANGOVALIDO(1,100000,numcli,iv)==0); } else flag++; }
for(i=1;i<=3;i++) { codigo[i-1]=i; }
ORDEN_VECTOR(b,total,contcli,codigo);
printf("\nCodigo de Region\tCantidad de Abonados\tMonto Facturacion"); for(i=0;i<=2;i++) { printf("\n%d",codigo[i]);
printf("\t%d",contcli[i]);
printf("\t%.2f",total[i]); }
printf("\n\n\t\tMinutos Consumidos(por segmentos)"); printf("\nCodigo de Region\t 0 a 1000\t 1001 a 1500\t 1501 a 2000\t >2000\n"); for(i=0;i<=2;i++) {printf("\n"); for(j=0;j<=4;j++) { printf("\t%d ", mat[i][j]); } } getch();
}
int ESRANGOVALIDO(int a,int b,struct cliente cli[],int d) { if(cli[d].mincm>=a&&cli[d].mincm<=b)
return 1; else return 0; }
float CALCIMPFACTURA(struct cliente cli,int b[],struct cliente cli,float k,int d,int e) {
if(cli[iv].mincm<=b[e]) {
return cli[e].impabo;
} else { cli[e].mincm=cli[e].mincm+(d*k); return cli[e].mincm;
} }
int ESRANGOVALIDO2(int a,int b,int c) { if(c>=a&&c<=b) return 1; else return 0; }
int ESFECHAVALIDA(int d,int m,int a) { if(ESRANGOVALIDO2(2010,2020,a)==1) { if(m==2) { if(a%4==0 && (a%100!=0 || a%400==0)) { if(ESRANGOVALIDO2(1,29,d)==1) return 1; return 0; } else { if(ESRANGOVALIDO2(1,28,d)==1) return 1; return 0; } } else { if(m==1||m==3||m==5||m==7||m==8||m==10||m==12) { if(ESRANGOVALIDO2(1,31,d)==1) return 1; return 0; } else { if(ESRANGOVALIDO2(1,30,d)==1) return 1; return 0; } } } else return 0; }
void ORDEN_VECTOR(int n,float a[],int b[],int c[]) { int i,j,aux,aux2,aux3; for(i=0;i<=n-1;i++) { for(j=1;j<n-i;j++) { if(a[j-1]<a[j]) { aux=a[j]; a[j]=a[j-1]; a[j-1]=aux;
aux2=b[j]; b[j]=b[j-1]; b[j-1]=aux2;
aux3=c[j]; c[j]=c[j-1]; c[j-1]=aux3; } } } }
void SEGMENTO_CONSUMO(struct cliente cli,int b[],int c[][5],int d) {
c[0][0]=1; c[1][0]=2; c[2][0]=3;
if(b[d]>0&&b[d]<=1000)
c[cli[d].codreg-1][1]++; else { if(b[d]>=1001&&b[d]<=1500)
c[cli[d].codreg-1][2]++; else { if(b[d]>=1501&&b[d]<=2000)
c[cli[d].codreg-1][3]++;
else c[cli[d].codreg-1][4]++; } }
}
|
|
|
9
|
Programación / Programación C/C++ / Consulta ej. corte de control(camiones)
|
en: 26 Mayo 2012, 01:11 am
|
Buenas noches a todos , tengo un problema con este codigo en la funcion importe... estuve leyenedo como retonar una funcion que no recibe nada y q devuelve un scanf... pero no entendi sinceramente ... quisiera saber como podria ponerlo para que me funcione el programa... ahi comento en las lineas q me tira error #include <stdio.h> #include <conio.h>
int imporencomienda(int,int,int,int); void importe (); void main() {int p,camion=0,a,b,z,c,impt=0,carga,impc; float prome1; a=importe(); ////not an allowed type b=importe(); ////not an allowed type c=importe(); ////not an allowed type do { printf("Ingresar Peso"); scanf("%d",&p); } while(p<=0&&p>=200); printf("\t\tDespacho de Encomiendas"); while(p>0) { camion++; carga=0; impc=0; while(carga+=p<=2000&&p>0) { carga+=p; impc=imporencomienda(p,a,b,c);
do { printf("Ingresar Peso"); scanf("%d",&p); } while(p<=0&&p>=200); } printf("Camion %d Carga %d Importe por Camion %d",camion,carga,impc); if(carga>1800) { impt+=impc; c++; } else ; } prome1=impt/c; printf("Prome 90% %f",prome1); getch(); } int imporencomienda(int a,int b, int c, int d) { if(a>0&&a<=10) return(b); else if(a>10&&a>=40) return(c); else return(d); } void importe(x) { scanf("%d",&x); return(x); ////importe() cannot return a value } gracias
|
|
|
10
|
Programación / Programación C/C++ / Re: Duda con For,While , y Do while!
|
en: 24 Septiembre 2010, 17:03 pm
|
no eh trabajado con nada de lo que ustedes 2 me dijieron , este ejercicio lo tengo q hacer con lo que eh aprendido, por esoles pregunte como seguir .. queria saber si para ingresar cierta cantidad de N datos, despues usaria un ciclo for para que me aparescan ciertos N juegos de datos, y dentro del for lo valido con un do - while ? Gracias por ayudarme ! edit: Quiero el for reconozca la cantidad de N veces Que le dije al programa, o tengo q usar otra cosa? edit 2: segui trabajando trabajando y consegui lo que queria #include <stdio.h> #include <conio.h> void main() { int n,i,NumCli, MinInAbo, MinCon; char NomTityApeTit[50]; float ImpAbo, CosMinExc, ImpFac; do{ printf("Ingrese N cantidad de juegos de datos a averiguar : " ); scanf("%d", &n); } while(n<=9||n>=37); clrscr(); for(i=1;i<=n;i++) { printf("Numero de Cliente: "); scanf("%d",&NumCli); printf("\nNombre y Apellido del Titular: "); fflush(stdin); fgets(NomTityApeTit,50,stdin); printf("\nImporte del Abono: "); scanf("%f",&ImpAbo); printf("\nMinutos Incluidos en el Abono: "); scanf("%d",&MinInAbo); printf("\nMinutos Consumidos: " ); scanf("%d",&MinCon); printf("\nCosto del Minuto Excedente: "); scanf("%f",&CosMinExc); clrscr(); } clrscr(); getch(); } La cantidad de N juegos de datos son : Numero de cliente, Nombre del titular, etc Ahora la parte jodida quiero validar cada una, osea me dice a- 0< numero cliente <10000000 b-0<minutos incluidos en el abono<1000 etc... Alguien me podria decir como seguir?
|
|
|
|
|
|
|