elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema con programa en borland c
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con programa en borland c  (Leído 2,593 veces)
ghviso

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Problema con programa en borland c
« en: 15 Junio 2011, 21:14 pm »

Bueno, estoy haciendo un programa que tiene que hacer lo siguiente:

1)Mostrar la cantidad de pasajeros para cada destino
2)Mostrar un listado con los 10 vuelos con mayor cantidad de pasajeros
3)Mostrar la menor cantidad de pasajeros en algun vuelo

Y los datos ingresan de la siguiente forma:
Por cada vuelo: numero de vuelo (string), fecha (3 enteros), hora (2 enteros), destino (string) y cantidad de pasajeros (entero)

El programa que tengo es este:

#include <stdio.h>
#include <stdlib.h>
#define MAXA 100
#define MAXB 10
////////////////////////////////////////////////////////////////////////
struct RegFec
{
   int D;
   int M;
   int A;
   }typedef RegFec;

struct RegHr
{
   int H;
   int M;
   }typedef RegHr;

struct RegVuelo
{
   char N[10];
   RegFec F;
   RegHr  H;
   char D[10];
   int C;
   }typedef RegVuelo;

struct RegVueloA
{
   char D[10];
   int C;
   }typedef RegVueloA;

struct RegVueloB
{
   char N[10];
   int C;
   }typedef RegVueloB;

   RegVueloA A[MAXA];
   RegVueloB B[MAXB];

   RegFec F;
   RegHr Hr;
   RegVuelo vuelo;


   int ceA=0;
   int ceB=0;
   int I=0;
   int cant=0;
   int Hubo_Datos=0;
   int HayDatos;
////////////////////////////////////////////////////////////////////////
int EsBisiesto (A)
{
   int Es=0;

   if ( ((A%4==0) && (A%100!=0)) || (A%400==0) )
    {
       Es=1;
    }
    return Es;
}
////////////////////////////////////////////////////////////////////////
int CantDias (M,A)
{
   int Dias = 31;

   if ( (M==4) || (M==6) || (M==9) || (M==11) )
   {
      Dias=30;
   }
   else
   {
      if ( (M==2) && (EsBisiesto (A)==1) )
      {
         Dias=29;
      }
      else
      {
         if ( (M==2) && (EsBisiesto (A)==0) )
         {
            Dias=28;
         }
      }
   }
   return Dias;
}
////////////////////////////////////////////////////////////////////////
int FechaValida(RegFec F)
{
   int Es=0;

   if (F.A>1800)
   {
      if ( (F.M>=1) && (F.M<=12) )
      {
         if    (  (F.D>=1) && ( (CantDias (F.M,F.A))>=(F.D) ))
         {
            Es=1;
         }
      }
   }
       return Es;
}
////////////////////////////////////////////////////////////////////////
int IngresarFechaValida (RegFec F)
{
   do
   {
   printf("Ingrese Dia\n");
   scanf("%d",&F.D);

   printf("Ingrese Mes\n");
   scanf("%d",&F.M);

   printf("Ingrese Año\n");
   scanf("%d",&F.A);

   }
   while (FechaValida(F)==0);
   return 0;
}
////////////////////////////////////////////////////////////////////////
int IngresarHoraValida (RegHr Hr)
{
   int H;
   int M;

   do
   {
   printf("Ingrese la Hora\n");
   scanf("%d",&H);
   }while ((H>23) || (H<0) );

   do
   {
   printf("Ingrese los Minutos\n");
   scanf("%d",&M);
   }while ( (M>59) || (M<0) );

   Hr.H = H;
   Hr.M = M;
   return 0;
}
////////////////////////////////////////////////////////////////////////
int IngresarDatos (RegVuelo vuelo)
{
   printf("Ingrese el numero de vuelo\n");
   scanf("%s",vuelo.N);

   IngresarFechaValida (vuelo.F);
   IngresarHoraValida (vuelo.H);

   printf("Ingrese el destino\n");
   scanf("%s",vuelo.D);

   do
   {
   printf("Ingrese la cantidad de pasajeros\n");
   scanf("%d",&vuelo.C);
   }while (vuelo.C<0);
   return 0;
}
////////////////////////////////////////////////////////////////////////
int VerificarFinDatos (int HayDatos)
{
   int Aux;

   do
   {
      printf("Ingrese 1 si quiere ingresar datos o cualquier tecla para finalizar\n");
      scanf("%d",&Aux);
   }while  ((Aux!=1) && (Aux!=0) );

   if (Aux==1)
   {
      HayDatos=1;
   }

   else
   {
      HayDatos=0;
   }
   return HayDatos;
}
////////////////////////////////////////////////////////////////////////
int Buscar (RegVueloA A[MAXA], int ceA, RegVuelo vuelo)

