Problema de Estructuras con Funciones

Iniciado por diego-4, 8 Noviembre 2012, 17:38 PM

0 Miembros y 4 Visitantes están viendo este tema.

diego-4

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

naderST

Podrías hacer una función general para validar el rango y que te quede algo similar a esto:


#include <stdio.h>

struct cliente {
    int numcli,codreg,mincm;
    float impabo;
};

int esRangoValido(int a, int b, int c)
{
    return (c >= a && c <= b);
}

int main()
{
    struct cliente prueba = { 10, 20, 30, 5.5 };

    if(esRangoValido(0,30,prueba.codreg))
        printf("El rango de codreg es válido.\n");
    if(esRangoValido(0,30,prueba.numcli))
        printf("El rango de numcli es válido.\n");
    if(esRangoValido(0,30,prueba.mincm))
        printf("El rango de mincm es válido\n");

    return 0;
}


diego-4

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