RISOLTO [C] Esercizio gestione biblioteca

Pubblicità
Stato
Discussione chiusa ad ulteriori risposte.
Il problema sta in lis = tmp;. 'Lis' è una variabile locale passata per valore alla funzione, quando chiami cancellalibri(lis->next, titolo), lis->next viene copiato in lis, ma quando modifichi lis nella chiamata ricorsiva, non viene modificato il valore originale. Essendo questa una funzione ricorsiva, dovevi restituire il valore di 'tmp', come avevi fatto nel codice postato più sù (non capisco perché hai fatto questa modifica).

P.S.: non serve inserire la dimensione di un array tra i parametri di una funzione, perché non c'è alcuna garanzia che il compilatore esegua un controllo su tale valore e impedisca di passare un array di dimensione diversa.
si ho restituito temp ho corretto sopra
--- i due messaggi sono stati uniti ---
ma ora cancella in coda ma non in testa
 
e sempre nel caso in cui voglio eseguire una richiesta in realtà inserisci elemento da cancellare non dovrebbe esserci ma poi non mi cancella il libro quindi l'ho inserito...se puoi dirmi come posso risolvere anche questo...te ne sarei molto grata
Codice:
ricerca(lista);
  printf("Inserisci elemento da cancellare: ");
scanf("%s", titolo);
     cancellalibri(lista,titolo);
     scriviLista(lista);
 
E così si chiama una funzione? cancellalibri restituisce un valore (un puntatore alla nuova lista), per cui devi assegnare questo valore alla lista stessa. La chiamata corretta è lista = cancellalibri(lista, titolo);.
 
E così si chiama una funzione? cancellalibri restituisce un valore (un puntatore alla nuova lista), per cui devi assegnare questo valore alla lista stessa. La chiamata corretta è lista = cancellalibri(lista, titolo);.
si avevo provato ma non cancellava nulla ora va grazie :)
--- i due messaggi sono stati uniti ---
come faccio ora ad prendere il titolo nel file delle richieste, controllare se è presente nella lista dei libri e poi eliminarlo utilizzando le funzioni di ricerca ed elimina?
 
Ultima modifica:
Spiegati meglio: com'è fatto questo file? Hai già abbozzato del codice? Se sì, postalo, ma mettilo sotto spoiler e tag CODE (basta racchiuderlo tra [SPOILER*][CODE*]qui il codice[/CODE*][/SPOILER*] senza *).
 
Spiegati meglio: com'è fatto questo file? Hai già abbozzato del codice? Se sì, postalo, ma mettilo sotto spoiler e tag CODE (basta racchiuderlo tra [SPOILER*][CODE*]qui il codice[/CODE*][/SPOILER*] senza *).
no non ho fatto il codice in pratica ho solo creato il file ed inserito sopra le varie richieste
--- i due messaggi sono stati uniti ---
no non ho fatto il codice in pratica ho solo creato il file ed inserito sopra le varie richieste con titolo autore codice nome e matricola...ora vorrei che da tale file leggo il titolo questo viene cercato nella lista dei libri ora se c'e allora la richiesta e stata accettata ed elimino il libro dalla lista, altrimenti la richiesta non è stata accettata
 
Quello che voglio dire è che, se sai già in anticipo quale titolo (uno solo) devi leggere dal file per poi cercare il libro corrispondente nella lista, allora puoi fare una ricerca nel file. Se invece devi leggere tutti i titoli dal file, forse ti conviene seguire lo stesso approccio di prima, ovvero caricare tutto il file in una lista, anzi, ti direi di usare un array, perché è più efficiente, e non devi eliminare elementi, quindi non c'è vantaggio nell'usare una lista. Ad ogni modo, non è che la traccia specifica quale strategia usare?
 
Quello che voglio dire è che, se sai già in anticipo quale titolo (uno solo) devi leggere dal file per poi cercare il libro corrispondente nella lista, allora puoi fare una ricerca nel file. Se invece devi leggere tutti i titoli dal file, forse ti conviene seguire lo stesso approccio di prima, ovvero caricare tutto il file in una lista, anzi, ti direi di usare un array, perché è più efficiente, e non devi eliminare elementi, quindi non c'è vantaggio nell'usare una lista. Ad ogni modo, non è che la traccia specifica quale strategia usare?
no però in pratica il in una scelta faccio la richiesta del libro (quindi se posso prenderlo o meno) e poi in un'altra scelta devo eseguire la richiesta quindi avevo pensato di creare un file in cui vado ad inserire le richieste pero appunto quando le devo eseguire non so come collegare la richiesta alla ricerca del titolo nel libro e alla cancellazione....non so se mi sono spiegata bene
 
Non so se ti conviene. Non è che potresti postare la traccia esatta?
All’avvio del programma, si richiede che l’utente possa eseguire le seguenti operazioni:
  1. Aggiungere una richiesta di uno studente;
  2. Prendere in carico una richiesta, ovvero:
    1. Soddisfare la richiesta oppure
    2. Sospendere la richiesta (se il libro richiesto è momentaneamente non disponibile)
    3. Terminare, solo se tutte le richieste sono state soddisfatte.


--- i due messaggi sono stati uniti ---
All’avvio del programma, si richiede che l’utente possa eseguire le seguenti operazioni:
  1. Aggiungere una richiesta di uno studente;
  2. Prendere in carico una richiesta, ovvero:
    1. Soddisfare la richiesta oppure
    2. Sospendere la richiesta (se il libro richiesto è momentaneamente non disponibile)
    3. Terminare, solo se tutte le richieste sono state soddisfatte.

io in realtà mi stavo facendo la lista delle richieste
 
Stato
Discussione chiusa ad ulteriori risposte.
Pubblicità
Pubblicità
Indietro
Top