/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

problema para sacar maximo y mas

 
      Índice del Foro elrincondelc.com -> C/C++ en General
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
cazador



Registrado: 03 May 2007
Mensajes: 9

MensajePublicado: 28/10/2007 6:52 pm
Título: problema para sacar maximo y mas

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:

#include <stdio.h>
#include<conio.h>
#include <string.h>

void carga(int*,int*);
int busq(int*,int);
void procesar(int *,int*,int *);
int main (void)
{
   int vnl[4],vg[4],clf[4]={0};
   carga(vnl,vg);
   procesar(vnl,vg,clf);

getch();
}

void carga(int *pl,int *pg)
{
   for(int i=0; i<4; i++)
   {
      printf("Ingrese nro libro (4 mx): "); //cargo los libros
      scanf("%d",&pl[i]);
      printf("Ingrese nro genero (2 mx): ");   // existe 2 generos elijo para cada libro el genero
      scanf("%d",&pg[i]);
   }
}
void procesar(int *pl,int *pg,int *pcf)
{
      int l,pos,contg,ns;
      char sx;

      printf("Ingrese ns ");
      scanf("%d",&ns);
      while(ns!=0)
      {
      printf("Ingrese nl ");
      scanf("%d",l);
      fflush(stdin);
      printf("ingrese sexo (f o m)");
      scanf("%c",&sx);

         pos=busq(pl,l); //busca si existe el libro y retorna la posicion donde esta en pos
        if(pos!=-1)
        {
           if(sx=='f')
            pcf[pos-1]++; // cuento el nro de libro mas pedido po las mujeres
         else
            printf( "introdusca sexo de nuevo \n");
         }

      printf("Ingrese ns ");
      scanf("%d",&ns);
     }
      for(int i=0; i<2; i++)
      {
         contg=0;

         for(int j=0; j<4; j++)
         {
            if(pg[j]==i+1)
            {
               contg++;
            }
         }
         printf( " para el genero %d la cantidad de libros son %d \n",i+1,contg); //este no se porque informa mal
      }

      int pm=0;
      for(int h=1; h<=4; h++)
      {
         if(pcf[h]>pcf[pm])                           //tan bien informa mal -_-
         {
            pm=i;
         }
      }
      printf( " el maximo nro de libro pedido por las mujeres  es %d y el genero es %d \n",pl[pm],pg[pm]);

}

int busq (int *pl,int l)
{
   int i=0;

   while(pl[i]!=l && i<4)    //funcion de busqueda se fija si el libro esta cargado en el vector y da la posicion
   {                         //donde se encuentra
         i++;
   }
   if(i<4)
      return i;
   else
      return -1;
}
Volver arriba
mamntc02



Registrado: 30 Abr 2007
Mensajes: 248

MensajePublicado: 29/10/2007 4:07 am
Título:

Tienes algunos fallos en el programa:
  • fflush(stdin) no es adecuada para limpiar el buffer de entrada, por no ser estandar. Puede q tu compilador lo haga correctamente, pero nadie le obliga. Haz una búsqueda por este foro, ya q es un tema ampliamente tratado.
  • En la función procesar:
    • Al leer nl te falta el & en el scanf.
    • Al final de la función cuando haces:
Código:
pm=i;
no tiene sentido ya q la variable i está fuera de ámbito.

Saludos.
Volver arriba
cazador



Registrado: 03 May 2007
Mensajes: 9

MensajePublicado: 29/10/2007 1:13 pm
Título: solucionado

gracias mamntc02 ya lo solucione dejo el codigo arreglado espero que alguno le sirva

Código:

#include <stdio.h>
#include<conio.h>
#include <string.h>

void carga(int*,int*);
int busq(int*,int);
void procesar(int *,int*,int *,int*);
int main (void)
{
   int vnl[5],vg[5],clf[5]={0},vdm[5]={0};
   carga(vnl,vg);
   procesar(vnl,vg,clf,vdm);

getch();
}

void carga(int *pl,int *pg)
{
   for(int i=0; i<5; i++)
   {
      printf("Ingrese nro libro (5 mx): ");
      scanf("%d",&pl[i]);
      printf("Ingrese nro genero (5 mx): ");
      scanf("%d",&pg[i]);
   }
}
void procesar(int *pl,int *pg,int *pcf,int *pdm)
{
      int l,pos,contg,ns,d;
      char sx;

      printf("Ingrese ns ");
      scanf("%d",&ns);
      while(ns!=0)
      {
      printf("Ingrese nl ");
      scanf("%d",&l);
      printf("Ingrese dia (5 mx)");
      scanf("%d",&d);
      fflush(stdin);
      printf("ingrese sexo (f o m)");
      scanf("%c",&sx);

         pos=busq(pl,l);
        if(pos!=-1)
        {
           if(sx=='f')
            pcf[pos]++;
         else
            printf( "introdusca sexo de nuevo \n");

               if(pg[pos]==5)
               pdm[d-1]++;
         }
      printf("Ingrese ns ");
      scanf("%d",&ns);
     }

      for(int i=0; i<5; i++)
      {
         contg=0;

         for(int j=0; j<5; j++)
         {
            if(pg[j]==i+1)
            {
               contg++;
            }
         }
         printf( " para el genero %d la cantidad de libros son %d \n",i+1,contg);
      }

      int pm=0;
      for(int h=1; h<=5; h++)
      {
         if(pcf[h]>pcf[pm])
         {
            pm=h;
         }
      }
      printf( " el maximo nro de libro pedido por las mujeres  es %d y el genero es %d \n",pl[pm],pg[pm]);

      int mx=0;
      for(int k=1; k<=5; k++)
      {
         if(pdm[k]>pdm[mx])
         {
            mx=k;
         }
      }
      printf( " maxima extraccion de libros de genero 5 fue en el dia %d \n",mx+1);

}
int busq (int *pl,int l)
{
   int i=0;

   while(pl[i]!=l && i<5)
   {
         i++;
   }
   if(i<5)
      return i;
   else
      return -1;
}
Volver arriba
      Índice del Foro elrincondelc.com -> C/C++ en General
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com