• Sábado 14 de Diciembre de 2024, 18:47

Autor Tema:  Problema Para Mostrar El Maximo Y Mas  (Leído 1116 veces)

cazadorite

  • Nuevo Miembro
  • *
  • Mensajes: 23
    • Ver Perfil
Problema Para Mostrar El Maximo Y Mas
« en: Lunes 29 de Octubre de 2007, 04:05 »
0
holas el problema es que no encuentro el error en mi programa informa mal tendria que mostrar los libros de cada genero pero siempre erra en uno y el maximo tambien me sale mal -_- me pueden ayudar.

una biblioteca cuenta con un primer lote con los prestamos a sus socios durante la semana pasada, cada registro tiene:

numero de socio (1 a 100)
sexo del socio ('m' o 'f')
numero de libro retirado (4 digitios no correlativos)

finaliza con registro numero de socio igual a 0.
segundo lote con los datos de los libros, cada registro contiene:

numero de libro ( 4 digitos no correlativos)
genero (1 a 20)

la biblioteca cuenta con 300 libros. haga un programa de determine e informe:

a) el numero de libro mas pedido por las mujeres y el genero al que pertenece.
b)la cantidad de libros disponibles para cada genero.

Código: Text
  1.  
  2. #include <stdio.h>
  3. #include<conio.h>
  4. #include <string.h>
  5.  
  6. void carga(int*,int*);
  7. int busq(int*,int);
  8. void procesar(int *,int*,int *);
  9. int main (void)
  10. {
  11.   int vnl[4],vg[4],clf[4]={0};
  12.   carga(vnl,vg);
  13.   procesar(vnl,vg,clf);
  14.  
  15. getch();
  16. }
  17.  
  18. void carga(int *pl,int *pg)
  19. {
  20.   for(int i=0; i<4; i++)
  21.   {
  22.     printf("Ingrese nro libro (4 mx): "); //cargo los libros
  23.     scanf("%d",&pl[i]);
  24.     printf("Ingrese nro genero (2 mx): ");   // existe 2 generos elijo para cada libro el genero
  25.     scanf("%d",&pg[i]);
  26.   }
  27. }
  28. void procesar(int *pl,int *pg,int *pcf)
  29. {
  30.     int l,pos,contg,ns;
  31.     char sx;
  32.  
  33.     printf("Ingrese ns ");
  34.     scanf("%d",&ns);
  35.     while(ns!=0)
  36.     {
  37.     printf("Ingrese nl ");
  38.     scanf("%d",l);
  39.     fflush(stdin);
  40.     printf("ingrese sexo (f o m)");
  41.     scanf("%c",&sx);
  42.  
  43.       pos=busq(pl,l); //busca si existe el libro y retorna la posicion donde esta en pos
  44.       if(pos!=-1)
  45.       {
  46.         if(sx=='f')
  47.         pcf[pos-1]++; // cuento el nro de libro mas pedido po las mujeres
  48.       else
  49.         printf( "introdusca sexo de nuevo \n");
  50.       }
  51.  
  52.     printf("Ingrese ns ");
  53.     scanf("%d",&ns);
  54.     }
  55.     for(int i=0; i<2; i++)
  56.     {
  57.       contg=0;
  58.  
  59.       for(int j=0; j<4; j++)
  60.       {
  61.         if(pg[j]==i+1)
  62.         {
  63.           contg++;
  64.         }
  65.       }
  66.       printf( " para el genero %d la cantidad de libros son %d \n",i+1,contg); //este no se porque informa mal
  67.     }
  68.  
  69.     int pm=0;
  70.     for(int h=1; h<=4; h++)
  71.     {
  72.       if(pcf[h]>pcf[pm])                           //tan bien informa mal -_-
  73.       {
  74.         pm=i;
  75.       }
  76.     }
  77.     printf( " el maximo nro de libro pedido por las mujeres  es %d y el genero es %d \n",pl[pm],pg[pm]);
  78.  
  79. }
  80.  
  81. int busq (int *pl,int l)
  82. {
  83.   int i=0;
  84.  
  85.   while(pl[i]!=l && i<4)    //funcion de busqueda se fija si el libro esta cargado en el vector y da la posicion
  86.   {                         //donde se encuentra
  87.       i++;
  88.   }
  89.   if(i<4)
  90.     return i;
  91.   else
  92.     return -1;
  93. }
  94.  
  95.  

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Problema Para Mostrar El Maximo Y Mas
« Respuesta #1 en: Lunes 29 de Octubre de 2007, 07:40 »
0
Depuralo, no hacemos tareas ajenas aca.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

