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
Errores
Type Mismatch in parameter 3 ESRANGOVALIO
Type Mismatch in parameter 3 CALCIMPFACTURA
Type Mismatch in parameter 1 CALCIMPFACTURA
Este es el codigo
Código [Seleccionar]
#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]++;
}
}
}