Pages: [1]   Go Down
Print
Author Topic: Compito Incasso  (Read 821 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Fabio93
Matricola
*
Offline Offline

Posts: 14


« on: 04-09-2013, 16:46:47 »

Ragazzi ho qualche dubbio su quali strutture dati utilizzare per risolvere questo esercizio:

"Un negoziante gestisce un'attività commerciale da n giorni, registrandosi l'incasso giornaliero. Alla fine di ogni giornata, vuole calcolare l'incasso totale dal momento dell'inizio dell'attività. Scrivere un metodo per registrare gli incassi giornalieri, un metodo ricorsivo che stampi gli n totali."
Nota 1
attenzione all'efficienza.
Nota 2
evitare funzioni ausiliare.

Personalmente, penso che l'incasso totale di ogni giorno vada registrato in una lista concatenata; ogni singolo incasso invece potrebbe essere registrato(per poi essere sommato con gli altri) in una pila, in una coda o, se si vuole mantenere l'elenco di tutti gli incassi del giorno, in un'altra lista concatenata.(Io penso che lo storico di tutti gli incassi giornalieri vada conservato, qui però non è specificato).

Per quanto riguarda l'efficienza delle operazioni richieste per implementare i metodi:
se la lista usa due riferimenti head e tail:

1)insertTail()=>Push()=>Enqueue O(1)
2)per ottenere l'incasso del giorno bisogna bisogna fare un ciclo e sommare ,o le varie estrazioni, o i campi info della lista. Mi pare che in entrambi i casi sia =>O(n).

Fatte queste considerazioni(probabilmente errate ) , non so come procedere.
Qualche idea?
Logged
W_doppio
Matricola
*
Offline Offline

Gender: Male
Posts: 99



WWW
« Reply #1 on: 06-09-2013, 11:47:26 »

Si più o meno l'idea ce, la lista linkata semplice è la struttura adatta, ma dovresti usare la ricorsione Smiley
Secondo me dovresti procedere così:

Nella classe lista crei un metodo del genere:
Code:


 public void incasso(Nodo p, int n,int totale  )
{
if(p!=null)
{
totale+=p.getInfo();
n++;
System.out.println("L'incasso del "+n+"°"+" giorno è "+ totale);
           totale(p.getNext(),n, totale);
}
}





Nel main invece:


Code:
public static void main(String[] args) throws IOException
{

//dopo Inserimento da console

          lista incasso= new lista();
        
            for (int i = 0; i < n; i++)
            {
             console = new BufferedReader(new InputStreamReader(System.in));
             System.out.print("Inserisci "+(i+1)+"° Giorno :");
             int m=Integer.parseInt(console.readLine());
            
             incasso.InsertTail(m);
            }
            
            System.out.println("Gli incassi registrati sono:\n");
            incasso.printList();
            
            System.out.println("Gli incassi giornalieri sono\n");
            incasso.totale(incasso.getHead(),0,0);
            
            
  }


Spero di esserti statao d'aiuto Wink
Logged

"Se qualcosa può andare storto, lo farà". (Legge di Murphy)
Pages: [1]   Go Up
Print
Jump to: