Struct e sottoprogramma

di il
15 risposte

Struct e sottoprogramma

Ciao, sta volta volevo chiedervi un aiutino con questo esercizio:
ho fatto la parte a) ma non sono certo di aver fatto correttamente, c'è qualche errore secondo voi?

/*a) Realizzare un sottoprogramma che riceve come parametri un array di linee lb, la sua dimensione
dim e restituisce un intero come risultato. Per ciascuna corsa di ciascuna linea, il sottoprogramma
calcola la percentuale di riempimento (quanti dei posti totali sono occupati), quindi calcola la media
della percentuale di riempimento per ciascuna linea, ed infine identifica qual è la linea con la più bassa
percentuale media di riempimento restituendo il numero della linea.
b) Scrivere uno stralcio di main in cui viene dichiarato un array di 10 elementi di tipo t_linea e
qualsiasi altra variabile eventualmente necessaria. OMETTENDO la parte di acquisizione dei dati, il
programma esegue la chiamata al sottoprogramma precedentemente definito e visualizza il risultato.
*/
#include <stdio.h>
#include <string.h>
#define N_CORSE 100
#define MAX_STR 100

typedef struct{
 char tipo_autobus[MAX_STR+1];
 int numero_corsa;
 int numero_passengeri;
 int posti_totali;
} t_corsa;
typedef struct{
 t_corsa corse[N_CORSE];
 int n_corse;
 char partenza[MAX_STR+1];
 char arrivo[MAX_STR+1];
 int numero_linea;
} t_linea;

int parteA(t_linea lb[], dim){
	
	
	int i;
	int j;
	int linea;
	float media=0;
	float temp=0;
	
	for(i=0; i<dim; i++){
		for(j=0;j<lb[i].n_corse;j++){
			
			media=(lb[i].corse[j].numeri_passenggeri*100)/(lb[i].corse[j].posti_totali);
				if(media<temp){
					linea=sc[i].numero_linea;
				}
				temp=media;
				media=0;
		}
		
	
	}
	
	return linea;
}

