Prenotazione accettata/rifiutata..perchè non funziona?

di il
19 risposte

19 Risposte - Pagina 2

  • Re: Prenotazione accettata/rifiutata..perchè non funziona?

    Come dice oregon, molto semplicemente tieni all'interno della struttura una variabile int max, inizializzata a 0. Ad ogni prenotazione, se il numero di posti prenotati è maggiore del valore di max, allora aggiornalo. Una volta effettuate tutte le prenotazioni, avrai già pronto il valore massimo che cerchi.
  • Re: Prenotazione accettata/rifiutata..perchè non funziona?

    Questa è la mia soluzione, dovrebbe funzionare ora, anche se avrei preferito dividere il tutto in più void,ma per ora mi accontento..grazie a chi mi ha aiutata
    
    #include <stdio.h>
    #include <stdlib.h>
    #define MAX 100
    
    typedef struct{
    	int numposti;
    	int numerazione;
    	int codice;
    	char settore[20];
    	int postirichiesti;
    	int postiliberi;
    	int max;
    }settore_t;
    settore_t sett[MAX];
    
    
    void inserisci (settore_t sett[], int dim);
    
    int main ()
    {
    	int n;
    	printf("Quanti settori vuoi inserire in tabella?\n)");
    	scanf("%i", &n);
        inserisci(sett,n);
    	
        system("pause");
        return 0;
    }
    
    void inserisci(settore_t sett[], int dim)
    {
    	int i,j;
    	int num;
    	char settore[20];
    	
        for(i=0;i<dim;++i)
    	{	
    	for(j=0; j<dim; j++)
    	{
    	
         	printf("Inserire nome del settore(SETTOREI, SETTOREII, SETTOREIII ECC...\n\n)");	
    		scanf("%s", sett[i].settore);
    		printf("Inserisci numero totale dei posti:\n");
    		scanf("%i", &sett[i].numposti);
    		printf("Inserisci numero totale dei posti liberi:\n");
    		scanf("%i", &sett[i].postiliberi);
    		printf("Inserisci numerazione(es da 1 a 40)\n");
    		scanf("%i", &sett[i].numerazione);     
    	}
    		
    	
    
    		printf("PRENOTAZIONE :\n");
    		printf("Quante prenotazioni vuoi fare?\n");
    		scanf("%i", &num);
    	
    		for(j=0; j<num; j++)
    		{
    	
    			printf("In quale settore vuoi prenotare?(scegli tra SETTOREI, II o III)\n");
    			scanf("%s", settore);
    			printf("Quanti biglietti vuoi prenotare?\n");
    			scanf("%i", &sett[i].postirichiesti);
    			if(sett[i].postiliberi < sett[i].postirichiesti)
    			{		
    				printf("PRENOTAZIONE RIFIUTATA\n");			
    			}
    				if(sett[i].postiliberi >= sett[i].postirichiesti)
    		    	{	
    				
    					printf("PRENOTAZIONE ACCETTATA\n");
    					printf("SETTORE : %I\n\n", sett[i].settore);
    					printf("Dalla poltrona %i alla %i \n", i+1, i+sett[i].postirichiesti);
    					sett[i].postiliberi= (sett[i].postiliberi- sett[i].postirichiesti);
    		        }	
    		        
    		             if(sett[i].max < sett[i].postirichiesti)
    		             {
    				        sett[i].max = sett[i].postirichiesti;
    			
                         }
    	    } 	
    	   		        	printf("IL MASSIMO NUMERO DI POSTI RICHIESTI E' : %i\n", sett[i].max);
    		                exit(1);
    		        
    		        
        }
    }
  • Re: Prenotazione accettata/rifiutata..perchè non funziona?

    Salve, scusate per l'ennesima domanda, ma ho bisogno di un piccolo aiuto..ho fatto un altro programma,molto simile a quello precedente,ma ho problemi con il do while! nella funzione "prenota" uso il do while per controllare che il codice inserito sia effettivamente esistente per effettuare la prenotazione di un viaggio, ma non funziona il controllo, o meglio funziona per la prima prenotazione ma per le altre, anche se digito il codice giusto, mi dice di ridigitarlo perchè è inesistente...ecco il codice
    #include <stdio.h>
    #include <stdlib.h>
    #define MAX 100
    
    typedef struct{
    	int codice;
    	char destinazione[20];
    	char categoria[20];
    	int datapartenza;
    	int datarientro;
    	int prezzopersona;
    	int postitot;
    	int postiocc;
    }viaggio_t;
    
    viaggio_t via[MAX];
    
    void inserisci(viaggio_t via[], int dim);
    void prenota(viaggio_t via[], int dim);
    void massimo(viaggio_t via[], int dim);
    
    int main()
    {
    	int n;
    	printf("Quanti viaggi vuoi inserire in tabella?\n");
    	scanf("%d", &n);
    	inserisci(via, n);
    	prenota(via,n);
    	massimo(via,n);
    	system("pause");
    	return 0;
    }
    
    
    void inserisci(viaggio_t via[], int dim)
    {	
    	int i,j;
    	int num,codice,richiesta,liberi;
    		for(i=0; i<dim; i++)
    		{
    	
    		printf("INSERIMENTO DATI DEL %i VIAGGIO\n\n", i+1);	
    		printf("Inserisci codice del viaggio:\n");
    		scanf("%d", &via[i].codice);
    		printf("Inserisci destinazione del viaggio:\n");
    		scanf("%s", via[i].destinazione);
    		printf("Inserisci categoria del viaggio(SCEGLI TRA GIOVANI,ROMANTICO,CULTURALE O RELIGIOSO):\n");
    		scanf("%s", via[i].categoria);
    		printf("Inserisci data di partenza del viaggio:\n");
    		scanf("%d", &via[i].datapartenza);
    		printf("Inserisci data di rientro del viaggio:\n");
    		scanf("%d", &via[i].datarientro);
    		printf("Inserisci il prezzo per persona del viaggio:\n");
    		scanf("%d", &via[i].prezzopersona);
    		printf("Inserisci il numero totale di posti disponibili:\n");
    		scanf("%d", &via[i].postitot);
    		printf("Inserisci il numero di posti occupati:\n");
    		scanf("%d", &via[i].postiocc);
    		}	
    }
    	
    	
    void prenota(viaggio_t via[], int dim){
    	int num,codice,richiesta,liberi;
    	int i;
    			printf("Quante prenotazioni vuoi effettuare?\n");
    			scanf("%d", &num);
    			for(i=0; i<num; i++)
    		{
    			do
    			{
    			printf("Inserisci il codice del viaggio in cui effettuare la prenotazione:\n");
    			scanf("%d", &codice);
    			
    			if(codice != via[i].codice)
    				{
    				printf("ERRORE, CODICE NON ESISTENTE...RIDIGITA:\n");
    				}
    			} while(codice != via[i].codice);			
    			
    			printf("Inserisci il numero totale di posti da prenotare:\n\n");
    			scanf("%i", &richiesta);
    			liberi = (via[i].postitot - via[i].postiocc);
    							if (richiesta <= liberi)
    									{
    										printf("PRENOTAZIONE ACCETTATA\n\n");
    										printf("IMPORTO DEL VIAGGIO: %d\n", via[i].prezzopersona);
    										liberi = (liberi - richiesta);
    									}
    							if (richiesta > liberi)
    							{
    							printf("PRENOTAZIONE RIFIUTATA\n\n");
    							printf("DATA DI PARTENZA: %d\n", via[i].datapartenza);
    							printf("DATA DI RIENTRO: %d\n", via[i].datarientro);
    							}	
    		}		
    			
    							
    		}
    
    void massimo(viaggio_t via[], int dim)
    {
    	int i,imax,postitot;
    	imax=0;
    	postitot= via[0].postitot;
    	for(i=0; i<dim; i++)
    	{
    		if(postitot < via[i].postitot)
    		{
    		postitot=via[i].postitot;
    		imax=0;
    		}
    
    	}	printf("IL MASSIMO E' : %d\n", via[imax].postitot);		
    	
    }
    
    
  • Re: Prenotazione accettata/rifiutata..perchè non funziona?

    Per un nuovo problema si usa un nuovo thread con un titolo opportuno altrimenti si fa confusione.
  • Re: Prenotazione accettata/rifiutata..perchè non funziona?

    Va bene, scusami, lo faccio subito...
Devi accedere o registrarti per scrivere nel forum
19 risposte