Problemi con ordinamento di un'array di struct e con spostamento di valori da un campo di una struct ad un singolo array

di il
2 risposte

Problemi con ordinamento di un'array di struct e con spostamento di valori da un campo di una struct ad un singolo array

Salve come da titolo ho problemi a spostare i valori del morbillo in un array avente 48celle di memoria qui vi posto il codice per intero, ed in più non riesco ad effettuare l'ordinamento della struttura basandomi sulla regione con il minor numero di casi di morbillo.


bool regione_maggior_morbillo(data utente[]){
	
int i;

int j;

int k;

int x;

int max;

int morbil[MORBILLI_TOTALI];


for(i=0;	i<STRUCT;	i++)		{
	

	


for(j=0;	j<MESI;		j++)		{	



morbil[j]=utente[i].morbillo[j];





									}



									}


for(k=0;	k<MORBILLI_TOTALI;		k++)		{	
	
	


printf("| %d |",morbil[k]);




												}



	
	
}





Grazie in Anticipo

2 Risposte

  • Re: Problemi con ordinamento di un'array di struct e con spostamento di valori da un campo di una struct ad un singolo array

    Scusate


    
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <stdbool.h>
    
    #define DIM 50
    #define MESI 12
    #define STRUCT 4
    #define MORBILLI_TOTALI 12*4
    
    /* 1) Inserimento e stampa in forma tabellare per provincia dei dati mensili sul morbillo
       2)Visualizzare il valore medio mensile
       3)Ordinamento regioni decrescenti annuali
       4)Caricamento dati da file
       5)Regione e mese con maggior numero di casi di morbillo 
       
       regioni = Lombardia piemonte puglia e veneto
    */
    
    typedef struct{
    	
    char regione[DIM];	
    	
    char mese[DIM][MESI];	
    	
    int morbillo[MESI];	
    	
    	
    	
    }data;   
       
       
    bool inserimento_morbilli(data utente[]);
    
    bool regioni_mesi(data utente[]);
    
    void stampa_dati(data utente[]);
     
    bool valori_massimi(data utente[]); 
       
    bool caricamento_file(data utente[]);   
       
    bool regione_maggior_morbillo(data utente[]);
    
    
    
    int main(){
    	
    data utente[STRUCT];	
    
    regioni_mesi(utente);
    	
    int scelta;
    
    
    do{
    
    
    printf("Premi [1] per stampare in forma tabellare i dati inerenti al morbillo\n");
    printf("Premi [2] per effettuare l'ordinamento basandoci sulla regione con minori casi di morbillo\n");
    printf("Premi [3] per caricare i dati da file\n");
    printf("Premi [4] per vedere quale è il caso di morbillo piu' alto\n");
    
    
    scanf("%d",&scelta);
    
    switch(scelta){
    	
    case 1:
    
    inserimento_morbilli(utente);	
    	
    
    
    break;
    
    case 2:
    
    
    
    valori_massimi(utente);
    
    
    
    
    
    
    
    break;
    
    case 3: 
    
    
    
    caricamento_file(utente);
    
    
    
    
    
    break;
    
    
    case 4:
    	
    regione_maggior_morbillo(utente);
    
    break;	
    
    
    default:
    
    	
    printf("Hai effettuato una scelta errata riprova \n");
    
    system("pause");
    
    system("cls");
    
    break;	
    	
    	
    	
    }
    
    	
    }while(scelta!=0);
    
    
    
    }
    	
    	
    	
    	
    	
    	
    	
    
    
    
    
    
    bool inserimento_morbilli(data utente[]){
    
    
    
    
    
    
    utente[0].morbillo[0]=0;
    
    
    
    utente[0].morbillo[1]=0;
    
    
    
    utente[0].morbillo[2]=0;
    
    
    
    utente[0].morbillo[3]=0;
    
    
    
    utente[0].morbillo[4]=0;
    
    
    
    utente[0].morbillo[5]=0;
    
    
    
    utente[0].morbillo[6]=4;
    
    
    
    utente[0].morbillo[7]=0;
    
    
    
    utente[0].morbillo[8]=0;
    
    
    
    utente[0].morbillo[9]=10;
    
    
    
    utente[0].morbillo[10]=7;
    
    
    
    utente[0].morbillo[11]=1;
    
    
    //Lombardia
    
    
    
    
    
    
    
    utente[1].morbillo[0]=0;
    
    
    
    utente[1].morbillo[1]=1;
    
    
    
    utente[1].morbillo[2]=2;
    
    
    
    utente[1].morbillo[3]=12;
    
    
    
    utente[1].morbillo[4]=0;
    
    
    
    utente[1].morbillo[5]=2;
    
    
    
    utente[1].morbillo[6]=3;
    
    
    
    utente[1].morbillo[7]=6;
    
    
    
    utente[1].morbillo[8]=4;
    
    
    
    utente[1].morbillo[9]=0;
    
    
    
    utente[1].morbillo[10]=4;
    
    
    
    utente[1].morbillo[11]=5;
    
    
    
    
    
    
    
    //Veneto
    
    
    
    
    
    
    
    utente[2].morbillo[0]=0;
    
    
    
    utente[2].morbillo[1]=0;
    
    
    
    utente[2].morbillo[2]=3;
    
    
    
    utente[2].morbillo[3]=2;
    
    
    
    utente[2].morbillo[4]=18;
    
    
    
    utente[2].morbillo[5]=17;
    
    
    
    utente[2].morbillo[6]=14;
    
    
    
    utente[2].morbillo[7]=16;
    
    
    
    utente[2].morbillo[8]=20;
    
    
    
    utente[2].morbillo[9]=5;
    
    
    
    utente[2].morbillo[10]=9;
    
    
    
    utente[2].morbillo[11]=8;
    
    
    
    
    
    
    
    
    
    
    
    
    utente[3].morbillo[0]=7;
    
    
    
    utente[3].morbillo[1]=5;
    
    
    
    utente[3].morbillo[2]=2;
    
    
    
    utente[3].morbillo[3]=14;
    
    
    
    utente[3].morbillo[4]=3;
    
    
    
    utente[3].morbillo[5]=2;
    
    
    
    utente[3].morbillo[6]=2;
    
    
    
    utente[3].morbillo[7]=1;
    
    
    
    utente[3].morbillo[8]=1;
    
    
    
    utente[3].morbillo[9]=1;
    
    
    
    utente[3].morbillo[10]=1;
    
    
    
    utente[3].morbillo[11]=0;
    
    
    
    
    
    
    
    stampa_dati(utente);
    
    
    
    
    }
    
    
    void stampa_dati(data utente[]){
    	
    	
    int i;
    
    int j;
    
    printf("|%-20s|%-20s|%-20s|\n","Regione","Mese","Morbillo");
    printf("---------------------------------------------------\n");
    
    	for(i=0;	i<STRUCT;	i++){
    printf("|%-20s|------------------------------------------",utente[i].regione);	
    
    	for(j=0;	j<MESI;		j++){
    	
    	
    printf("\n                     |%-20s|%-20d|\n\n",utente[i].mese[j],utente[i].morbillo[j]);	
    	
    	
    	
    		
    								}	
    	
    	
    	
    								}	
    	
    	
    	
    }
    
    
    bool valori_massimi(data utente[]){
    	
    int i;
    
    int j;
    
    int valore_max_morbillo[STRUCT];
    
    data temp;
    
    int min;
    
    for(i=0;	i<STRUCT;		i++){
    	
    for(j=0;	j<MESI;			j++){
    	
    valore_max_morbillo[i]+=utente[i].morbillo[j];
    	
    	
    								}
    
    								}
    
    
    for(i=0;	i<STRUCT;		i++)	{
    	
    
    printf("\n\nI valori totali del morbillo sono\n |%d|\n",valore_max_morbillo[i]);
    
    									}
    
    
    
    }
    
    
    
    bool caricamento_file(data utente[]){
    	
    
    int i;
    
    int j;	
    	
    FILE*fp;
    
    fp=fopen("dati.txt","r");
    
    
    	if(fp==NULL){
    	
    printf("Errore il file non e'stato aperto correttamente \n");
    
    exit(1);	
    	
    				}
    	
    
    else			{
    	
    	
    for(i=0;	i<STRUCT	;	i++)	{	
    	
    	
    	
    
    
    	
    for(j=0;	j<MESI;			j++)	{
    	
    	
    fscanf(fp,"%d",&utente[i].morbillo[j]);	
    	
    	
    
    	
    	
    									}	
    	
    		
    		
    									}	
    	
    
    printf("Dati caricati da File\n\n");
    
    printf("|%-20s|%-20s|%-20s|\n","Regioni","Mesi","Casi Morbillo");
    printf("---------------------------------------------------------\n");
    
    
    
    for(i=0;	i<STRUCT;	i++)		{
    
    printf("|%-20s|\n",utente[i].regione);		
    	
    	
    for(j=0;	j<MESI;		j++)		{
    
    
    printf("                     |%-20s|%-20d|\n",utente[i].mese[j],utente[i].morbillo[j]);
    	
    
    	
    	
    	
    	
    							    	}	
    	
    	
    	
    	
    	
    				  					}
    		
    
    	
    				}	
    	
    	
    	
    		
    }
    
    
    bool regioni_mesi(data utente[]){
    	
    strcpy(utente[0].regione,"Puglia");
    
    
    
    strcpy(utente[0].mese[0],"Gennaio");
    
    
    
    strcpy(utente[0].mese[1],"Febbraio");
    
    
    
    strcpy(utente[0].mese[2],"Marzo");
    
    
    
    strcpy(utente[0].mese[3],"Aprile");
    
    
    
    strcpy(utente[0].mese[4],"Maggio");
    
    
    
    strcpy(utente[0].mese[5],"Giugno");
    
    
    
    strcpy(utente[0].mese[6],"Luglio");
    
    
    
    strcpy(utente[0].mese[7],"Agosto");
    
    
    
    strcpy(utente[0].mese[8],"Settembre");
    
    
    
    strcpy(utente[0].mese[9],"Ottobre");
    
    
    
    strcpy(utente[0].mese[10],"Novembre");
    
    
    
    strcpy(utente[0].mese[11],"Dicembre");
    
    
    
    
    //Lombardia
    
    strcpy(utente[1].regione,"Lombardia");
    
    
    
    strcpy(utente[1].mese[0],"Gennaio");
    
    
    
    strcpy(utente[1].mese[1],"Febbraio");
    
    
    
    strcpy(utente[1].mese[2],"Marzo");
    
    
    
    strcpy(utente[1].mese[3],"Aprile");
    
    
    
    strcpy(utente[1].mese[4],"Maggio");
    
    
    
    strcpy(utente[1].mese[5],"Giugno");
    
    
    
    strcpy(utente[1].mese[6],"Luglio");
    
    
    
    strcpy(utente[1].mese[7],"Agosto");
    
    
    
    strcpy(utente[1].mese[8],"Settembre");
    
    
    
    strcpy(utente[1].mese[9],"Ottobre");
    
    
    
    strcpy(utente[1].mese[10],"Novembre");
    
    
    
    strcpy(utente[1].mese[11],"Dicembre");
    
    
    
    
    
    
    
    
    
    //Veneto
    
    strcpy(utente[2].regione,"Veneto");
    
    
    
    strcpy(utente[2].mese[0],"Gennaio");
    
    
    
    strcpy(utente[2].mese[1],"Febbraio");
    
    
    
    strcpy(utente[2].mese[2],"Marzo");
    
    
    
    strcpy(utente[2].mese[3],"Aprile");
    
    
    
    strcpy(utente[2].mese[4],"Maggio");
    
    
    
    strcpy(utente[2].mese[5],"Giugno");
    
    
    
    strcpy(utente[2].mese[6],"Luglio");
    
    
    
    strcpy(utente[2].mese[7],"Agosto");
    
    
    
    strcpy(utente[2].mese[8],"Settembre");
    
    
    
    strcpy(utente[2].mese[9],"Ottobre");
    
    
    
    strcpy(utente[2].mese[10],"Novembre");
    
    
    
    strcpy(utente[2].mese[11],"Dicembre");
    
    
    
    
    
    
    
    
    strcpy(utente[3].regione,"Piemonte");
    
    
    
    strcpy(utente[3].mese[0],"Gennaio");
    
    
    
    strcpy(utente[3].mese[1],"Febbraio");
    
    
    
    strcpy(utente[3].mese[2],"Marzo");
    
    
    
    strcpy(utente[3].mese[3],"Aprile");
    
    
    
    strcpy(utente[3].mese[4],"Maggio");
    
    
    
    strcpy(utente[3].mese[5],"Giugno");
    
    
    
    strcpy(utente[3].mese[6],"Luglio");
    
    
    
    strcpy(utente[3].mese[7],"Agosto");
    
    
    
    strcpy(utente[3].mese[8],"Settembre");
    
    
    strcpy(utente[3].mese[9],"Ottobre");
    
    
    strcpy(utente[3].mese[10],"Novembre");
    
    
    
    strcpy(utente[3].mese[11],"Dicembre");
    
    
    
    }
    
    bool regione_maggior_morbillo(data utente[]){
    	
    int i;
    
    int j;
    
    int k;
    
    int x;
    
    int max;
    
    int morbil[MORBILLI_TOTALI];
    
    
    for(i=0;	i<STRUCT;	i++)		{
    	
    
    	
    
    
    for(j=0;	j<MESI;		j++)		{	
    
    
    
    morbil[j]=utente[i].morbillo[j];
    
    
    
    
    
    									}
    
    
    
    									}
    
    
    for(k=0;	k<MORBILLI_TOTALI;		k++)		{	
    	
    	
    
    
    printf("| %d |",morbil[k]);
    
    
    
    
    												}
    
    
    
    	
    	
    }
    
    
  • Re: Problemi con ordinamento di un'array di struct e con spostamento di valori da un campo di una struct ad un singolo array

    Non si capisce quale sia il problema specifico. E inoltre quel codice non si può leggere, non indentato e con tutte quelle linee vuote.
Devi accedere o registrarti per scrivere nel forum
2 risposte