RISOLTO [C] Esercizio gestione biblioteca

Stato
Discussione chiusa ad ulteriori risposte.

sare1234

Utente Attivo
262
3
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
Post unito automaticamente:

ma ora cancella in coda ma non in testa
 

fabio93

Utente Attivo
609
173
CPU
AMD Ryzen 5 2400G
Dissipatore
Arctic Alpine64 Plus
Scheda Madre
Gigabyte GA-AX370-Gaming 3
HDD
Crucial MX500 250 GB, Crucial BX500 240 GB
RAM
G.Skill F4-3200C14D-16GFX FlareX 16 GB
Monitor
HP 2010i
PSU
Corsair TX550M
Case
Sharkoon M25-W
Periferiche
Magicforce 68, Logitech G203
OS
Windows 10 Pro, Fedora 31
Fa' vedere il codice in cui la chiami
 

sare1234

Utente Attivo
262
3
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);
 

fabio93

Utente Attivo
609
173
CPU
AMD Ryzen 5 2400G
Dissipatore
Arctic Alpine64 Plus
Scheda Madre
Gigabyte GA-AX370-Gaming 3
HDD
Crucial MX500 250 GB, Crucial BX500 240 GB
RAM
G.Skill F4-3200C14D-16GFX FlareX 16 GB
Monitor
HP 2010i
PSU
Corsair TX550M
Case
Sharkoon M25-W
Periferiche
Magicforce 68, Logitech G203
OS
Windows 10 Pro, Fedora 31
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);.
 

sare1234

Utente Attivo
262
3
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 :)
Post unito automaticamente:

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:

fabio93

Utente Attivo
609
173
CPU
AMD Ryzen 5 2400G
Dissipatore
Arctic Alpine64 Plus
Scheda Madre
Gigabyte GA-AX370-Gaming 3
HDD
Crucial MX500 250 GB, Crucial BX500 240 GB
RAM
G.Skill F4-3200C14D-16GFX FlareX 16 GB
Monitor
HP 2010i
PSU
Corsair TX550M
Case
Sharkoon M25-W
Periferiche
Magicforce 68, Logitech G203
OS
Windows 10 Pro, Fedora 31
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 *).
 

sare1234

Utente Attivo
262
3
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
Post unito automaticamente:

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
 

fabio93

Utente Attivo
609
173
CPU
AMD Ryzen 5 2400G
Dissipatore
Arctic Alpine64 Plus
Scheda Madre
Gigabyte GA-AX370-Gaming 3
HDD
Crucial MX500 250 GB, Crucial BX500 240 GB
RAM
G.Skill F4-3200C14D-16GFX FlareX 16 GB
Monitor
HP 2010i
PSU
Corsair TX550M
Case
Sharkoon M25-W
Periferiche
Magicforce 68, Logitech G203
OS
Windows 10 Pro, Fedora 31
Quale titolo devi prendere dal file?
 

fabio93

Utente Attivo
609
173
CPU
AMD Ryzen 5 2400G
Dissipatore
Arctic Alpine64 Plus
Scheda Madre
Gigabyte GA-AX370-Gaming 3
HDD
Crucial MX500 250 GB, Crucial BX500 240 GB
RAM
G.Skill F4-3200C14D-16GFX FlareX 16 GB
Monitor
HP 2010i
PSU
Corsair TX550M
Case
Sharkoon M25-W
Periferiche
Magicforce 68, Logitech G203
OS
Windows 10 Pro, Fedora 31
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?
 

sare1234

Utente Attivo
262
3
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
 

fabio93

Utente Attivo
609
173
CPU
AMD Ryzen 5 2400G
Dissipatore
Arctic Alpine64 Plus
Scheda Madre
Gigabyte GA-AX370-Gaming 3
HDD
Crucial MX500 250 GB, Crucial BX500 240 GB
RAM
G.Skill F4-3200C14D-16GFX FlareX 16 GB
Monitor
HP 2010i
PSU
Corsair TX550M
Case
Sharkoon M25-W
Periferiche
Magicforce 68, Logitech G203
OS
Windows 10 Pro, Fedora 31
Non so se ti conviene. Non è che potresti postare la traccia esatta?
 

sare1234

Utente Attivo
262
3
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.


Post unito automaticamente:

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
 

fabio93

Utente Attivo
609
173
CPU
AMD Ryzen 5 2400G
Dissipatore
Arctic Alpine64 Plus
Scheda Madre
Gigabyte GA-AX370-Gaming 3
HDD
Crucial MX500 250 GB, Crucial BX500 240 GB
RAM
G.Skill F4-3200C14D-16GFX FlareX 16 GB
Monitor
HP 2010i
PSU
Corsair TX550M
Case
Sharkoon M25-W
Periferiche
Magicforce 68, Logitech G203
OS
Windows 10 Pro, Fedora 31
Quindi non si fa esplicito riferimento all'uso di file?
 
Stato
Discussione chiusa ad ulteriori risposte.

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili