|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Jul 2005
Messaggi: 15
|
[C]Help, vari bug nel programma :(
[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 |
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Ti prego, riposta il codice indentato e utilizzando i tag [code] altrimenti è illeggibile...
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
|
Quote:
~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
|
![]() |
![]() |
![]() |
#4 |
Junior Member
Iscritto dal: Nov 2001
Città: Gorizia
Messaggi: 20
|
Codice:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <windows.h> #include <ctype.h> //#include "funzioni.h" //#include "header.h" //#include <stdio.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(); // sparse xchè ho fatto vari tentativi (inutil idirei ) // 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); else printf(" ");//aggiunto per metter a posto la stampa } } 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 :"); fflush(stdin);//mancava e quindi andava a prendere un carattere precedente scanf("%c,%c",&x,&y); //consiglio se accetti anche caratteri minuscoli (visto che usi toupper) allora metti queste condizioni nel while 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[2]; //c'erano problemi con scanf che sovrascriveva cinema[0][0] 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; } Ciao Ps Scusate se non ho identato. ![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:18.