Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - Programma che determina il numero più grande e quello più piccolo
Forum - Java - Programma che determina il numero più grande e quello più piccolo

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
Archer312 (Normal User)
Rookie


Messaggi: 32
Iscritto: 30/06/2012

Segnala al moderatore
Postato alle 17:51
Venerdì, 27/07/2012
Salve a tutti, devo scrivere un programma che determina il numero più grande ed il numero più piccolo.
Così ho richiamato 5 variabili di tipo int, ho fatto assegnare manualmente i valori di ciascuna delle variabili.
Codice sorgente - presumibilmente Java

  1. import java.util.Scanner;
  2.  
  3. public class Determina
  4. {
  5.         public static void main(String args[])
  6.         {
  7.                 int a, b, c, d, e;
  8.                 Scanner input = new Scanner( System.in );
  9.                
  10.                 System.out.print( "numero1: " );
  11.                 a = input.nextInt();
  12.  
  13.                 System.out.print( "numero2: " );
  14.                 b = input.nextInt();
  15.  
  16.                 System.out.print( "numero3: " );
  17.                 c = input.nextInt();
  18.  
  19.                 System.out.print( "numero4: " );
  20.                 d = input.nextInt();
  21.  
  22.                 System.out.print( "numero5: " );
  23.                 e = input.nextInt();
  24.  
  25.                 if( a>b && a>c && a>d && a>e )
  26.                 System.out.printf( "%s %d\n", "il numero più grande risulta essere", a );
  27.  
  28.                 if( b>a && b>c && b>d && b>e )
  29.                 System.out.printf( "%s %d\n", "il numero più grande risulta essere", b );
  30.  
  31.                 if( c>a && c>b && c>d && c>e )
  32.                 System.out.printf( "%s %d\n", "il numero più grande risulta essere", c );
  33.  
  34.                 if( d>a && d>b && d>c && d>e )
  35.                 System.out.printf( "%s %d\n", "il numero più grande risulta essere", d );
  36.  
  37.                 if( e>a && e>b && e>c && e>d )
  38.                 System.out.printf( "%s %d\n", "il numero più grande risulta essere", e );
  39.  
  40.  
  41.                 else if( a==b && b==c && c==d && d==e)
  42.                 System.out.println("tutti i numeri sono uguali");
  43.  
  44.  
  45.                 if( a<b && a<c && a<d && a<e )
  46.                 System.out.printf( "%s %d\n", "mentre il numero più piccolo risulta essere", a );
  47.  
  48.                 if( b<a && b<c && b<d && b<e )
  49.                 System.out.printf( "%s %d\n", "mentre il numero più piccolo risulta essere", b );
  50.  
  51.                 if( c<a && c<b && c<d && c<e )
  52.                 System.out.printf( "%s %d\n", "mentre il numero più piccolo risulta essere", c );
  53.  
  54.                 if( d<a && d<b && d<c && d<e )
  55.                 System.out.printf( "%s %d\n", "mentre il numero più piccolo risulta essere", d );
  56.  
  57.                 if( e<a && e<b && e<c && e<d )
  58.                 System.out.printf( "%s %d\n", "mentre il numero più piccolo risulta essere", c );
  59.         }
  60. }


Ma il programma funziona solo se il valore più grande non è uguale ad un'altra variabile, quindi se abbiamo questo caso:


numero1: 10
numero2: 20
numero3: 10
numero4: 20
numero5: 10


il programma non restituirà nulla...
c'è un modo per risolvere?
Cioè, anche se ci sono due numeri uguali più grandi o più piccoli, farli comunque restituire?

PM Quote
Avatar
bububs (Normal User)
Expert


Messaggi: 253
Iscritto: 11/03/2010

Segnala al moderatore
Postato alle 18:45
Venerdì, 27/07/2012
Non l'ho testato xo dovrebbe funzionare ;)
Codice sorgente - presumibilmente Java

  1. int a, b, c, d, e;
  2.                 Scanner input = new Scanner( System.in );
  3.                
  4.                 System.out.print( "numero1: " );
  5.                 a = input.nextInt();
  6.  
  7.                 System.out.print( "numero2: " );
  8.                 b = input.nextInt();
  9.  
  10.                 System.out.print( "numero3: " );
  11.                 c = input.nextInt();
  12.  
  13.                 System.out.print( "numero4: " );
  14.                 d = input.nextInt();
  15.  
  16.                 System.out.print( "numero5: " );
  17.                 e = input.nextInt();
  18.  
  19.                 if( a==b && b==c && c==d && d==e)
  20.                 System.out.println("tutti i numeri sono uguali");
  21.  
  22.                 else{
  23.                     if( a>b && a>c && a>d && a>e )
  24.                     System.out.printf( "%s %d\n", "il numero più grande risulta essere", a );
  25.  
  26.                     else  if( b>a && b>c && b>d && b>e )
  27.                      System.out.printf( "%s %d\n", "il numero più grande risulta essere", b );
  28.  
  29.                     else  if( c>a && c>b && c>d && c>e )
  30.                      System.out.printf( "%s %d\n", "il numero più grande risulta essere", c );
  31.  
  32.                      else if( d>a && d>b && d>c && d>e )
  33.                      System.out.printf( "%s %d\n", "il numero più grande risulta essere", d );
  34.  
  35.                      else if( e>a && e>b && e>c && e>d )
  36.                      System.out.printf( "%s %d\n", "il numero più grande risulta essere", e );
  37.  
  38.  
  39.                      if( a<b && a<c && a<d && a<e )
  40.                      System.out.printf( "%s %d\n", "mentre il numero più piccolo risulta essere", a );
  41.  
  42.                      else if( b<a && b<c && b<d && b<e )
  43.                      System.out.printf( "%s %d\n", "mentre il numero più piccolo risulta essere", b );
  44.  
  45.                      else if( c<a && c<b && c<d && c<e )
  46.                      System.out.printf( "%s %d\n", "mentre il numero più piccolo risulta essere", c );
  47.  
  48.                     else  if( d<a && d<b && d<c && d<e )
  49.                      System.out.printf( "%s %d\n", "mentre il numero più piccolo risulta essere", d );
  50.  
  51.                     else  if( e<a && e<b && e<c && e<d )
  52.                      System.out.printf( "%s %d\n", "mentre il numero più piccolo risulta essere", c );
  53.               }
  54.         }


