Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [C]Help, vari bug nel programma

    Questo programma simula un servizio di prenotazione posti cinema (dalla stessa macchina x ora).
    Purtroppo presenta una serie di problemi che nn riesco ancora a risolvere.LA compilazione perlomeno č ok.

    Da i seguenti problemi:
    1) Usando la prima volta l'opzione a)visualizza posti liberi
    nonostante siano tutti posti non prenotati la matrice appare cosi

    A2 A3
    B1 B2 B3
    C1 C2 C3

    nel main ho aggiunto la chiamata alla funzione che visualizza i posti x vedere se combinava la stessa cosa invece visualizza anche il posto A1.
    Ma se poi uso la chiamata se lo mangia anche se č presente(infatti č possibile prenotarlo).

    2)altro bug:
    Se ad esempio il posto B2 č libero e lo prenoto
    su schermo stampa:
    - posto non disponibile
    -Inserisci il posto
    -Il posto č vuoto lo riserviamo a voi

    IN effetti il posto viene cmq prenotato anche se nn ci dovrebbero essere le prime 2 stampate

    3) questo piu' che altro č un problema estetico
    Se prenoto un posto ad esempio A1 poi visualizza la
    matrice cosi

    A2 A3
    B1 B2 B3
    C1 C2 C3

    Ora ecco il codice del file .h:

    struct posto
    {
    unsigned char idPosto[3];
    int flag;
    };

    //typedef struct posto cine[3][3];
    // funzioni

    void inizializza_cinema(struct posto cine[3][3]);
    int cinema_pieno(struct posto cine[3][3]);
    void posti_vuoti(struct posto cine[3][3]);
    //int cinema_pieno(struct posto cine[3][3]);
    void assegna_posto(struct posto cine[3][3],unsigned char x, unsigned char y);
    void controllo_posto(struct posto cine[3][3]);
    void menu();
    _______________________________________________

    ora il file principale: x ora nn fate caso alle // sparse xchč ho fatto vari tentativi (inutil idirei )

    #include <stdio.h>
    //#include <stdlib.h>
    #include "header.h"
    //#include "funzioni.h"
    //#include "header.h"
    //#include <stdio.h>
    // Funzioni
    //
    //Inizializza la struttura cinema a 0 (posti vuoti)
    //con idPosto vettore della posizione
    //
    void inizializza_cinema(struct posto cine[3][3])
    {
    unsigned char i,j;
    for(i='A';i<='C';i++)
    {
    for(j='1';j<='3';j++)
    {
    cine[i-'A'][j-'1'].flag=0;
    cine[i-'A'][j-'1'].idPosto[0]=i;
    cine[i-'A'][j-'1'].idPosto[1]=j;
    cine[i-'A'][j-'1'].idPosto[2]='\0';
    }
    }
    }
    //
    //Stampa posti non prenotati
    //
    void posti_vuoti(struct posto cine[3][3])
    {
    //system("clear");
    unsigned char i,j;
    printf("\n\n");
    for(i='A';i<='C';i++)
    {
    printf("\n");
    for(j='1';j<='3';j++)
    {
    if (cine[i-'A'][j-'1'].flag==0) printf("%s\t",cine[i-'A'][j-'1'].idPosto);
    }
    }
    printf("\n\n");
    //getchar();
    }
    //
    //
    //Controlla se il cinema č pieno
    //e restituisce il numero dei posti vuoti
    //
    int cinema_pieno(struct posto cine[3][3])
    {
    int conta=0;
    unsigned char i,j;
    //
    for(i='A';i<='C';i++)
    {
    for(j='1';j<='3';j++)
    {
    if(cine[i-'A'][j-'1'].flag==1) conta++;
    }
    }
    return conta;
    };
    //
    //assegna il posto alla persona
    void assegna_posto(struct posto cine[3][3],unsigned char x,unsigned char y)
    {
    printf("\nil posto č vuoto lo riserviamo a voi!!");
    cine[x-'A'][y-'1'].flag=1;
    };
    //
    //Controlla i posti se sono assegnati oppure no
    //
    void controllo_posto(struct posto cine[3][3])
    {
    int flag_cinema_pieno;
    unsigned char x,y;
    printf("\nInserisci il posto che vuoi prenotare diviso da virgola, fila,posto :");
    scanf("%c,%c",&x,&y);
    while ((x<'A')||(x>'C')||(y<'1')||(y>'3'))
    {
    printf("\nPosto non disponibile");
    printf("\nInserisci il posto che vuoi prenotare diviso da virgola, fila,posto :");
    scanf("%c,%c",&x,&y);
    }
    fflush(stdin);
    x=toupper(x);
    y=toupper(y);
    flag_cinema_pieno=cinema_pieno(cine);
    if (flag_cinema_pieno!=9) //se il cinema nn č pieno
    //controlla posto
    {
    if (cine[x-'A'][y-'1'].flag==0)
    { assegna_posto(cine,x,y);
    }
    else //il posto č giā occupato
    {
    printf("\nIl posto č giā prenotato");
    printf("\nI posti liberi sono");
    posti_vuoti(cine/*[3][3]*/);
    //controllo_posto(cine);
    /*printf("\nInserisci il posto che vuoi prenotare diviso da virgola, fila,posto :");
    scanf("%c,%c",&x,&y);
    fflush(stdin);
    x=toupper(x);
    y=toupper(y);
    assegna_posto(cine,x,y);*/

    }

    }
    else printf("Cinema pieno,oggi disco!!");
    };
    //
    //stampa menu scelte opzioni
    //
    void menu()
    {
    //system("clear");
    printf("\n");
    printf("****************************\n");
    printf("* MENU *\n");
    printf("****************************\n");
    printf("a) visualizza posti vuoti\n");
    printf("b) prenota posto \n");
    printf("c) disconnetti \n");
    printf("\n inserisci scelta prego \n");
    };



    int main(int argc, char *argv[])
    {
    struct posto cinema[3][3];
    char scelta[1];
    inizializza_cinema(cinema);
    posti_vuoti(cinema);
    menu();
    scanf("%s",scelta);
    //printf("\n");
    while (strcmp(scelta,"c")!=0)
    { //printf("\n");
    if (strcmp(scelta,"a")==0) posti_vuoti(cinema);
    else if (strcmp(scelta,"b")==0) controllo_posto(cinema);
    else
    {
    printf("\nripeti scelta\n");
    sleep(2);
    }
    menu();
    scanf("%s",scelta);
    }
    return 0;
    }


    Mi serve una manona ,grazie a chiunque si interessi

  2. #2
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    se lo scrivi nei tag [ code] č meglio

  3. #3
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    ma non hai messo la funzione toupper

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.