Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    643

    [C] problema soluzione esercizio

    Ciao,
    stavo vedendo gli esercizzi di esame di programmazione 1 con le relative soluzioni ma a mio modesto parere questa soluzione mi sembra sbagliata...

    L'esercizio è il seguente:

    "Scrivere una funzione che preso in input il puntatore al primo elemento di una lista di stringhe, elimini i duplicati e ritorni il puntatore alla lista così ripulita.

    Gli elementi della lista hanno il seguente tipo:

    typedef struct SList{
    char str[30];
    struct SList *next;
    };

    Il prototipo della funzione è SList *Ripulisci(SList *)

    Il codice della soluzione è questa ma mi puzza:

    codice:
    /* Riceve in ingresso il puntatore al primo nodo e restituisce il puntatore
        alla lista ripulita */
    SList *Ripulisci(SList *list){
        if(list != NULL && list->next !! NULL){
            SList *e = list;    // Imposta il puntatore e al primo nodo
         
            do{
                if(!strcmp(e-str, e->next-str)){  // Se le stringhe sono uguali
                     SList *p = e->next;
                     e->next = p->next;
                     free(p);
                }
                else
                   e = e->next;
             }while(e->next != NULL);
           }
           return list;    // Ritorna il puntatore all'inizio della lista ripulita
    }
    Le cose che mi sembrano strane sono 2:

    1) Si dichiara ile variabili puntaore *e e *p in mezzo al codice....ma non andrebbero dichiarate all'inizio della funzione o è solo una cosa di stile?

    2) la funzione compara con la strcmp il valore contenuto nel campo str puntato da e con il valore del campo str puntato da str->next.

    Se alla prima esecuzione del ciclo non trova due stringhe uguali il valore di e viene fatto passare al nodo successivo con e = e->next e il ciclo ricomincia...
    ma così non controlla solo nodi adiacenti?!?!

    Cioè io credo che per ogni nodo dovrebbe scorrere tutti i nodi, se trova un nodo contenente la stessa stringa lo elimina e poi continua a scorrere la lista fino alla fine per vedere se c'è un altro doppione e poi rinizia il ciclo dal secondo nodo e fà la stessa cosa....

    Spero di essere stato chiaro
    E' sbagliata questa soluzione (quella del codice)?

    Grazie
    Andrea

  2. #2
    Utente di HTML.it L'avatar di marco_c
    Registrato dal
    Jun 2004
    Messaggi
    1,047

    Re: [C] problema soluzione esercizio

    Originariamente inviato da D4rkAng3l
    1) Si dichiara ile variabili puntaore *e e *p in mezzo al codice....ma non andrebbero dichiarate all'inizio della funzione o è solo una cosa di stile?
    E' solo una cosa di stile.


    Originariamente inviato da D4rkAng3l
    2) la funzione compara con la strcmp il valore contenuto nel campo str puntato da e con il valore del campo str puntato da str->next.
    ma così non controlla solo nodi adiacenti?!?!
    Cioè io credo che per ogni nodo dovrebbe scorrere tutti i nodi, se trova un nodo contenente la stessa stringa lo elimina e poi continua a scorrere la lista fino alla fine per vedere se c'è un altro doppione e poi rinizia il ciclo dal secondo nodo e fà la stessa cosa....
    Hai ragione. Controlla soltanto gli adiacenti.
    Una lista composta da 3 elementi per esempio fatta così:
    x - y - x
    direbbe che non ha duplicati, anche se in realtà la x è duplicata
    Gli uomini si dividono in due categorie: i geni e quelli che dicono di esserlo. Io sono un genio.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    643
    bene...questa era la soluzione del professore messa insieme a tutti gli esercizzi d'esame degli anni passati...io certe cose non me le spiego...è già il secondo esercizio su 5 con soluzione logicamente cannata che trovo...ma perchè succedono queste cose?!?!?! perchè il tuo proff dovrebbe mettere online robba sbagliata sulla quale studiare?!?! non mi dare le soluzioni a questo punto e dimmi:"Povero pezzente fatti gli esercizzi e basta !!!" VVoVe: VVoVe: :master:

  4. #4
    Utente di HTML.it L'avatar di marco_c
    Registrato dal
    Jun 2004
    Messaggi
    1,047
    Originariamente inviato da D4rkAng3l
    bene...questa era la soluzione del professore messa insieme a tutti gli esercizzi d'esame degli anni passati...io certe cose non me le spiego...è già il secondo esercizio su 5 con soluzione logicamente cannata che trovo...ma perchè succedono queste cose?!?!?! perchè il tuo proff dovrebbe mettere online robba sbagliata sulla quale studiare?!?! non mi dare le soluzioni a questo punto e dimmi:"Povero pezzente fatti gli esercizzi e basta !!!" VVoVe: VVoVe: :master:
    forse lo fa per vedere se ve ne accorgete
    Gli uomini si dividono in due categorie: i geni e quelli che dicono di esserlo. Io sono un genio.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    643
    si vabbè...di professori idioti ce ne sono troppi mi sembra...o cmq che se ne fregano

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.