Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    3

    [C] array di struct e procedure

    Ciao a tutti,
    mi sono appena registrato e gia vi chiedo una mano.....Dovrei gestire un archivo di persone e attraverso le procedure inserire e visualizzare i dati....Ho fatto questo:

    Non me lo compila mi dice undefined reference to `insersici'
    collect2: ld returned 1 exit status, non capisco il xke, l'ho guardato più di una volta e l'algoritmo sembra esatto...
    Spero in una vostra risposta...

    codice:
    #include<stdio.h> 
    #define N 10 
    typedef struct{                 char Nome[20];                 char Cognome[20];                 int Eta;                 int flag;               } Persona; void inserisci(Persona *archivio1,int *cont_persona1); 
     int main() { 
    Persona archivio[N];
     int i;
     int cnt_persona=0; 
    int scelta;
     for(i=0;i<N;i++) archivio[i].flag=0;
     do{         printf("%s\n%s\n%s\n",                 
    "**************Menu************",               
    "0 per terminare,1 per inserire",                
     "2 per visualizzare");        
    scanf("%d",&scelta);        
     switch(scelta){                         case 1: insersici(archivio,&cnt_persona);break;                           
                                                      case 2:                         
                                                      default: if(scelta!=0) printf("Hai sbagliato numero riprova\n");                       
      }    
    }while(scelta != 0); 
    return 0; } 
    
    
    void inserisci(Persona *archivio1,int *cont_persona1) {       
     int i=0;       
     if(*cont_persona1<N)         
    {                 
    if(archivio1[i].flag==0)                  
     {                         
    printf("Inserisci Nome e Cognome\n");                         scanf("%s%s",archivio1[i].Nome,archivio1[i].Cognome);                       
      printf("Inserisci eta'\n");                         
    scanf("%d",&archivio1[i].Eta);                         
    archivio1[i].flag=1;                         
    *cont_persona1=i ;                        
     i++;                  }         
    }         else printf("Mi dispiace archivio pieno\n"); }

  2. #2
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,563
    per caso sei di napoli?
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    3
    No....L'errore l'ho trovato ho scitto male il nome della funzione nello switch.....ma oltre questo non me lo compila ancora.......

  4. #4
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    Perchè la funzione è definita dopo il main e il compilatore non la conosce.. metti un prototipo prima del main.

  5. #5
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,563
    Oppure definisci la funzione stessa prima del main
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    3
    Ho modificato un po il codice e ora funziona...ma nn capisco xke mi fa inserire ma quando gli chiedo di visualizzare mi ritorna al menu.....
    codice:
    #include<stdio.h> 
    #include<string.h>
     #define N 10
     typedef struct{ 		char Nome[20]; 		
    char Cognome[20]; 		
    int Eta; 		
    int flag; 	     
     } Persona; 
    void inserisci(Persona *archivio1,int *i); 
    void visualizza(Persona *archivio2,int *i);
     int main() 
    { 
    Persona archivio[N];
     int i;
     int cnt_persona=0;
     int scelta;
     for(i=0;i<N;i++) archivio[i].flag=0; 
    do{ 	printf("%s\n%s\n%s\n", 		"**************Menu************", 		
    "0 per terminare,1 per inserire", 		
    "2 per visualizzare"); 	
    scanf("%d",&scelta); 	
    switch(scelta){ 			
    case 1:  inserisci(archivio,&cnt_persona);break; 				 				 			
    case 2:	visualizza(archivio,&cnt_persona);break;   			
    default: if(scelta!=0) printf("Hai sbagliato numero riprova\n"); 			
    }    
    }while(scelta != 0);
     return 0; 
    } 
    void inserisci(Persona *archivio1,int *i) 
    { 	int j=0; 	
              j= *i; 	
    if(j<N) 	
    {  		
    if(archivio1[j].flag==0) 		
    { 			
    printf("Inserisci Nome e Cognome\n"); 			scanf("%s%s",archivio1[j].Nome,archivio1[j].Cognome); 			
    printf("Inserisci eta'\n"); 			
    scanf("%d",&archivio1[j].Eta); 			
    archivio1[j].flag=1; 			
    j++; 		 		
    } 	
    } 	
    else printf("Mi dispiace archivio pieno\n"); 	 
    } 
    void visualizza(Persona *archivio2,int *i)
     { 	int j=0; 
    	j= *i; 	 	
    for(j=0;j<N;j++) 	 	
    if(archivio2[j].flag==1) 	
    { 	
    printf("Persona #%d\nNome:%s\tCognome:%s\tEta:%d", 		j+1,archivio2[j].Nome,archivio2[j].Cognome,archivio2[j].Eta); 	
    putchar('\n'); 	
    } 	
     }

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.