Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Ovviamente non lo so, ma credo che chi ha assegnato l'esercizio al Joker si aspetti una soluzione molto più semplice. E' un po' come quando l'insegnante assegna un esercizio di geometria alle medie... non è che si aspetti che uno lo risolva impiegando la trigonometria o chissà quale altro metodo che non è ancora stato spiegato! (per quanto sia magari possibile farlo)
ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.
I consigli di template sono sempre buoni, di fatto quell'uomo è una miniera d'oro di consigli... A cui piace usare l hash dei dati, lol. A questo proposito ti consiglio di guardare il metodo time della libreria standard.
I consigli di template sono sempre buoni, di fatto quell'uomo è una miniera d'oro di consigli... A cui piace usare l hash dei dati, lol.
Sono un fissato... tant'è che sto svolgendo delle ricerche sullo sviluppo di un hashing efficiente (Cormen propone alcuni testi, e sto cercando di reperirli per cominciare da lì la mia indagine), e forse ci scriverò la tesi di laurea
Il fatto è che sono da sempre un maniaco dell'ordine, e l'idea di poter sviluppare delle strutture dati "intrinsecamente ordinate" mi affascina da morire... e poi, spesso funzionano (altrimenti non le proporrei)
Testo quotato
Postato originariamente da Joker22:
Ragazzi .. davvero non ci sto capendo niente ...
mi sa che me lo dovete spiegare passo passo .. col cucchiaino ...
Ok, andiamo lentamente...
Intanto: dici che questo progetto è per "Programmazione 1". Ti riferisci a questo corso: http://marra.di.unimi.it/prog1/ o analoghi?
Se si, allora lascia perdere la mia idea delle tabelle di hash, che probabilmente non ti avranno mai citato (nè ti citeranno mai, nell'ambito di quel corso)...
Un'idea adatta a te potrebbe essere quella dell'array di transazioni, quindi ti spiego quella:
Logicamente, la maniera più elementare di registrare degli eventi è scriverli uno dopo l'altro man mano che avvengono, giusto?
Bene, l'idea che ti voglio proporre è assolutamente analoga: per ogni bibita acquistata alla tua macchinetta, prendi i dati significativi (cosa è stato comprato ed in che giorno) e li inserisci in coda ad un array. In questo modo, avrai una specie di "elenco delle transazioni", e scorrendolo potrai determinare quali e quante transazioni ti interessino.
Supponendo che tu definisca un vettore elenco_vendite[numero_vedite] del tipo
Codice sorgente - presumibilmente C/C++
struct vendita
{
int bibita;
int data;
};
O simili, un elementare algoritmo ricorsivo potrebbe essere questo:
Codice sorgente - presumibilmente C/C++
funzione trova_vendite(bibita, data, contatore, elenco_vendite, posizione, numero_vendite)
{
if(posizione >= numero_vendite)
{
/*Hai finito di scandire l'elenco, guarda in CONTATORE quante vendite hai trovato*/
/*...*/
return;
}
if(elenco_vendite[posizione].data == data && elenco_vendite[posizione].bibita == bibita)
contatore++;
trova_vendite(bibita, data, contatore, elenco_vendite, posizione + 1, numero_vendite);
return;
}
Così è più chiaro?
PS: un esercizio del genere sarebbe più logico se sviluppato iterativamente, perchè di fatto si riduce allo scorrimento di una sequenza di dati Ma ti è stata richiesta una soluzione ricorsiva, quindi...
Ultima modifica effettuata da Template il 09/02/2016 alle 8:16
Postato originariamente da Joker22: la ricorsività è una rottura di palle , ma il prof è fissato
Non so che CDL tu stia frequentando... ma se è uno di quelli in cui la programmazione è importante, ti assicuro che ad un certo punto inizierai a benedire la ricorsione
EDIT: quasi dimenticavo: chiaramente, il metodo che ti ho spiegato è semplicissimo, ma decisamente inefficiente, perchè avendo un array già di suo ordinato (le inserzioni avvengono man mano che le bibite vengono acquistate, quindi intrinsecamente le transazioni sono in ordine cronologico) potresti tranquillamente avvalerti di un metodo di ricerca più efficiente del semplice scorrimento... volevo fartelo notare in caso ti andasse di ragionarci un po' su
Ultima modifica effettuata da Template il 09/02/2016 alle 11:50