15 Risposte

  • Re: Struct e sottoprogramma

    Lascia stare sempre nuovi problemi

    Prima risolve bene i precedenti,
    L'ultimo non lo hai fatto bene, lo hai un po' tirato via
    Queste cose importano
  • Re: Struct e sottoprogramma

    E poi queste continue richieste di controllare interi programmi lasciano il tempo che trovano. Dovresti essere tu a controllarne il funzionamento. Lo hai fatto? Hai eseguito il codice? Ci sono malfunzionamenti o errori? E se ci sono spiega quali sono in modo da focalizzarci solo su quelli.

    Per una revisione di TUTTI i tuoi esercizi paga un tutor.
  • Re: Struct e sottoprogramma

    A parte che è sbagliato, il codice non l'ha eseguito perché c'è un refuso e non può compilare...
  • Re: Struct e sottoprogramma

    In che punto ho sbagliato?
  • Re: Struct e sottoprogramma

    Ma lo vuoi compilare il programma o no? C'è più di un errore in fase di compilazione ....

    Mi pare che tu stia usando molto male il forum ...
  • Re: Struct e sottoprogramma

    oregon ha scritto:


    Ma lo vuoi compilare il programma o no?

    Mi pare che tu stia usando molto male il forum ...
    Non posso, è un esercizio che non può essere compilato perché non mi darebbe nessun risultato a video... Nella parte b) del programma dovrei anche omettere l'inserimento dati.
    Il mio problema è sapere se concettualmente il sottoprogramma è corretto, nel senso... Rispetta ciò che chiede la parte a del compito?
  • Re: Struct e sottoprogramma

    Che dici? Puoi SEMPRE compilarlo per fare un controllo formale di quello che hai scritto.

    E comunque se ci sono errori importanti come si fa a giudicare?

    Ad esempio

    sc[ i ]

    è un vettore INESISTENTE. A cosa ti riferisci?

    Ti ripeto ... PRIMA di postare sul forum fai tu un bel CONTROLLO di quello che scrivi perché nessuno ha tanto tempo da impiegare a farlo per te.

    P.S. E poi scusa, se lo compiliamo NOI, perché non dovresti compilarlo TU?
  • Re: Struct e sottoprogramma

    Certo che può essere compilato: devi fare uno sforzo veramente minimo, non devi nemmeno riempire le strutture...
  • Re: Struct e sottoprogramma

    #include <stdio.h>
    #include <string.h>
    #define N_CORSE 100
    #define MAX_STR 100
    /*a) Realizzare un sottoprogramma che riceve come parametri un array di linee lb, la sua dimensione
    dim e restituisce un intero come risultato. Per ciascuna corsa di ciascuna linea, il sottoprogramma
    calcola la percentuale di riempimento (quanti dei posti totali sono occupati), quindi calcola la media
    della percentuale di riempimento per ciascuna linea, ed infine identifica qual è la linea con la più bassa
    percentuale media di riempimento restituendo il numero della linea.
    b) Scrivere uno stralcio di main in cui viene dichiarato un array di 10 elementi di tipo t_linea e
    qualsiasi altra variabile eventualmente necessaria. OMETTENDO la parte di acquisizione dei dati, il
    programma esegue la chiamata al sottoprogramma precedentemente definito e visualizza il risultato.
    */
    typedef struct{
     char tipo_autobus[MAX_STR+1];
     int numero_corsa;
     int numero_passengeri;
     int posti_totali;
    } t_corsa;
    typedef struct{
     t_corsa corse[N_CORSE];
     int n_corse;
     char partenza[MAX_STR+1];
     char arrivo[MAX_STR+1];
     int numero_linea;
    } t_linea;
    
    int parteA(t_linea lb[], int dim){
    	
    	
    	int i;
    	int j;
    	int linea;
    	float media=0;
    	float temp=0;
    	linea=lb[0].numero_linea;
    	for(i=0; i<dim; i++){
    		for(j=0;j<lb[i].n_corse;j++){
    			
    			media=(lb[i].corse[j].numero_passengeri*100)/(lb[i].corse[j].posti_totali);
    				if(media<temp){
    					linea=lb[i].numero_linea;
    				}
    				temp=media;
    				media=0;
    		}
    		
    	
    	}
    	
    	return linea;
    }
    
    int main(){
    	
    	int dim=2;
    	
    	t_linea lb[dim];
    	
    	int i=0;
    	int j=0;
    	
    	for(i=0;i<dim;i++){
    		printf("numero di linea? ");
    		scanf("%d", &lb[i].numero_linea);
    		printf("numero di corse della %d linea ? ", i+1);
    		scanf("%d", &lb[i].n_corse);
    		for(j=0;j<lb[i].n_corse;j++){
    			printf("numero di posti totali? ");
    			scanf("%d", &lb[i].corse[j].posti_totali);
    			printf("numero di passeggeri totali? ");
    			scanf("%d", &lb[i].corse[j].numero_passengeri);
    		}
    		
    	}
    	
    	printf("\n");
    	printf("il numero di linea con una percentuale piu' bassa e': %d", parteA(lb,dim));
    	
    	
    	return 0;
    }
    ho creato questo codice seguendo il vostro consiglio di compilare, a me funziona... ma magari ho fatto qualche errore concettuale.
    ho messo dim=2 per fare una prova pratica del programma, così ero più veloce.
  • Re: Struct e sottoprogramma

    Bene, quindi hai corretto i refusi. Fai i punti uno per volta e testali tu (riempimento, media, etc.).

    Sai come si calcola una media? In generale, intendo
  • Re: Struct e sottoprogramma

    Si so come si calcola una media, avevo capito male l'esercizio e pensavo chiedesse la linea del pullman con una percentuale più bassa di posti occupati
  • Re: Struct e sottoprogramma

    
    #include <stdio.h>
    #include <string.h>
    #define N_CORSE 100
    #define MAX_STR 100
    
    
    typedef struct{
     char tipo_autobus[MAX_STR+1];
     int numero_corsa;
     int numero_passengeri;
     int posti_totali;
    } t_corsa;
    typedef struct{
     t_corsa corse[N_CORSE];
     int n_corse;
     char partenza[MAX_STR+1];
     char arrivo[MAX_STR+1];
     int numero_linea;
    } t_linea;
    
    int parteA(t_linea lb[], int dim){
    	
    	
    	int i;
    	int j;
    	int linea;
    	float media;
    	float mediatot[dim];
    	int min;
    	
    	for(i=0; i<dim; i++){
    	
    		for(j=0;j<lb[i].n_corse;j++){
    			
    			media=(lb[i].corse[j].numero_passengeri*100)/(lb[i].corse[j].posti_totali);
    			mediatot[i]=mediatot[i]+media;
    					
    		}
    	
    			mediatot[i]=mediatot[i]/lb[i].n_corse;	
    			
    				}
    		
    	min=0;
    		linea= lb[0].numero_linea;
    		for(i=0; i<dim; i++){
    	
    		if(mediatot[i]<mediatot[min]){
    		min=i;
    		linea= lb[i].numero_linea;
    	}
    		}
    		
    		
    	
    	return linea;
    }
    
    int main(){
    	
    	int dim=2;
    	
    	t_linea lb[dim];
    	
    	int i=0;
    	int j=0;
    	
    	for(i=0;i<dim;i++){
    		printf("numero di linea? ");
    		scanf("%d", &lb[i].numero_linea);
    		printf("numero di corse della %d linea ? ", i+1);
    		scanf("%d", &lb[i].n_corse);
    		for(j=0;j<lb[i].n_corse;j++){
    			printf("numero di posti totali? ");
    			scanf("%d", &lb[i].corse[j].posti_totali);
    			printf("numero di passeggeri totali? ");
    			scanf("%d", &lb[i].corse[j].numero_passengeri);
    		}
    		
    	}
    	
    	printf("\n");
    	printf("il numero di linea con una percentuale piu' bassa e': %d", parteA(lb,dim));
    	
    	
    	return 0;
    }
    ok ora dovrebbe essere corretto, ora calcola la media totale delle corse di ogni linea e in base a quello mi restituisce il nome della linea con la media percentuale più bassa.
  • Re: Struct e sottoprogramma

    Ma dai....
    ma si fa' così a correggere un errore di dattilografia?
    hai scritto giusto nella definizione di struttura e sbagliato nel programma
    e per mettere a posto le cose scrivi "passengeri" anche nella struttura, dove era scritto in italiano corretto? qui mi son sbagliato io
    guarda che due errori consecutivi non fanno una correzione........
  • Re: Struct e sottoprogramma

    Quella struttura era allegata all'esercizio, lo so che "passengeri" è sbagliato... mi sono limitato a scrivere ciò che c'era scritto perché non mi dava particolarmente fastidio.
Devi accedere o registrarti per scrivere nel forum
15 risposte