cazadorite

  • Nuevo Miembro
  • *
  • Mensajes: 23
    • Ver Perfil
Re: Problema Para Mostrar El Maximo Y Mas
« Respuesta #2 en: Lunes 29 de Octubre de 2007, 22:21 »
0
xDD igual lo pude arreglar que compilador recomiendas para C Eternal Idol el mio no habia saltado el error que en el scanf le faltaba & igual deje el codigo por si alguno le sirve de algo

Código: Text
  1.  
  2. #include <stdio.h>
  3. #include<conio.h>
  4. #include <string.h>
  5.  
  6. void carga(int*,int*);
  7. int busq(int*,int);
  8. void procesar(int *,int*,int *,int*);
  9. int main (void)
  10. {
  11.   int vnl[5],vg[5],clf[5]={0},vdm[5]={0};
  12.   carga(vnl,vg);
  13.   procesar(vnl,vg,clf,vdm);
  14.  
  15. getch();
  16. }
  17.  
  18. void carga(int *pl,int *pg)
  19. {
  20.   for(int i=0; i<5; i++)
  21.   {
  22.     printf("Ingrese nro libro (5 mx): ");
  23.     scanf("%d",&pl[i]);
  24.     printf("Ingrese nro genero (5 mx): ");
  25.     scanf("%d",&pg[i]);
  26.   }
  27. }
  28. void procesar(int *pl,int *pg,int *pcf,int *pdm)
  29. {
  30.     int l,pos,contg,ns,d;
  31.     char sx;
  32.  
  33.     printf("Ingrese ns ");
  34.     scanf("%d",&ns);
  35.     while(ns!=0)
  36.     {
  37.     printf("Ingrese nl ");
  38.     scanf("%d",&l);
  39.     printf("Ingrese dia (5 mx)");
  40.     scanf("%d",&d);
  41.     fflush(stdin);
  42.     printf("ingrese sexo (f o m)");
  43.     scanf("%c",&sx);
  44.  
  45.       pos=busq(pl,l);
  46.       if(pos!=-1)
  47.       {
  48.         if(sx=='f')
  49.         pcf[pos]++;
  50.       else
  51.         printf( "introdusca sexo de nuevo \n");
  52.  
  53.               if(pg[pos]==5)
  54.           pdm[d-1]++;
  55.       }
  56.     printf("Ingrese ns ");
  57.     scanf("%d",&ns);
  58.     }
  59.  
  60.     for(int i=0; i<5; i++)
  61.     {
  62.       contg=0;
  63.  
  64.       for(int j=0; j<5; j++)
  65.       {
  66.         if(pg[j]==i+1)
  67.         {
  68.           contg++;
  69.         }
  70.       }
  71.       printf( " para el genero %d la cantidad de libros son %d \n",i+1,contg);
  72.     }
  73.  
  74.     int pm=0;
  75.     for(int h=1; h<=5; h++)
  76.     {
  77.       if(pcf[h]>pcf[pm])
  78.       {
  79.         pm=h;
  80.       }
  81.     }
  82.     printf( " el maximo nro de libro pedido por las mujeres  es %d y el genero es %d \n",pl[pm],pg[pm]);
  83.  
  84.     int mx=0;
  85.     for(int k=1; k<=5; k++)
  86.     {
  87.       if(pdm[k]>pdm[mx])
  88.       {
  89.         mx=k;
  90.       }
  91.     }
  92.     printf( " maxima extraccion de libros de genero 5 fue en el dia %d \n",mx+1);
  93.  
  94. }
  95. int busq (int *pl,int l)
  96. {
  97.   int i=0;
  98.  
  99.   while(pl[i]!=l && i<5)
  100.   {
  101.       i++;
  102.   }
  103.   if(i<5)
  104.     return i;
  105.   else
  106.     return -1;
  107. }
  108.  
  109.  

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Problema Para Mostrar El Maximo Y Mas
« Respuesta #3 en: Lunes 29 de Octubre de 2007, 22:42 »
0
Cita de: "cazadorite"
xDD igual lo pude arreglar que compilador recomiendas para C Eternal Idol el mio no habia saltado el error que en el scanf le faltaba & igual deje el codigo por si alguno le sirve de algo
VC++ para Windows y gcc para GNU/Linux. Tambien te recomiendo no usar bibliotecas no standard y totalmente inutiles como conio.h ...

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.