Struttura dati e funzioni

di il
12 risposte

Struttura dati e funzioni

Come faccio a passare una struttura dati in una funzione? Ad esempio ho la seguente struttura dati:
int giorni=5;
typedef
struct{
int numeropagina;
char testo[20];
}paginaagenda;
paginaagenda agenda[giorni];

12 Risposte

  • Re: Struttura dati e funzioni

    Ho problemi anche per il passaggio di array a funzioni come devo fare ????HELP
  • Re: Struttura dati e funzioni

    
    struct _foo
    {
      int dummy;
      /** altre dischiarazioni qui*/
    };
    
    void foo_ptr_one (struct _foo *my_foo)
    {
      /** 
        my_foo è un ptr per cui il mio valore è in:
        my_foo->dummy
      */
    }
    
    void  foo_ptr_many (struct _foo *my_foo, int n)
    {
      /** 
        my_foo è un ptr al primo elemento dell' array n per cui il mio valore è in:
        my_foo[x]->dummy (dove x>=0 && x<n)
      */
    }
    
    void  foo_struct (struct _foo my_foo)
    {
      /** 
        my_foo è la struct per cui il mio valore è in:
        my_foo.dummy
      */
    }
    
    void  foo_struct_many (struct _foo my_foo[], int n)
    {
      /** 
        in questo caso, nonostante passiano un array di struct 
        intelligentemente non viene ricopiato ma passato il ptr al primo elemento
        proprio come la funzione foo_ptr_many.
        my_foo[x]->dummy (dove x>=0 && x<n)
        
      */
    }
    
    int main ()
    {
      #define N 256
      struct _foo foo;
      struct _foo foo_bar[N];   
      
      foo_ptr_one  (&foo);
      foo_ptr_many (&foo_bar[0], N);
      foo_struct (foo);
      foo_struct_many (foo_bar,N);
      return 0;
    }
    
  • Re: Struttura dati e funzioni

    Oddio non ci capisco una mazza sono alle prime armi cioè nel mio caso per quanto riguarda le strutture dati:
    int main(){
    typedef
    struct{
    char nome[20];
    char cognome[20];
    char matricola[20];
    }dati;

    dati studente;

    funzioni_inserisci_dati("cosa devo passare qui alla funzione"?????????")
  • Re: Struttura dati e funzioni

    Non ho la sfera di cristallo che mi dice cosa devi fare in quella funzione.
    io ti ho elencato i vari metodi per passare la/e struct.
  • Re: Struttura dati e funzioni

    #include<iostream>
    #include<stdio.h>
    void leggi(struct informazioni a){
    char temp[20];
    int i;
    for(i=0;i<n-1;i++){
    printf("inserisci nome,cognome e matricola:");
    scanf("%s\n",&temp);
    strcpy(a.nome,temp);
    scanf("%s\n",&temp);
    strcpy(a.cognome,temp);
    scanf("%s\n",&temp);
    strcpy(a.matricola,&temp);
    }
    }
    
    int main(){
    typedef
     struct{
      char nome[20];
      char cognome[20];
      char matricola[20];
    }informazioni;
    informazioni uni;
    leggi(uni);
    system("PAUSE");
    return 0;
    }
    "NIENTE per quanto riguarda il passaggio di strutture dati HO PROVATO MA MI DA ERRORE PUOI AIUTARMI CON IL CODICE"
  • Re: Struttura dati e funzioni

    Iostream && stdio ?
    c || ++
    
    void leggi(informazioni *a)
    {
      printf("inserisci nome,cognome e matricola:\n");
      scanf("%s",a->nome);
      scanf("%s",a->cognome);
      scanf("%s",a->matricola);
    }
    
    ...
    informazioni uni[MAX_UNI];
    ...
    leggi(&uni[i]);
    ....
    
  • Re: Struttura dati e funzioni

    A me non c++ e dev c++ cmq niente ho pravato come ha i detto tu ma non mi funziona
  • Re: Struttura dati e funzioni

    Chissà che significa non funziona!
    
    #include<stdio.h>
    typedef struct{
      char nome[20];
      char cognome[20];
      char matricola[20];
    }informazioni;
    
    void leggi(informazioni *a)
    {
      printf("inserisci nome,cognome e matricola:\n");
      scanf("%s",a->nome);
      scanf("%s",a->cognome);
      scanf("%s",a->matricola);
    }
    
    void mostra_tutti (informazioni uni[],int n)
    {
      int i;
      for (i=0;i<n;i++)
      {
        printf ("Elemento #%d\n",i);
        printf ("nome:%s\n",uni->nome);
        printf ("cognome:%s\n",uni->cognome);
        printf ("matricola:%s\n",uni->matricola);
      }
    }
    int main()
    {
      #define MAX_UNI 1
      informazioni uni[MAX_UNI];
      int i;
    
      for (i=0;i<MAX_UNI;i++)
        leggi(&uni[i]);
    
      mostra_tutti (uni,MAX_UNI);
    
      return 0;
    }
    
  • Re: Struttura dati e funzioni

    Ok ora si però non so il perchè ma il nostro prof dice che non dobbiamo usare variabili globali in questo caso informazioni e stata dichiarata come variabile globale giusto??
  • Re: Struttura dati e funzioni

    Attualmente di globale c'è solo la 'dichiarazione' della struttura, è corretto istruire le funz di cosa è 'informazioni'. le variabili come vedi sono tutte locali compreso il define che nella maggioranza dei casi è posto globalmente

    il tuo prof ha ragione... sarebbe meglio non usarle affatto, anche se in un progetto di medie/grandi dimensioni qualcuna ci scappa per comodità di relazione
  • Re: Struttura dati e funzioni

    Ti ringrazio per le risposte ti vorrei chiedere altra cosa visto che noi non usiamo "a->nome " ma invece "a.nome" e "a.cognome" ecc per fare ciò devo inserire nella funzione leggi il ciclo for???
  • Re: Struttura dati e funzioni

    Per cui non sai niente dei puntatori a struct?
    devi passare l'elemento e non l'indirizzo
Devi accedere o registrarti per scrivere nel forum
12 risposte