Problema nel ragionamento sull'HW2

l
lucapalma (7130 points)
1 2 21
asked Dec 29, 2021 in HW2 by lucapalma (7,130 points)
edited Dec 29, 2021 by lucapalma

Ho finito l'Hw2 di recupero, ma purtroppo passo solo 4 test su 8. Ovviamente sono i test giganteschi che è impossibile fare a mano per cui provo a spiegare come ho ragionato per cercare di scovare l'errore.

Nello specifico sono insicuro su un passaggio che riguarda il controllo sui debiti. Nel caso di una transazione valida faccio tutti i controlli necessari su chi trasferisce... arriveremo ad un punto in cui bisogna controllare se il ricevente ha dei debiti nei confronti di uno dei due intermediari. Non trasferisco il denaro nel conto del ricevente, ma lo utilizzo per pagare i debiti prima. Nel caso avanzasse qualcosa allora aggiungerei al conto del ricevente il denaro rimanente.

Credo che questo potrebbe essere un problema. Secondo voi è meglio che io depositi quel denaro nel conto del ricevente e poi gestisca il pagamento di eventuali debiti? Onestamente non saprei cos'altro possa essere andato storto.

EDIT: Ho cambiato il codice facendo prima il deposito e poi controllando eventuali debiti ma niente. Mi chiedevo se magari bisognasse considerare il caso in cui ci fosse qualcuno che provi a trasferire del denaro nonostante abbia debiti?

2 Answers

Best answer
answered Jan 2 by Claudio.DiCiccio (2,770 points)
selected Jan 3 by lucapalma
Buonasera,

La sua interpretazione è giusta: nel caso in cui il ricevente abbia debiti, deve estinguerli non appena arrivino fondi. Tecnicamente, (1) effettuare il deposito prima e subito dopo estinguere i debiti con tutto o parte dell’ammontare, oppure (2) estinguere i debiti prima e poi versare la rimanenza (se ve ne è) sul conto non dovrebbe essere differente perché il saldo al termine del processamento resta lo stesso. In ogni caso, mi sorge il dubbio se abbia fatto sì che i debiti vengano estinti indipendentemente da chi sia l’intermediario previsto dalla transazione. Trova un paragrafo nella descrizione dell’esercizio che si occupa solo di specificare come gestire i debiti verso più intermediari – il che non avrebbe ragion d’essere se considerassimo il solo, unico intermediario che viene indicato per transazione. Se sì, probabilmente il bug è altrove.

Buon lavoro,
Claudio Di Ciccio
l
lucapalma (7130 points)
1 2 21
commented Jan 3 by lucapalma (7,130 points)
Sì Prof. ho previsto anche il caso in cui ci sia solo un creditore al quale dover versare il denaro. E' possibile che il soggetto che vuole effettuare la transazione sia in debito? E' l'unico caso che non ho previsto.
federico_fiorelli (9940 points)
2 4 14
answered Dec 29, 2021 by federico_fiorelli (9,940 points)
Buonasera, non ho letto il testo che ha fornito il prof, ma a livello logico credo sia meglio prima depositare nel conto, poi esegui un controllo nel caso quella persona abbia un debito per poi saldarlo... Non saprei come altro aiutarti, credo possa esserti d'aiuto l'utilizzo di un dizionario nel caso non lo usassi già
l
lucapalma (7130 points)
1 2 21
commented Dec 29, 2021 by lucapalma (7,130 points)
Uso solo dizionari praticamente, anche depositando prima non cambiano i risultati.
federico_fiorelli (9940 points)
2 4 14
commented Dec 29, 2021 by federico_fiorelli (9,940 points)
Non saprei che dirti, non avendo il codice sotto mano, per quello che hai scritto non saprei come aiutarti, mi dispiace :/
c
campobassof (1060 points)
2 4 14
commented Dec 30, 2021 by campobassof (1,060 points)
Concordo con questo approccio (ho già consegnto da tempo l'HW2rec). Dividi il problema in due sottoproblemi: la transazione (con tutti i casi e i controlli appropriati) e il temtativo di pagamento del debito.