Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2014
    Messaggi
    51

    Nuovo problema:Come trovare la posizione del valore max

    Scusate se disturbo di nuovo ma ho un nuovo problemino:
    Data questa traccia:

    Un insieme di pacchetti di titoli azionari vengono acquistati ad un prezzo P0 e poi rivenduti ad un
    prezzo P1. Si scriva un programma che presi in ingresso i valori di acquisto e di vendita fornisca in
    uscita i titoli che hanno fornito una plusvalenza e la plusvalenza totale ottenuta. In particolare,
    valutare quale titolo ha fornito la plusvalenza massima. Si stampi un opportuno messaggio nel caso
    in cui nessun titolo ha fornito plusvalenza.

    La parte sottolineata è la parte che non sono riuscito a risolvere,o meglio ho trovato il valore massimo tra le plusvalenza ma non la posizione,prima di inserirvi il codice vi faccio un esempio pratico poichè la mia richiesta può essere poco chiara:

    INPUT
    Numero di titoli da considerare: 4
    Prezzo d’acquisto: 5.90 4.70 6.02 1.65
    Prezzo di vendita: 5.95 4.56 6.33 1.45

    OUTPUT
    Titoli con plusvalenza: 1 3
    Plusvalenza totale ottenuta: 0.36
    Titolo con massima plusvalenza: 3


    Io a titolo con massima plusvalenza anzichè ottenere quello in posizione 3 ho ottenuto 0,31,ovvero la massima plusvalenza...
    Vi do il codice che ho scritto:

    codice:
    
    package javaapplication18;
    import java.util.Scanner;
    /**
     *
     * @author 
     */
    public class JavaApplication18 {
    
    
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            // Fase di input
            Scanner sc=new Scanner(System.in);
            System.out.println("Inserisci il numero dei titoli azionari");
            int n=sc.nextInt();
            double a[]=new double [n];
            double v[]=new double [n];
            double p[]=new double [n];
            double max=p[0];
            int cont=0;
            double vtp=0;
            for (int i=0;i<n;i++){System.out.println("Inserisci i valori dei prezzi di vendita");
            v[i]=sc.nextDouble();}
            for (int i=0;i<n;i++){
           System.out.println("Inserisci i valori dei prezzi di acquisto");
            a[i]=sc.nextDouble();}
            for (int i=0;i<n;i++){
            p[i]=v[i]-a[i]; 
            if (p[i]>0){System.out.println("Il titolo che ha una plusvalenza è"+(i+1));
                vtp+=p[i]; cont++;}
            if(p[i]>max){max=p[i];}
               }
            System.out.println("il valore totale di plusvalenza è"+vtp);
            System.out.println("il valore massimo è"+max);
            if(cont==0){System.out.println("Non ci sono plusvalenze");}
        }
      }

    Spero di essere stato esauriente,"l'inghippo" sta nella parte sottolineata..
    Ultima modifica di hhh6; 20-08-2014 a 20:05

  2. #2
    non riesco a capire che intenti con max... cioe che valore vuoi stampare?

    cmq il problema sta qua
    codice:
    if(p[i=]=>max){max=p[i];}
               }


    Ultima modifica di orphenix; 20-08-2014 a 20:52

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2014
    Messaggi
    51
    è semplice,non riesco a scrivere un'istruzione per farmi dire quale posizione dell'array p[n] ha plusvalenza più alta...se tu leggi il codice io riesco a trovare con questo codice il valore massimo della plusvalenza,nel nostro caso è 0,31 cioè:6.33-6.02...Però la traccia mi dice di trovare non il valore max della plusvalenza ma quale coppia di prezzi acquisti-vendita genera la plusvalenza massima....e io questo non riesco a capire come fare...

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2014
    Messaggi
    51
    con max,che ho inizializzato a p[0] ho trovato il massimo valore della plusvalenza tutto qua...Comunque se guardi l'esempio capisci subito il mio problema....

  5. #5
    eccoti la soluzione il max inizializzalo a 0

    codice:
    import java.util.Scanner;
    
    public class MaxPlusvalenza {
    
    
    	/**
    	 * @param args
    	 *            the command line arguments
    	 */
    	public static void main(String[] args) {
    		// Fase di input
    		Scanner sc = new Scanner(System.in);
    		System.out.println("Inserisci il numero dei titoli azionari");
    		int n = sc.nextInt();
    		double a[] = new double[n];
    		double v[] = new double[n];
    		double p[] = new double[n];
    		double max = 0;
    		int cont = -1;
    		double vtp = 0;
    		for (int i = 0; i < n; i++) {
    			System.out.println("Inserisci i valori dei prezzi di vendita");
    			v[i] = sc.nextDouble();
    		}
    		for (int i = 0; i < n; i++) {
    			System.out.println("Inserisci i valori dei prezzi di acquisto");
    			a[i] = sc.nextDouble();
    		}
    		for (int i = 0; i < n; i++) {
    			p[i] = v[i] - a[i];
    			if (p[i] >= 0) {
    				System.out.println("Il titolo che ha una plusvalenza è"+ (i + 1));
    				vtp += p[i];
    				if (p[i] >= max) {
    					max = p[i];
    					cont = i;
    				}
    			}
    		}
    
    
    		System.out.println("il valore totale di plusvalenza è" + vtp);
    
    
    		if (cont >= 0) {
    			System.out.println("il titolo con massima plusvalenza  a valore"+ max);
    			System.out.println("il titolo con massima plusvalenza è"+ (cont + 1));
    		} else {
    			System.out.println("Non ci sono plusvalenze");
    		}
    
    
    	}
    }

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2014
    Messaggi
    51
    ho capito e va quello che hai scritto,ma non capisco una cosa: la variabile cont perchè è inizializzata a -1??
    Ultima modifica di hhh6; 20-08-2014 a 21:41

  7. #7
    per farti capire perché non devi mettere max=p[0];

    esegui il codice scritto te, inserendo titoli azionari=0. vedi che succede?
    oppure segui il codice che ho scritto io, mettendo max=p[0] ed
    inserisci tutte le vendite delle azione, in modo che siano tutte minore al prezzo d'acquisto^^ .
    cosi capirai perche max deve essere 0 in questo caso

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2014
    Messaggi
    51
    mi manca solo capire perchè il cont è a -1

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2014
    Messaggi
    51
    sul max ho capito perchè poi in pratica risulterebbe un assurdo poiche il valore in p[0] sarebbe negativo così come tutti gli altri e quindi mi darebbe errore...

  10. #10
    cerano 2 modi per farlo o creavi un altra variabile int index=0; e ci mettevi l'indice del valore massimo.


    oppure come ho fatto io con cont lo faccio partire da -1 poiche cont=0 e il primo valore dell'array.... quindi se parte da 0 e metto if(cont>0) ed il massimo e proprio il primo elemento. il programma stampa "non ci sono plusvalenze".

    se metti cont=0 ed if(cont>=0) allora anche se non ci sn plusvalenze, stampa il primo elemento dell'array come valore massimo.


    per questo lo faccio partire da -1.

    ci sn tanti modi per parlo puoi far partire cont=0 ed invece di di fare cont=i fai cont=i+1 e fai l'if cosi
    codice:
    if(cont >0){System.out.println("il titolo con massima plusvalenza  a valore"+ max);
                System.out.println("il titolo con massima plusvalenza è"+(cont ));
            }else{
                System.out.println("Non ci sono plusvalenze");
    
    


    spero di non averti confuso ulteriormente

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.