Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Esercizio sugli array

    Si aiuti il commissario Montalbano a incastrare Peppe Loforte. Si realizzi un programma
    Java che presa in input la sequenza dei prezzi di vendita del gamberone rosso individui il
    giorno in cui conviene comprare ed il giorno in cui conviene vendere per poter massimizzare
    il guadagno complessivo.
    Input
    Il file di input contiene la sequenza dei prezzi di vendita del gamberone, uno per riga,
    preceduti dal giorno in cui tale prezzo viene applicato. Il giorno č espresso da un numero
    intero di 4 cifre. Il prezzo č espresso in euro, con due cifre intere e due cifre decimali.
    Output
    Il file di output contiene due righe. La prima riga contiene il giorno in cui comprare ed il
    prezzo di acquisto. La seconda riga contiene il giorno in cui vendere ed il prezzo di vendita.

    input:

    0001 23.45
    0002 72.34
    0003 03.00
    0004 45.34
    0005 20.20
    0006 56.67
    0007 34.45

    output:

    0003 03.00
    0006 56.67


    Ho scritto il programma cosģ:

    codice:
    import java.io.*;
    
    public class Esercizio5
    {
    	public static void main(String [] args) throws IOException
    	{
    		
    		FileReader reader=null;
    		BufferedReader buff=null;
    		PrintWriter out=null;
    		
    		try{
    			reader=new FileReader("input.txt");
    			buff=new BufferedReader(reader);
    			out=new PrintWriter("OUTPUT.txt");
    			
    			
    				int righe=(Integer.parseInt(buff.readLine()));
    			
    					PrezzoVendita [] Elenco=new PrezzoVendita[righe]; //array di oggetti
    		
    					for(int i=0; i<righe; i++)
    					{
    						String s=buff.readLine();
    						
    							PrezzoVendita a=new PrezzoVendita(s.substring(0,4),s.substring(5,10));
    							Elenco[i]=a;
    					}
    			
    							PrezzoVendita nullo=new PrezzoVendita("","");
    					
    							int indexmassimo=nullo.getMax(Elenco); //memorizzo l'indice che contiene il massimo
    							int indexminimo=nullo.getMin(Elenco);    //memorizzo l'indice che contiene il minimo
    			
    							out.print(Elenco[indexminimo].toString());  //stampo l'oggetto
    					
    							out.print('\r');
    							out.print('\n');
    							
    						
    							out.print(Elenco[indexmassimo].toString());
    						
    		   }
    		    
    		    
    		    
    		    catch(IOException e)
    		    {
    			    e.printStackTrace();
    		    }
    		    
    		    
    		    
    			finally{
    				
    					if(reader!=null) reader.close();
    					if(out!=null) out.close();
    				}
    	}
    	
    }
    
    
    class PrezzoVendita
    {
    	private String giorno="";
    	
    	private String prezzo="";
    	
    	public PrezzoVendita(String giorno, String prezzo)
    	{
    		this.giorno=giorno;
    		this.prezzo=prezzo;
    	}
    	
    	public String getGiorno(){ return giorno;}
    	
    	public String getPrezzo(){return prezzo;}
    	
    		public int getMin(PrezzoVendita [] a)  //memorizzo l'indice in cui si trova il minimo nell'array
    		{
    			String min="";
    			int index=0;
    		
    			for(int i=0; i<a.length-1; i++)
    			{
    				if(i==0)
    					min=a[i].getPrezzo();
    			
    				for(int j=i+1; j<a.length; j++)
    				{
    					if(min.compareTo(a[j].getPrezzo())>0)
    					{
    						min=a[j].getPrezzo();
    						index=j;
    					}
    				}
    			}
    		
    			return index;
    		}
    		
    		public static int getMax(PrezzoVendita [] b) //...come per il minimo
    		{
    			String max="";
    			int index=0;
    		
    			for(int i=0; i<b.length-1; i++)
    			{
    				if(i==0)
    					max=b[i].getPrezzo();
    			
    	
    				for(int j=i+1; j<b.length; j++)
    				{
    					if(max.compareTo(b[j].getPrezzo())<0)
    					{
    						max=b[j].getPrezzo();
    						index=j;
    					}
    				}
    			}
    		
    			return index;
    		}
    		
    		
    		public String toString()
    		{
    			return getGiorno()+" "+getPrezzo();
    		}
    		
    }
    Il programma funziona, mi chiedevo se secondo voi per l'operazione:

    codice:
    PrezzoVendita nullo=new PrezzoVendita("","");
    					
    							int indexmassimo=nullo.getMax(Elenco); //memorizzo l'indice che contiene il massimo
    							int indexminimo=nullo.getMin(Elenco);    //memorizzo l'indice che contiene il minimo
    Praticamente quando dovevo invocare il metodo sono entrato nel panico perchč ho detto si il minimo lo cerco nell'array di oggetti ma chi lo invoca?
    Cosģ ho creato un oggetto PrezzoVendita che come si vede bene č "d'appoggio".
    E' corretta come cosa secondo voi o potrebbe essere valutata come una soluzione "sporca" al problema?

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    48
    secondo me la soluzione č pił semplice di quello che credi.
    ti basta una classe con un metodo che cerca il maggiore e uno che cerca il minore e poi scrivono sul file la posizione del maggiore aumentata di 1 e il valore maggiore. poi fai la stessa cosa per il minore.
    spero di essermi spiegato. per chiarimenti chiedi pure

  3. #3
    Scusa ma non č quello che ho fatto io?
    Ho una classe che trova il massimo e il minimo.

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    48
    si ma il codice č troppo... potresti scrivere la cosa molto pił semplicementecon na sola classe. massimo due con il main... non č un problema propriamente ad oggetti

  5. #5
    Ah si lo so lo so, č stato un esercizio che ho voluto fare io cosģ per esercitarmi con l'uso degli oggetti...piuttosto se hai tempo..non č che potresti dare un' occhiata al post "L'otto linkato" ?

    Grazie.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.