{
   int i = 0;

   int pos;

   while ((i < ceA) && (A.D != vuelo.D))
     {
      i=i+1;
      }

   if (i==ceA)

      pos= -1;

   else

      pos= i;

   return (pos);
}
//////////////////////////////////////////////////////
int InsertarOrdenado (RegVueloB B[MAXB], int *ceB,RegVuelo vuelo)
{
   int i=(*ceB -1);

   if (*ceB == MAXB)
   {
      if (B.C < vuelo.C)
         i=i-1;
   }
   else
      *ceB=*ceB+1;


   while ((i>=0) && (B.C < vuelo.C))
      {

         B[i+1].C = B.C;
         B[i+1].N[10] = B.N[10];
         i = i-1;
      }

   if (i != MAXB-1)
   {
      B[i+1].C = vuelo.C;
      B[i+1].N[10] = vuelo.N[10];

   }
   return 0;
}
////////////////////////////////////////////////////////////////////////
int Proceso (RegVuelo vuelo, RegVueloA A[MAXA],RegVueloB B[MAXB],  int *cant, int *I, int *ceA, int *ceB)
{
   int pos;

   pos = (Buscar(A, *ceA, vuelo));

   if (pos>=0)
   {
      A[pos].C = A[pos].C+vuelo.C ;
   }
   else
   {
      if (*ceA!=MAXA)
      {
         A[*ceA].D[10] = vuelo.D[10];
         A[*ceA].C = vuelo.C;
         *ceA=*ceA+1;
         }
      else
      {
         exit (0);
      }
   }

   if (I==0)
   {
      *cant=vuelo.C ;
   }
   else
   {
      if (vuelo.C < *cant)
      {
         *cant=vuelo.C;
      }
   }

   I=I+1;

   InsertarOrdenado (B, ceB, vuelo);

   return 0;
}
///////////////////////////////////////////////////////////////////////
int MostrarDatos (RegVueloA A[MAXA], RegVueloB B[MAXB], int *cant, int *ceA, int *ceB, int Hubo_Datos)
{
   int I=0;

   for ((I=0) ; (I<(*ceA)) ; I++)
   {
      printf ("Destino: %d,Cantidad de pasajeros: %d\n", A.D[10], A.C);
    }
   for (I=0 ; (I<(*ceB)) ; I++)

     {
      printf ("Vuelo: %d,Cantidad: %d\n", B.N[10], B.C);
      }
   if (Hubo_Datos==1)
       {
      printf ("La menor cantidad fue: %d", *cant);
        }
   else

       printf ("No hubo vuelos");

   return 0;

}





///////////////////////////////////////////////////////////////////////
int main()
{


   while (VerificarFinDatos (HayDatos)==1)
   {
      Hubo_Datos=1;
      IngresarDatos(vuelo);
      Proceso (vuelo,A,B,&cant,&I,&ceA,&ceB);
   }

   MostrarDatos (A,B,&cant,&ceA,&ceB,Hubo_Datos)   ;

    return 0;
}

El programa compila, pero a la hora de mostrar los datos muestra todo 0 :S


En línea

dakomt

Desconectado Desconectado

Mensajes: 76


Viking Metal


Ver Perfil
Re: Problema con programa en borland c
« Respuesta #1 en: 17 Junio 2011, 05:37 am »

Tienes suerte de que este aburrido... normalmente nadie te contestaría con ese post... la próxima vez selecciona todo el código y pulsa el botoncito que tienes arriba con el dibujito # ya verás que  bonico  te queda xD

En fin... tu problema creo que es el siguiente...

Tienes declarada esta estructura

Código:
struct RegVuelo
{
   char N[10];
   RegFec F;
   RegHr  H;
   char D[10];
   int C;
   }typedef RegVuelo;

Hasta aquí bien... pero luego haces cosas como estas....

Código:
B[i+1].N[10] = B.N[10];

....

printf ("Vuelo: %d,Cantidad: %d\n", B.N[10], B.C);

Podría explicarte los fallos pero no me aburro tanto xD investiga un poco pero seguro que los tienes por cosas como esas...

PD: me das penica.. aqui van unas pistas...

1. los arrays en C son "zero-based"
2. Un array de caracteres (%s) no es lo mismo que un caracter (%c) ni un entero (%d).. aclárate a ver que necesitas para identificar el número de vuelo y manéjalo correctamente.

espero no haber sido muy pedante xD al menos te he contestado!  :silbar:




En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Me ayudan con un programa en Borland C++
Ingeniería Inversa
Red Mx 2 3,353 Último mensaje 9 Julio 2009, 05:03 am
por Red Mx
Problema Borland C++
Programación C/C++
Riki_89D 5 4,919 Último mensaje 31 Julio 2010, 19:29 pm
por ThunderCls
Programa Borland c++
Programación C/C++
Chamitaxd 3 5,489 Último mensaje 20 Marzo 2011, 21:41 pm
por Littlehorse
Problema con Borland C++
Software
Black Lotus 0 1,506 Último mensaje 3 Marzo 2013, 17:56 pm
por Black Lotus
Ayuda con un programa en borland c++
Programación C/C++
Llivi 3 1,653 Último mensaje 16 Diciembre 2018, 23:20 pm
por K-YreX
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines