Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    [C]passaggio di parametri Record?

    Qualcuno sa dirmi come si passano i parametri per i Record?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Che intendi con "Record" ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    intendo questo:
    codice:
    typedef struct recRubrica    {
         char Cognome[10][10];
         char Nome[10][10];
         int Numero
        }t_Rubrica;

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Se vuoi passare una struttura è bene usare un puntatore alla struttura
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    che sarebbe questo:
    codice:
    t_Rubrica rubrica
    per esempio, ho iniziato a fare una rubrica telefonica:
    codice:
    #include <stdlib.h>#include <string.h>
    #define MAX 100
    
    
    /*Variabili Globali*/
    typedef struct recRubrica
        {
         char Cognome[10][10];
         char Nome[10][10];
         int Numero
        }t_Rubrica;
        
    
    
    
    
    
    
    /*Prototipi Procedure*/
    void visualmenu();
    void scelta(int *N);
    void iniazializzazione(t_Rubrica rubrica & Nome);
    void visualrubrica(t_Rubrica rubrica);
    void aggiungi(int *j,t_Rubrica rubrica);
    
    
    
    
    
    
    /*Programma Principale*/
    int main()
    {
        t_Rubrica rubrica[MAX];
        int n;
        int c=0;
        iniazializzazione(rubrica & Nome);
        do{
        visualmenu();
        scaleta(&n);
        gestione(n,&c,&rubica);
        system("PAUSE");
        system("cls");
        }while(n=!5);
        system("PAUSE");
        return(0);
    }
    
    
    /*Procedure:*/
    void iniazializzazione(t_Rubrica rubrica & Nome){
            int i;
            for(i=0;i<MAX;i++)              
            rubrica[i].*Nome[0][0] = 'x';
                              
    return;                          
    }
    void visualmenu(){
         printf("\t\t\tRUBRICA TELEFONICA:");
         printf("\n\n\t 1-Aggiungi nuova voce in rubrica");
         printf("\n\n\t 2-Ricerca per nome");
         printf("\n\n\t 3-Ricerca per cognome");
         printf("\n\n\t 4-Stampa intera rubrica");
         printf("\n\n\t 5-Esci");  
    return;
         }
         
    void scelta(int *N){
         printf("\n\tInserisci scelta: ");
         scanf("%d",N);
    return;
         }
    
    
    void gestione(int n,int *c,t_Rubrica rubrica){
         switch(n){
         case 1:   aggiungi(j,&rubrica);        
                   break;
         case 2:
                   break;
         case 3:
                   break;
         case 4:   visualrubrica(&rubrica);
                   breack;
         }
         
    return;
           }
    
    
    void aggiungi(int *j,t_Rubrica rubrica){
         if(*j!=MAX){
              printf("\n\tInserisci Nome: ");
              scanf("%s",rubrica[j].Nome);
              printf("\n\tInserisci Cognome: ");
              scanf("%s",rubrica[j].Cognome);
              printf("\n\tInserisci Numero telefonico: ");
              scanf("%s",rubrica[j].Numero);
              (*j)++;
         }else{
         printf("\n\n\t\tMemoria piena");      
         }
    return;
         }
    
    
    void visualrubrica(t_Rubrica rubrica){
         int i;
         printf("\n\tNOME \t- \tCOGNOME \t- \tNUMERO TELEFONICO"); 
         for(i=0;i<MAX;i++){
         if(rubrica[i].*Nome[0][0]!='x'){
         printf("\n\t%s \t  \t%s  \t%d",rubrica[i].*Nome,rubrica[i].*Cognome,rubrica[i].*Numero);                          
         } 
         }    
    return;
         }
    è incompleta ma il mio problema è il passaggio di parametri.. ho fatto un po' di testa mia nei parametri, puoi dirmi qualcosa?

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Intanto iniazializzazione è sbagliato come nome e non si capisce cosa intendi nei parametri con

    codice:
    (t_Rubrica rubrica & Nome);
    che vuol dire & Nome ??

    Infine, come ti dicevo, è bene che lavori con i puntatori quindi, ad esempio

    codice:
    void Inizializzazione(t_Rubrica *rub)
    e così via
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Quindi devo usare il puntatore e gli devo passare l'intera struttura? Non i campi? E il puntatore, nelle procedure, va sul nome della struttura o sul nome del campo?

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Queste sono nozioni di base della programmazione C che trovi in qualsiasi libro, non nei forum. Non è possibile illustrare un capitolo sui "puntatori a struttura" in una risposta in un forum, per questo c'è il libro.

    Fra l'altro, dalle affermazioni che fai, mi sa che dovresti ripassare anche le strutture.

    Nessuno nasce "imparato" (anzi, tutti studiano dai libri) ma non ha senso andare "a tentoni", le nozioni vanno studiate e capite.

    Con la typedef hai un nuovo "tipo di dato" quindi, dopo aver scritto il parametro come ti ho suggerito, passi la tua variabile per puntatore

    Inizializzazione(&rubrica);
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    ho modificato alcune cose come tu mi hai detto:
    codice:
    #include <stdlib.h>#include <string.h>
    #define MAX 100
    
    
    
    
    /*Variabili Globali*/
    typedef struct recRubrica
        {
         char Cognome[10];
         char Nome[10];
         int Numero;
        }t_Rubrica;
        
    
    
    
    
    
    
    
    
    
    
    
    
    /*Prototipi Procedure*/
    void visualmenu();
    void scelta(int *N);
    void iniazializzazione(t_Rubrica *rubrica);
    void visualrubrica(t_Rubrica *rubrica);
    void aggiungi(int *c,t_Rubrica *rubrica);
    void gestione(int n,int *c,t_Rubrica *rubrica);
    
    
    
    
    
    
    
    
    
    
    /*Programma Principale*/
    int main()
    {
        t_Rubrica rubrica[MAX];
        int n;
        int c=0;
        iniazializzazione(&rubrica);
        do{
        visualmenu();
        scelta(&n);
        gestione(n,&c,&rubica);
        system("PAUSE");
        system("cls");
        }while(n=!5);
        system("PAUSE");
        return(0);
    }
    
    
    
    
    /*Procedure:*/
    void iniazializzazione(t_Rubrica *rubrica){
            int i;
            for(i=0;i<MAX;i++)              
            rubrica[i].Nome[0]= 'x';
                              
    return;                          
    }
    void visualmenu(){
         printf("\t\t\tRUBRICA TELEFONICA:");
         printf("\n\n\t 1-Aggiungi nuova voce in rubrica");
         printf("\n\n\t 2-Ricerca per nome");
         printf("\n\n\t 3-Ricerca per cognome");
         printf("\n\n\t 4-Stampa intera rubrica");
         printf("\n\n\t 5-Esci");  
    return;
         }
         
    void scelta(int *N){
         printf("\n\tInserisci scelta: ");
         scanf("%d",N);
    return;
         }
    
    
    
    
    void gestione(int n,int *c,t_Rubrica *rubrica){
         switch(n){
         case 1:   aggiungi(c,&rubrica);        
                   break;
         case 2:
                   break;
         case 3:
                   break;
         case 4:   visualrubrica(&rubrica);
                   break;
         }
         
    return;
           }
    
    
    
    
    void aggiungi(int *c,t_Rubrica *rubrica){
         if(*c!=MAX){
              printf("\n\tInserisci Nome: ");
              scanf("%s",&rubrica[*c].Nome);
              printf("\n\tInserisci Cognome: ");
              scanf("%s",&rubrica[*c].Cognome);
              printf("\n\tInserisci Numero telefonico: ");
              scanf("%s",&rubrica[*c].Numero);
              (*c)++;
         }else{
         printf("\n\n\t\tMemoria piena");      
         }
    return;
         }
    
    
    
    
    void visualrubrica(t_Rubrica *rubrica){
         int i;
         printf("\n\tNOME \t- \tCOGNOME \t- \tNUMERO TELEFONICO"); 
         for(i=0;i<MAX;i++){
         if(rubrica[i].Nome[0]!='x'){
         printf("\n\t%s \t  \t%s  \t%d",rubrica[i].Nome,rubrica[i].Cognome,rubrica[i].Numero);                          
         } 
         }    
    return;
    }
    alcune cose ho risolto, altre invece no .. riscontro comunque problemi nel passaggio di parametri

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Detta così non so cosa risponderti ... dovresti essere molto più preciso
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.