Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di tonyzz
    Registrato dal
    Sep 2006
    Messaggi
    82

    [C] ricorsione in lista semplice..

    Ciao a tutti, devo svolgere il seguente esercizio:

    Scrivere una funzione che riceva in ingresso una testa di lista i cui
    elementi sono di tipo film_t, una stringa director corrispondente al
    nome di un regista e un intero year corrispondente ad un anno. La
    funzione cerca tutti i film del regista specificato da director,
    prodotti prima dell’anno specificato da year e ne stampa a video le
    relative informazioni. La funzione restituisce poi al chiamante anche
    l’incasso complessivo di tutti film trovati.

    Questa è la dichiarazione degli elementi di lista:

    typedef struct film_t
    char titolo[20];
    char regista[30];
    int annoProduzione;
    int incasso;
    film_t *next;
    } film_t


    Mi sono bloccato perchè non riesco a fare in modo di scorrere più volte la lista.. Mi spiego meglio, ho capito come cercare una singola info, ad esempio in questo codice cerco un particolare studente:

    ......

    gets(name);

    if (strcmp(testa->nome,name)==0)
    {
    printf("Nome: %s\n", testa->nome);
    printf("Media: %d", testa->media);
    }
    else
    {
    tmp2=testa->next;
    do
    {
    if (strcmp(tmp2->nome,name)==0)
    {
    printf("Nome: %s", tmp2->nome);
    printf("Media: %d", tmp2->media);
    trovato=1;
    }
    tmp2=tmp2->next;
    }
    while(trovato!=1);
    }
    break;


    Ora dovrei con una procedura simile trovare la soluzione all'ese che ho presentato all'inizio, il problema è che non so come scorrere l'intera lista in cerca di più informazioni, senza uscire subito al primo valore trovato.. Ho provato a far così, ma come vedete mi sono bloccato..
    Mi potreste gentilmente aiutare?

    grazie





    int cerca(film_t *testa,char director[],int year)

    int cont=0;
    film_t *temp,*temp2;

    if(strcmp(testa->regista,director)==0)
    {
    if(testa->anno < year)
    {
    printf("titolo del film: %s",testa->titolo);
    ....

    cont=cont + testa->incasso;

    temp2=testa->next;

    }

    do{
    if(strcmp(temp2->regista,director)==0)
    {
    if(temp2->anno < year)
    {
    printf("titolo del film: %s",temp2->titolo);
    ....

    cont=cont + temp2->incasso;

    temp2=temp2->next;
    }
    }
    }
    while(non lo so..);

    else

    temp2=testa->next;

    do{
    if(strcmp(temp2->regista,director)==0)
    {
    if(temp2->anno < year)
    {
    printf("titolo del film: %s",temp2->titolo);
    ....

    cont=cont + temp2->incasso;

    temp2=temp2->next;
    }
    }
    }
    while(non lo so..);


    return(cont);

    }

  2. #2
    Utente di HTML.it L'avatar di tonyzz
    Registrato dal
    Sep 2006
    Messaggi
    82
    E se facessi in questo modo sarebbe corretto?

    int cerca(film_t *testa,char director[],int year)

    int cont=0;



    while(testa)
    {

    if(strcmp(testa->regista,director)==0)
    {
    if(testa->anno < year)
    {
    printf("titolo del film: %s",testa->titolo);
    ....

    cont=cont + testa->incasso;

    testa=testa->next;

    }
    testa=testa->next;

    }

    return(cont);

    }


    Scusate ancora il disturbo..

  3. #3
    Utente di HTML.it L'avatar di tonyzz
    Registrato dal
    Sep 2006
    Messaggi
    82
    Ok grazie lo stesso

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 © 2024 vBulletin Solutions, Inc. All rights reserved.