Ultima modifica effettuata da bububs il 27/07/2012 alle 18:46
PM Quote
Avatar
Archer312 (Normal User)
Rookie


Messaggi: 32
Iscritto: 30/06/2012

Segnala al moderatore
Postato alle 19:22
Venerdì, 27/07/2012
Testo quotato

Postato originariamente da bububs:

Non l'ho testato xo dovrebbe funzionare ;)
Codice sorgente - presumibilmente Java

  1. int a, b, c, d, e;
  2.                 Scanner input = new Scanner( System.in );
  3.                
  4.                 System.out.print( "numero1: " );
  5.                 a = input.nextInt();
  6.  
  7.                 System.out.print( "numero2: " );
  8.                 b = input.nextInt();
  9.  
  10.                 System.out.print( "numero3: " );
  11.                 c = input.nextInt();
  12.  
  13.                 System.out.print( "numero4: " );
  14.                 d = input.nextInt();
  15.  
  16.                 System.out.print( "numero5: " );
  17.                 e = input.nextInt();
  18.  
  19.                 if( a==b && b==c && c==d && d==e)
  20.                 System.out.println("tutti i numeri sono uguali");
  21.  
  22.                 else{
  23.                     if( a>b && a>c && a>d && a>e )
  24.                     System.out.printf( "%s %d\n", "il numero più grande risulta essere", a );
  25.  
  26.                     else  if( b>a && b>c && b>d && b>e )
  27.                      System.out.printf( "%s %d\n", "il numero più grande risulta essere", b );
  28.  
  29.                     else  if( c>a && c>b && c>d && c>e )
  30.                      System.out.printf( "%s %d\n", "il numero più grande risulta essere", c );
  31.  
  32.                      else if( d>a && d>b && d>c && d>e )
  33.                      System.out.printf( "%s %d\n", "il numero più grande risulta essere", d );
  34.  
  35.                      else if( e>a && e>b && e>c && e>d )
  36.                      System.out.printf( "%s %d\n", "il numero più grande risulta essere", e );
  37.  
  38.  
  39.                      if( a<b && a<c && a<d && a<e )
  40.                      System.out.printf( "%s %d\n", "mentre il numero più piccolo risulta essere", a );
  41.  
  42.                      else if( b<a && b<c && b<d && b<e )
  43.                      System.out.printf( "%s %d\n", "mentre il numero più piccolo risulta essere", b );
  44.  
  45.                      else if( c<a && c<b && c<d && c<e )
  46.                      System.out.printf( "%s %d\n", "mentre il numero più piccolo risulta essere", c );
  47.  
  48.                     else  if( d<a && d<b && d<c && d<e )
  49.                      System.out.printf( "%s %d\n", "mentre il numero più piccolo risulta essere", d );
  50.  
  51.                     else  if( e<a && e<b && e<c && e<d )
  52.                      System.out.printf( "%s %d\n", "mentre il numero più piccolo risulta essere", c );
  53.               }
  54.         }



