Oppure

Loading
27/07/12 15:51
Archer312
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.
import java.util.Scanner;

public class Determina
{
	public static void main(String args[])
	{
		int a, b, c, d, e;
		Scanner input = new Scanner( System.in );
		
		System.out.print( "numero1: " );
		a = input.nextInt();

		System.out.print( "numero2: " );
		b = input.nextInt();

		System.out.print( "numero3: " );
		c = input.nextInt();

		System.out.print( "numero4: " );
		d = input.nextInt();

		System.out.print( "numero5: " );
		e = input.nextInt();

		if( a>b && a>c && a>d && a>e )
		System.out.printf( "%s %d\n", "il numero più grande risulta essere", a );

		if( b>a && b>c && b>d && b>e )
		System.out.printf( "%s %d\n", "il numero più grande risulta essere", b );

		if( c>a && c>b && c>d && c>e )
		System.out.printf( "%s %d\n", "il numero più grande risulta essere", c );

		if( d>a && d>b && d>c && d>e )
		System.out.printf( "%s %d\n", "il numero più grande risulta essere", d );

		if( e>a && e>b && e>c && e>d )
		System.out.printf( "%s %d\n", "il numero più grande risulta essere", e );


		else if( a==b && b==c && c==d && d==e)
		System.out.println("tutti i numeri sono uguali");


		if( a<b && a<c && a<d && a<e )
		System.out.printf( "%s %d\n", "mentre il numero più piccolo risulta essere", a );

		if( b<a && b<c && b<d && b<e )
		System.out.printf( "%s %d\n", "mentre il numero più piccolo risulta essere", b );

		if( c<a && c<b && c<d && c<e )
		System.out.printf( "%s %d\n", "mentre il numero più piccolo risulta essere", c );

		if( d<a && d<b && d<c && d<e )
		System.out.printf( "%s %d\n", "mentre il numero più piccolo risulta essere", d );

		if( e<a && e<b && e<c && e<d )
		System.out.printf( "%s %d\n", "mentre il numero più piccolo risulta essere", c );
	}
}

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?
aaa
27/07/12 16:45
bububs
Non l'ho testato xo dovrebbe funzionare ;)
                int a, b, c, d, e;
                Scanner input = new Scanner( System.in );
               
                System.out.print( "numero1: " );
                a = input.nextInt();
 
                System.out.print( "numero2: " );
                b = input.nextInt();
 
                System.out.print( "numero3: " );
                c = input.nextInt();
 
                System.out.print( "numero4: " );
                d = input.nextInt();
 
                System.out.print( "numero5: " );
                e = input.nextInt();
 
                if( a==b && b==c && c==d && d==e)
                System.out.println("tutti i numeri sono uguali");
 
                else{
                    if( a>b && a>c && a>d && a>e )
                    System.out.printf( "%s %d\n", "il numero più grande risulta essere", a );
 
                    else  if( b>a && b>c && b>d && b>e )
                     System.out.printf( "%s %d\n", "il numero più grande risulta essere", b );
 
                    else  if( c>a && c>b && c>d && c>e )
                     System.out.printf( "%s %d\n", "il numero più grande risulta essere", c );
 
                     else if( d>a && d>b && d>c && d>e )
                     System.out.printf( "%s %d\n", "il numero più grande risulta essere", d );
 
                     else if( e>a && e>b && e>c && e>d )
                     System.out.printf( "%s %d\n", "il numero più grande risulta essere", e );
 
 
                     if( a<b && a<c && a<d && a<e )
                     System.out.printf( "%s %d\n", "mentre il numero più piccolo risulta essere", a );
 
                     else if( b<a && b<c && b<d && b<e )
                     System.out.printf( "%s %d\n", "mentre il numero più piccolo risulta essere", b );
 
                     else if( c<a && c<b && c<d && c<e )
                     System.out.printf( "%s %d\n", "mentre il numero più piccolo risulta essere", c );
 
                    else  if( d<a && d<b && d<c && d<e )
                     System.out.printf( "%s %d\n", "mentre il numero più piccolo risulta essere", d );
 
                    else  if( e<a && e<b && e<c && e<d )
                     System.out.printf( "%s %d\n", "mentre il numero più piccolo risulta essere", c );
              }
        }
Ultima modifica effettuata da bububs 27/07/12 16:46
aaa
27/07/12 17:22
Archer312
Postato originariamente da bububs:

