Sistema de reservacion de aerolinea[C]

Iniciado por HRSLASH, 11 Diciembre 2010, 23:51 PM

0 Miembros y 1 Visitante están viendo este tema.

HRSLASH

Hola foreros! hacia mucho q no posteaba nada debido a q cursando en la facu no tenia mucho tiempo libre para programar.
Como ya termine volvi a codear en c y queria subir un programa de reserva de aerolinea q pide como ejercicio un libro q estoy leyendo.
Espero comentarios y sugerencias.
Saludos!



#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define SIZE_ASIENTOS 10

int asignarAsiento(int [], int, int);
void pasaje(int);
void diagrama(int [], int);

main()
{
    srand(time(NULL));
    int asientos[SIZE_ASIENTOS] = {0};
    int i, num, cont = 0;

    printf("SISTEMA DE RESERVACION DE AEROLINEAS\n\n");

    diagrama(asientos, SIZE_ASIENTOS);

    while (cont <= SIZE_ASIENTOS - 1){

        printf("Por favor ingrese 1 para sector fumadores\n"
               "Por favor ingrese 2 para sector no fumadores\n");
        scanf("%d", &num);

        while (num > 2){
            printf("Numero no valido\n\n");
            printf("Por favor ingrese 1 para sector fumadores\n"
                   "Por favor ingrese 2 para sector no fumadores\n");
            scanf("%d", &num);
        }

        if ((asignarAsiento(asientos, SIZE_ASIENTOS, num)) != 0)
            cont++;

        diagrama(asientos, SIZE_ASIENTOS);
    }

    printf("Avion lleno\nProximo vuelo en 3 horas\n");


    return 0;
}





int asignarAsiento(int a[], int size, int n)
{
    char rta[1];
    int i, status = 0;
    static int cont1 = 0, cont2 = 0;

    switch(n){
        case 1:                     //SECTOR FUMADORES
            if (cont1 < size / 2){
                while (status == 0){
                    i = rand() % size /2;
                    if(a[i] == 0){
                        a[i] = 1;
                        pasaje(i);
                        cont1++;
                        status = 1;
                    }
                }
            }
            else{
                printf("La sección fumadores esta llena. "
                       "Le gustaria q le asignemos un lugar en la sección "
                       "de no fumadores(s/n)");
                scanf("%s", rta);

                if(rta[0] == 's' || rta[0] == 'S'){
                    while (status == 0){
                        i = size / 2 + rand() % size / 2;
                        if(a[i] == 0){
                            a[i] = 1;
                            pasaje(i);
                            cont2++;
                            status = 1;
                        }
                    }
                }

                else{
                    printf("\nEl proximo vuelo sale en 3 horas\n\n");
                    return 0;
                }
            }

            break;


        case 2:                     //SECTOR NO FUMADORES
            if (cont2 < size / 2){
                while (status == 0){
                    i = size / 2 + rand() % size / 2;
                    if (a[i] == 0){
                        a [i] = 1;
                        pasaje(i);
                        cont2++;
                        status = 1;
                    }
                }
            }

            else{
                printf("La sección de no fumadores esta llena. "
                       "Le gustaria q le asignemos un lugar en la sección "
                       "de fumadores(s/n)");
                scanf("%s", rta);

                if(rta[0] == 's' || rta[0] == 'S'){
                    while (status == 0){
                        i = rand() % size /2;
                        if(a[i] == 0){
                            a[i] = 1;
                            pasaje(i);
                            cont1++;
                            status = 1;
                        }
                    }
                }

                else{
                    printf("\nEl proximo vuelo sale en 3 horas\n\n");
                    return 0;
                }
            }

            break;
    }

}

void pasaje(int numAsiento)
{
    printf("\n************************\n");
    printf("AEROLINEA\n");
    printf("Pase de abordaje\n");
    if (numAsiento >= 0 && numAsiento <= 4){
        printf("Asiento nº %d\n", numAsiento + 1);
        printf("Sector fumadores\n");
    }
    else{
        printf("Asiento nº %d\n", numAsiento + 1);
        printf("Sector no fumadores\n");
    }
    printf("\n************************\n");
}

void diagrama(int a[], int size)
{
    int i;

    printf("\n");
    printf("%30s\n\n", "DIAGRAMA AVION");
    printf("%15s %26s\n", "FUMADORES", "NO FUMADORES");
    printf("/-------------------\\");
    printf("    /-------------------\\\n");
        for (i = 0; i <= size - 1; i++)
            printf("%-5d", a[i]);
    printf("\n\n");

}

La televisión es para mi el medio mas instructivo y cultural que conozco, cuando la prenden me voy a leer

Garfield07

Simplemente añado que esta muy bien, pero se podria reducir un poco...
a ver si luego lo minimizo xD


* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo

carlosmendoza

AMIGO LE FELICITO POR EL GRAN TRABAJO QUE HA REALIZADO SOLO QUISIERA SABER COMO HACER PARA QUE ME aparezca TRES CATEGORIAS POR EJEMPLO CLASE TURISTA, CLASE MEDIA, CLASE PRIMERA. ESPERO SU RESPUESTA

horlandjo

Hola no tengo mucha experiencia en esto de la programacion y estoy viendo muchos ejericicios y entre ellos encontré el tuyo, podrías explicarme por favor, porque no me compila en Mac OS X?
Utilicé SublimeText pero me lanza el siguiente mensaje en la terminal


aerolinea.c:10:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
main()
^
aerolinea.c:135:1: warning: control may reach end of non-void function [-Wreturn-type]
}
^
2 warnings generated.



Se debe a un problema del sistema operativo o del compilador o que pasó?


Muchas gracias por leerme, y gracias por el aporte que diste al foro.

MAFUS

Se debe a que estudias material muy desfasado.

El primer warning que te lanza es porqué toda función debe declarar el tipo de dato que devuelve. Antes del estándar de 1989 las funciones, si no se declaraba su tipo de dato devuelto, se consideraban int. Actualmente es obligatorio indicar ese dato.

El segundo warning viene de que la función asignar asiento debe devolver un entero, sin embargo se llega hasta el final de ella sin devolver dato alguno. Debe haber una sentencia return con un entero.