Autor
|
Tema: Porque ocurre esto en mi codigo en c (Leído 2,567 veces)
|
JulioHacker
Desconectado
Mensajes: 2
|
Hola buenos dias, tardes o noches, les pido que me ayuden con esto por favor, estoy realizando un programa en c que emula el sistema de reservacion de vuelos, el programa que realice compila y ejecuta bien, pero dentro del programa no puedo utilizar 2 veces la opción 1 que se muestra en pantalla, solo puedo utilizarlo 1 ves y después no deja que pueda reservar otro vuelo, me gustaría que me ayudaran con esto: #include<stdio.h> #include<conio.h> #include<string.h> #include<stdlib.h> #define N 50 /* 3. Una compañía dedicada al transporte de pasajeros por vía aérea, desea contratar sus servicios con el fin de automatizar el proceso de reservación de sus vuelos. Para ello Ud. deberá definir una estructura de datos en Lenguaje C que permita almacenar dicha información. Además se solicita que realice un programa que permita: a. Reservar un asiento en un vuelo. b. Cancelar una reservación. c. Confirmar una reservación. */ typedef struct{ char ciudad[N]; char destino[N]; char fecha[N]; char regreso[N]; int lleno; }vuelo; vuelo r[N]; void reservar(); void cancelar(); void confirmar(); void cambio (char palabra[N]); void menu(); int i,aux,cont=0; int cancel,close; int main(){ menu(); return 0; } void reservar(){ printf("Sistema de reservacion de vuelos de aerolineas Julio\n\n"); for(i=0;i<N && aux == 0;i++){ if(r[i].lleno==0){ printf("Ciudad de origen? : "); fgets(r [i ]. ciudad,N ,stdin ); printf("Ciudad de destino? : "); fgets(r [i ]. destino,N ,stdin ); fgets(r [i ]. fecha,N ,stdin ); printf("Fecha de regreso : "); fgets(r [i ]. regreso,N ,stdin ); cont++; r[i].lleno=1; aux=1; } printf("Vuelo reservado con exito!! :D "); } } void cancelar(){ if(cont==0){ printf("No tiene vuelos reservados\n"); printf("Por favor reserve un vuelo \n"); }else{ printf("Sistema de cancelacion de vuelo \n\n"); int cancel,close; printf("Actualmente tiene %i reservados ",cont ); printf("Cuantos vuelos desea cancelar? : "); close = cancel-cont; printf("Cancelacion realizada!!\n\n"); printf("Quedan %i vuelos disponibles \n\n ",close ); } } void confirmar(){ if(cont==0){ printf("No tiene vuelos reservados\n"); printf("Por favor reserve un vuelo \n"); }else{ printf("Actualmente hay %i vuelos confirmados \n\n",cont ); } } void menu(){ int op; printf("Aerolineas Julio, Volamos contigo!!\n\n\n"); while(op!=4){ printf("Que desea hacer? : \n\n"); printf("1) Reservar un asiento \n"); printf("2) Cancelar una reservacion \n"); printf("3) Confirmar una reservacion \n"); switch(op){ case 1: reservar(); break; case 2: cancelar(); break; case 3: confirmar(); break; }}}
|
|
« Última modificación: 23 Marzo 2022, 07:43 am por fary »
|
En línea
|
|
|
|
fary
|
Tienes que hacer un planteamiento de programa antes de empezar... solo tienes las letras Te e escrito un poquito de código para que veas mas o menos, a ver que te parece. #include <stdio.h> #include <string.h> #define MAX 50 #define MAXPasajeros 60 // El máximo de pasageros por avión #define MAXDestinos 5 // El máximo de destinos const char * Destinos[MAXDestinos] = {"Madrid", "Barcelona","Sevilla","Valencia", "Badajoz"}; // Destinos de los vuelos. struct Vuelo // Nuestra estructura. { char Origen[MAX]; char Destino[MAX]; char FechaIda[MAX]; char FechaVuelta[MAX]; int NumeroPasajeros; }; struct Vuelo _Vuelo[MAXDestinos]; // Declaro el array de la estructura que contendrá los datos. void Inicializar() // Inicializo las estructuras { int i; for (i=0; i<5; i++) { strcpy(_Vuelo [i ]. Destino, Destinos [i ]); _Vuelo[i].NumeroPasajeros = 0; } } int Reservar() { int i; int NumeroVuelo; for (i=0; i < MAXDestinos; i++) { printf("%s\n",_Vuelo [i ]. Destino); } printf("Seleccione el número e vuelo que desea: "); scanf("%i",&NumeroVuelo ); if (_Vuelo[NumeroVuelo].NumeroPasajeros > 59) // Si el vuelo esta lleno, informamos y salimos { printf("Lo sentimos, el vuelo esta lleno...\n"); return 0; } scanf("%s",_Vuelo [NumeroVuelo ]. FechaIda); printf("Fecha de la vuelta: "); scanf("%s",_Vuelo [NumeroVuelo ]. FechaVuelta); scanf("%s", _Vuelo [NumeroVuelo ]. Origen); _Vuelo[NumeroVuelo].NumeroPasajeros++; printf("Vuelo reservado, total reservas: %i\n",_Vuelo [NumeroVuelo ]. NumeroPasajeros); return 0; } int main() { Inicializar(); int Operacion; while (1) { Operacion = 0; printf("Seleccione la operación que desea realizar: \n"); printf("1- Reservar un asiento\n"); printf("2- Cancelar reserva\n"); switch(Operacion) { case 1: Reservar(); break; case 2: break; case 3: return 0; } } return 0; }
Si quieres hacer algo como esto bien tienes que contar con más cosas como por ejemplo para reservar billete y contar como va el avión de lleno no pueden tener fechas diferentes... con lo cual se complica más la cosa. Tambień puedes identar bien el código, fijate que diferencia entre el tuyo (Practicamente ilegible, se te quitan las ganas) con el mio, a simple vista ves donde empiezan y comienzan los bucles, las funciones, etc.
|
|
|
En línea
|
Un byte a la izquierda.
|
|
|
JulioHacker
Desconectado
Mensajes: 2
|
Ya, con ese código logre comprender mejor , y si ,tienes razón con las recomendaciones, me servirá para mejorar y terminar el ejercicio que tengo planteado , muchas gracias
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
esto por que ocurre???
« 1 2 »
Sugerencias y dudas sobre el Foro
|
Division-x
|
10
|
4,669
|
19 Julio 2006, 13:48 pm
por Division-x
|
|
|
porq ocurre esto?
Ingeniería Inversa
|
<housedir>
|
1
|
2,580
|
10 Noviembre 2009, 21:33 pm
por MCKSys Argentina
|
|
|
Por que me ocurre esto?
Hacking Wireless
|
metrillo
|
3
|
2,932
|
6 Noviembre 2010, 22:36 pm
por zydas
|
|
|
Esto es lo que ocurre si intentas escanear un billete de 10 euros
Noticias
|
wolfbcn
|
1
|
1,646
|
15 Mayo 2014, 06:19 am
por Randomize
|
|
|
Esto es lo que ocurre al soltar un robot por la 'deep web' con cien dólares ....
Noticias
|
wolfbcn
|
0
|
2,591
|
10 Enero 2015, 01:47 am
por wolfbcn
|
|