Non l'ho testato xo dovrebbe funzionare ;)
                int a, b, c, d, e;
                Scanner input = new Scanner( System.in );
               
                System.out.print( "numero1: " );
                a = input.nextInt();
 
                System.out.print( "numero2: " );
                b = input.nextInt();
 
                System.out.print( "numero3: " );
                c = input.nextInt();
 
                System.out.print( "numero4: " );
                d = input.nextInt();
 
                System.out.print( "numero5: " );
                e = input.nextInt();
 
                if( a==b && b==c && c==d && d==e)
                System.out.println("tutti i numeri sono uguali");
 
                else{
                    if( a>b && a>c && a>d && a>e )
                    System.out.printf( "%s %d\n", "il numero più grande risulta essere", a );
 
                    else  if( b>a && b>c && b>d && b>e )
                     System.out.printf( "%s %d\n", "il numero più grande risulta essere", b );
 
                    else  if( c>a && c>b && c>d && c>e )
                     System.out.printf( "%s %d\n", "il numero più grande risulta essere", c );
 
                     else if( d>a && d>b && d>c && d>e )
                     System.out.printf( "%s %d\n", "il numero più grande risulta essere", d );
 
                     else if( e>a && e>b && e>c && e>d )
                     System.out.printf( "%s %d\n", "il numero più grande risulta essere", e );
 
 
                     if( a<b && a<c && a<d && a<e )
                     System.out.printf( "%s %d\n", "mentre il numero più piccolo risulta essere", a );
 
                     else if( b<a && b<c && b<d && b<e )
                     System.out.printf( "%s %d\n", "mentre il numero più piccolo risulta essere", b );
 
                     else if( c<a && c<b && c<d && c<e )
                     System.out.printf( "%s %d\n", "mentre il numero più piccolo risulta essere", c );
 
                    else  if( d<a && d<b && d<c && d<e )
                     System.out.printf( "%s %d\n", "mentre il numero più piccolo risulta essere", d );
 
                    else  if( e<a && e<b && e<c && e<d )
                     System.out.printf( "%s %d\n", "mentre il numero più piccolo risulta essere", c );
              }
        }

no... ti sbagli, non funziona :(
aaa
27/07/12 19:18
arack95
Ti propongo una versione semplificata e iterativa..

Scanner input = new Scanner( System.in );
int num, min, max;

min = max = 0;

for(int i = 0; i < 5; i++) {
	System.out.print( "Inserisci numero: " );
	num = input.nextInt();

	if(num < min) min = num;
	if(num > max) max = num;
}

//printi i due valori

aaa
27/07/12 19:18
pierotofy
:noway:

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

public static void main(String args[])
{
                int a, min = Integer.MAX_VALUE, max = Integer.MIN_VALUE;
               Scanner input = new Scanner( System.in );
               for (int i = 0; i < 5; i++){
                   System.out.print( "numero" + i + ":" );
                   a = input.nextInt();
                   if (a < min) min = a;
                   if (a > max) max = a;
               }
              System.out.println("Massimo: " + max);
              System.out.println("Minimo: " + min);

}
Il mio blog: piero.dev
27/07/12 19:19
pierotofy
Postato originariamente da arack95:

Ti propongo una versione semplificata e iterativa..

Scanner input = new Scanner( System.in );
int num, min, max;

min = max = 0;

for(int i = 0; i < 5; i++) {
	System.out.print( "Inserisci numero: " );
	num = input.nextInt();

	if(num < min) min = num;
	if(num > max) max = num;
}

//printi i due valori



Quasi giusto, ma se inserisco numeri negativi?
Il mio blog: piero.dev
27/07/12 19:24
arack95
Postato originariamente da pierotofy:

Postato originariamente da arack95:

Ti propongo una versione semplificata e iterativa..

Scanner input = new Scanner( System.in );
int num, min, max;

min = max = 0;

for(int i = 0; i < 5; i++) {
	System.out.print( "Inserisci numero: " );
	num = input.nextInt();

	if(num < min) min = num;
	if(num > max) max = num;
}

//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 27/07/12 19:31
aaa
28/07/12 9:35
sarbaturino
Perchè non usi gli array? sarebbe molto comodo, ad esempio:

 
class MinMax{

public static Scanner sc= new Scanner(System.in);

public static void main( String [] args){
      int [] array = new int [5];
      
      //Inserimento 
      for ( int i=0; i<array.length; i++)
           array[i]=sc.nextInt();

       //Trovo il max 
       int max = array[0];
       for ( int i=1; i<array.length; i++)
           if ( array[i] > max)
               max=array[i];
       
       //Trovo il min
       int min = array[0];
       for ( int i=1; i<array.length; i++)
           if ( array[i] < min)
               min=array[i];

        System.out.println(min+ " e " +max);
    }

}//end class


aaa