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

    Problema ordinamento di un array

    Salve ragazzi come da titolo vi propongo un problema:

    Si scriva un programma che preso in ingresso l’insieme delle variazioni percentuali di titoli
    borsistici restituisca in uscita lo stesso insieme ma contenente solamente i titoli che hanno subito
    una variazione negativa (cioè si eliminino dal vettore i titoli che hanno avuto un incremento
    positivo). Si ordini in senso decrescente e infine si stampi il vettore così ottenuto. Si stampi un
    opportuno messaggio nel caso in cui tutti i titoli hanno incrementato il loro valore.

    Questa è la traccia,io come al solito ho incontrato un problema nel codice,ed esattamente nell'ordinare decrescentemente l'array: all' atto pratico il mio codice di sicuro contiene errori nella seconda parte,ovvero quella dell'ordinamento:

    codice:
    package javaapplication22;
    import java.util.Scanner;
    /**
     *
     * @author 
     */
    public class JavaApplication22 {
    
    
        /**
         * @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 la lunghezza dell'array");
            int n=sc.nextInt();
            double v[]=new double [n];
            int cont=0;
            int b=0;
          //Inserimento valori array
            for (int i=0; i<n;i++)
            {System.out.println("Inserisci i valori dei titoli");
            v[i]=sc.nextDouble();}
           for (int i=0; i<n;i++)
            {if(v[i]>0){v[i]=v[i+1];
            n--;
            }
            else
            cont++;
            }
       
      for (int i=0; i<n-1;i++)
         {if(v[i]<v[i+1])
           {double temp;
           temp=v[i];
           v[i]=v[i+1];
           v[i+1]=temp;
           }
         System.out.println("I valori ordinati sono"+v[i]);
           }
       if(cont==0) {System.out.println("Tutti i titoli hanno incrementato il valore");} 
      }}

    P.S.confido sempre nella vostra buona volontà(gli esercizi sto cercando di farli con il ragionamento applicato alla teoria)

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2014
    Messaggi
    51
    ragazzi non si capisce la traccia o c'è qualche altro problema???

  3. #3
    non e` chiaro il problema.

    non viene ordinato o ti va in errore?

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2014
    Messaggi
    51
    ecco gli aggiornamenti: il problema a dispetto di quello che ho detto è nell'eliminazione dei valori minori di 0:infatti l'algoritmo di ordinamento è giusto...Io ho pensato a questa soluzione,che riporterò in basso,prima ho fatto un ordinamento crescente in modo tale da avere tutti i valori positivi in fondo all'array,poi ho applicato quello di eliminazione e infine ho ordinato i restanti in modo decrescente ma non capisco cosa ho sbagliato:
    codice:
    /* * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
    
    
    package javaapplication23;
    import java.util.Scanner;
    /**
     *
     * @author 
     */
    public class JavaApplication23 {
    
    
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            // TODO code application logic here
        Scanner sc= new Scanner (System.in);
            
            System.out.println("Inserisci la lunghezza dell'array");
            int n=sc.nextInt();
            double v[]=new double [n];
            int cont=0;
            int b=0;
            double s[]=new double [n];
          //Inserimento valori array
            for (int i=0; i<n;i++)
            {System.out.println("Inserisci i valori dei titoli");
            v[i]=sc.nextDouble();}
          
          for (int i=0; i<n;i++)
             {int min = i;
    for(int j=i+1; j<n; j++) 
      if(v[j] < v[min]) 
       min = j;
    {double temp;
    temp=v[min]; 
    v[min]=v[i]; 
    v[i]=temp;}}
    for (int i=n-1; i<n;i--)
    {if(v[i]>0){n--;}
    else 
    cont++;
    }
          
    for (int i=0; i<n;i++)
    {int min = i;
    for(int j=i+1; j<n; j++) 
      if(v[j] > v[min]) 
       min = j;
    {double temp;
    temp=v[min]; 
    v[min]=v[i]; 
    v[i]=temp;}
    }    
    System.out.println("i valori sono"+v[i])
     }
        
    }
    Ultima modifica di hhh6; 25-08-2014 a 19:54

  5. #5
    non ho capito se il problema è:
    1) crash a runtime
    2) errore di compilazione
    3) mi aspettavo un risultato diverso


    poi, per comodità tua e di chi ti aiuta, dai un input di esempio, output atteso ed eventuale output ricevuto

    accorciamo i tempi entrambi

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2014
    Messaggi
    51
    ok la questione è che il programma,come puoi ben vedere è diviso in 3 parti,come l'ho impostato io,poi come sempre ci sono molte strade,in pratica ordino crescente,per portarmi i valori positivi in fondo all'array e per ogni valore positivo accorcio l'array eliminando l'ultimo valore e poi infine ordino in modo decrescente,non mi sembra un ragionamento sbagliato,e non so se nel codice ci sono errori,se lo sapessi non avrei disturbato voi...Ma se ci sono sono lessicali non di compilazione...crash non ne fa ma errori di runtime si..
    Ultima modifica di hhh6; 25-08-2014 a 20:32

  7. #7
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    E cosa aspetti a riportare tali errori?
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2014
    Messaggi
    51
    l'ho scritto il codice alle 20,ho aspettato 20 minuti,non mi sembra un'esagerazione....Il vecchio programma,non andava non perchè riportasse errori,ma dava output che non mi aspettavo....

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2014
    Messaggi
    51
    potete proporre i vostri metodi, così vediamo un pò se è possibile fare un algoritmo efficiente...

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2014
    Messaggi
    51
    ad esempio come eliminereste n valori legati da una relazione in un array,sui miei libri non c'è scritto...

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.