Passaggio di un membro struttura a funzione

di
Anonimizzato21335
il
14 risposte

Passaggio di un membro struttura a funzione

Salve. Data una struttura
typedef struct{
char nome[m];
etc..
}struttura;

E un array struttura x[n];
Dovrei creare una funzione che dato l insieme dei nomi e un nome inserito dall utente deve restituire 1 se il nome viene trovato.
La funzione deve essere generale quindi non del tipo:
int funzione(struttura x[], int n, char *nomedacercare);

Ma passare una matrice con i nomi della struttura invece dell intera struttura

Vorrei capire se esiste un modo per passare ad Una funzione del genere solo tutto i nomi dell array struttura.

L unica soluzione che ho trovato e quella di copiare i nomi in una matrice char e poi passarla alla funzione.

Grazie anticipatamente

14 Risposte

  • Re: Passaggio di un membro struttura a funzione

    Ma perché passare solo i nomi?
  • Re: Passaggio di un membro struttura a funzione

    Perché devo effettuare questa ricerca del nome su diversi array struttura di tipo diverso. E vorrei usare una sola funzione per tutti
  • Re: Passaggio di un membro struttura a funzione

    Non puoi. Quante strutture diverse sono? Puoi creare un array di puntatiri a puntatori alle diverse strutture e passare questo
  • Re: Passaggio di un membro struttura a funzione

    Non mi è molto chiaro. Potresti farmi un esempio pratico?
  • Re: Passaggio di un membro struttura a funzione

    Prima dell'esempio, mi mostri le strutture di cui parli, come ti avevo chiesto?
  • Re: Passaggio di un membro struttura a funzione

    Struttura 1

    typedef struct{
    int giorno;
    int mese;
    int anno
    }data;

    typedef struct{
    char nome[20];
    int quantita;
    data scadenza;
    }alimento;

    Struttura 2

    typedef struct{
    int nome_ingrediente[20];
    int quantita;
    }ingrediente;

    typedef struct{
    char nome[40];
    ingrediente numero_ingredienti[10];
    int Kcal;
    char preparazione[200];
    }ricetta;
  • Re: Passaggio di un membro struttura a funzione

    E vorresti passare le strutture alimento e ricetta?
  • Re: Passaggio di un membro struttura a funzione

    Si con una funzione comune, per ricercare il nome e restituire l indice se il nome viene trovato. Attualmente utilizzo due funzioni separate
  • Re: Passaggio di un membro struttura a funzione

    Scusa ma non capisco ancora il problema ...

    Mostra queste due funzioni e come le usi nel main ...
  • Re: Passaggio di un membro struttura a funzione

    int main()
    {
        alimenti lista_alimenti[20];
        ricette lista_ricette[20];
        int indice_alimenti;
        int indice_ricette;
        
        ...//inizializzo strutture
        
        indice_alimenti = cerco_alimento(lista_alimenti, 20, nome_da_cercare);
        
        indice_ricette = cerco_ricetta(lista_ricette, 20, nome_da_cercare);
        
        return 0;
        
    }
    
    
    int cerco_alimento(alimenti lista_alimenti[], int n, char *nome)
    {
        int i;
        for(i=0; i<n; i++)
        {
            if(strcmp(lista_alimenti[i].nome, nome)==0)
                return i;
         }
         
         return -1;
    }
    
    
    int cerco_ricetta(ricetta lista_ricette[], int n, char *nome)
    {
        int i;
        for(i=0; i<n; i++)
        {
            if(strcmp(lista_ricette[i].nome, nome)==0)
                return i;
         }
         
         return -1
    }
    
  • Re: Passaggio di un membro struttura a funzione

    Quindi fai due ricerche che ti danno due risultati ma potresti usare una funzione sola, da chiamare con

    indice = ricerca(lista_alimenti, lista_ricette, 20, nome_da_cercare);
  • Re: Passaggio di un membro struttura a funzione

    E nella funzione?
  • Re: Passaggio di un membro struttura a funzione

    Ovviamente inserisci il codice che fa la ricerca prima nella prima struttura e poi nella seconda (se non trova nella prima).
  • Re: Passaggio di un membro struttura a funzione

    Capito. Grazie
Devi accedere o registrarti per scrivere nel forum
14 risposte