no... ti sbagli, non funziona :(

PM Quote
Avatar
arack95 (Member)
Pro


Messaggi: 144
Iscritto: 15/11/2010

Segnala al moderatore
Postato alle 21:18
Venerdì, 27/07/2012
Ti propongo una versione semplificata e iterativa..

Codice sorgente - presumibilmente Java

  1. Scanner input = new Scanner( System.in );
  2. int num, min, max;
  3.  
  4. min = max = 0;
  5.  
  6. for(int i = 0; i < 5; i++) {
  7.         System.out.print( "Inserisci numero: " );
  8.         num = input.nextInt();
  9.  
  10.         if(num < min) min = num;
  11.         if(num > max) max = num;
  12. }
  13.  
  14. //printi i due valori


PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 21:18
Venerdì, 27/07/2012
:noway:

No, no... non va bene. Troppe variabili, troppa ripetizione.

Codice sorgente - presumibilmente Java

  1. public static void main(String args[])
  2. {
  3.                 int a, min = Integer.MAX_VALUE, max = Integer.MIN_VALUE;
  4.                Scanner input = new Scanner( System.in );
  5.                for (int i = 0; i < 5; i++){
  6.                    System.out.print( "numero" + i + ":" );
  7.                    a = input.nextInt();
  8.                    if (a < min) min = a;
  9.                    if (a > max) max = a;
  10.                }
  11.               System.out.println("Massimo: " + max);
  12.               System.out.println("Minimo: " + min);
  13.  
  14. }



Il mio blog: https://piero.dev
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 21:19
Venerdì, 27/07/2012
Testo quotato

Postato originariamente da arack95:

Ti propongo una versione semplificata e iterativa..

Codice sorgente - presumibilmente Java

  1. Scanner input = new Scanner( System.in );
  2. int num, min, max;
  3.  
  4. min = max = 0;
  5.  
  6. for(int i = 0; i < 5; i++) {
  7.         System.out.print( "Inserisci numero: " );
  8.         num = input.nextInt();
  9.  
  10.         if(num < min) min = num;
  11.         if(num > max) max = num;
  12. }
  13.  
  14. //printi i due valori




Quasi giusto, ma se inserisco numeri negativi?


Il mio blog: https://piero.dev
PM Quote
Avatar
arack95 (Member)
Pro


Messaggi: 144
Iscritto: 15/11/2010

Segnala al moderatore
Postato alle 21:24
Venerdì, 27/07/2012
Testo quotato

Postato originariamente da pierotofy:

Testo quotato

Postato originariamente da arack95:

Ti propongo una versione semplificata e iterativa..

Codice sorgente - presumibilmente Java

  1. Scanner input = new Scanner( System.in );
  2. int num, min, max;
  3.  
  4. min = max = 0;
  5.  
  6. for(int i = 0; i < 5; i++) {
  7.         System.out.print( "Inserisci numero: " );
  8.         num = input.nextInt();
  9.  
  10.         if(num < min) min = num;
  11.         if(num > max) max = num;
  12. }
  13.  
  14. //printi i due valori




Quasi giusto, ma se inserisco numeri negativi?



Dai valori dati nella domanda supponevo che usasse solo numeri positivi, se deve fare sia positivi che negativi assegnerei a max il valore Integer.MIN_VALUE, a min il valore Integer.MAX_VALUE, altrimenti scrivendo codice osceno si potrebbe saltare un'iterazione assegnando il primo numero inserito in assoluto sia a max che a min.

EDIT:
Avevo saltato il tuo primo post, comunque come hai scritto tu.

Ultima modifica effettuata da arack95 il 27/07/2012 alle 21:31
PM Quote
Avatar
sarbaturino (Normal User)
Pro


Messaggi: 66
Iscritto: 25/04/2011

Segnala al moderatore
Postato alle 11:35
Sabato, 28/07/2012
Perchè non usi gli array? sarebbe molto comodo, ad esempio:

Codice sorgente - presumibilmente Java

  1. class MinMax{
  2.  
  3. public static Scanner sc= new Scanner(System.in);
  4.  
  5. public static void main( String [] args){
  6.       int [] array = new int [5];
  7.      
  8.       //Inserimento
  9.       for ( int i=0; i<array.length; i++)
  10.            array[i]=sc.nextInt();
  11.  
  12.        //Trovo il max
  13.        int max = array[0];
  14.        for ( int i=1; i<array.length; i++)
  15.            if ( array[i] > max)
  16.                max=array[i];
  17.        
  18.        //Trovo il min
  19.        int min = array[0];
  20.        for ( int i=1; i<array.length; i++)
  21.            if ( array[i] < min)
  22.                min=array[i];
  23.  
  24.         System.out.println(min+ " e " +max);
  25.     }
  26.  
  27. }//end class




PM Quote
Avatar
bububs (Normal User)
Expert


Messaggi: 253
Iscritto: 11/03/2010

Segnala al moderatore
Postato alle 11:51
Sabato, 28/07/2012
@sarbaturino più semplificato può essere così :)
Codice sorgente - presumibilmente Java

  1. class MinMax{
  2.  
  3. public static Scanner sc= new Scanner(System.in);
  4.  
  5. public static void main( String [] args){
  6.       int [] array = new int [5];
  7.      
  8.       //Inserimento
  9.       for ( int i=0; i<array.length; i++)
  10.            array[i]=sc.nextInt();
  11.  
  12.        //Trovo il minimo e max
  13.        int max = array[0];
  14.        int min  = array[0];
  15.        for ( int i = 1; i < array.length; i++){
  16.            if ( array[i] > max)
  17.                max = array[i];
  18.            if ( array[i] < min)
  19.                min = array[i];
  20.        }
  21.  
  22.         System.out.println(min+ " e " +max);
  23.     }
  24.  
  25. }//end class


Ultima modifica effettuata da bububs il 28/07/2012 alle 11:52
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo