Array - Conta Famiglie

di il
5 risposte

Array - Conta Famiglie

Ho il seguete problema che non riesco a trovare una soluzione:

1) come posso creare l'algoritmo per trovare il reddito più alto?
2) come si fà il calcolo del 10% inferiore del reddito?
3) come posso impostare?


package atm.ats.com;
import java.util.Scanner;
import java.util.Arrays;

public class ContaFamiglie {

	public static void main(String[] args) {
		
		
		/*Scrivere un programma in una classe contafamiglie che conti il numero di famiglie
		 * il cui reddito è al di sotto di un certo valore. leggere un intero k da tastiera e in seguito
		 * creare un array di valori double di dimensione k. leggere dalla tastiera k valori che rappresentano
		 * i redditi delle famiglie e memorizzarli nell'array. trovare il più elevato tra questi redditi.
		 * poi contare le famiglie il cui reddito è inferiore fino al 10% rispetto al reddito massimo. visualizzare
		 * questo messaggio e i redditi di queste famiglie.*/
		
		Scanner in = new Scanner(System.in);
		int k;
		double reddito = 0, max = 0, min = 0;
		
		System.out.println("Inserisci dimensione k:");
			k = in.nextInt();
			double [] valori = new double[k];
			
			
		
		for(int i = 0; i < k; i++){
			System.out.println("Inserisco il " + i + " ° valore");
			valori[i] = in.nextDouble(); //memorizzo nell'array i dati inseriti double
		}	
		
		
		
		
		
		
		
		
		
		
		
		
		}

	}







5 Risposte

  • Re: Array - Conta Famiglie

    L'ho fatto in questo modo, vedete se va bene???
    
    package atm.ats.com;
    import java.util.Scanner;
    import java.util.Arrays;
    
    public class ContaFamiglie {
    
    	public static void main(String[] args) {
    		
    		
    		/*Scrivere un programma in una classe contafamiglie che conti il numero di famiglie
    		 * il cui reddito è al di sotto di un certo valore. leggere un intero k da tastiera e in seguito
    		 * creare un array di valori double di dimensione k. leggere dalla tastiera k valori che rappresentano
    		 * i redditi delle famiglie e memorizzarli nell'array. trovare il più elevato tra questi redditi.
    		 * poi contare le famiglie il cui reddito è inferiore fino al 10% rispetto al reddito massimo. visualizzare
    		 * questo messaggio e i redditi di queste famiglie.*/
    		
    		Scanner in = new Scanner(System.in);
    		int k;
    		double reddito = 0, max, min = 0;
    		
    		System.out.println("Inserisci dimensione k:");
    			k = in.nextInt();
    			double [] valori = new double[k];
    			
    			
    		
    		for(int i = 0; i < k; i++){
    			System.out.println("Inserisco il " + i + " ° valore");
    			valori[i] = in.nextDouble(); //memorizzo nell'array i dati inseriti double
    		}	
    		
    		reddito = valori.length; // lunghezza dell'array
    		max = valori[0]; // assegno la variabile max, al punto di partenza dell'array di 0
    		
    		for(int i = 0; i < reddito - 1; i++){ // scorri fino all'ultimo
    			if(valori[i] > max) //se nell'array che scorro è maggiore di max dal punto iniziale dell'array 0
    				max = valori[i];
    		}
    		
    		
    		min = valori[0]; // assegno la variabile min, al punto di partenza dell'array di 0
    		
    		for( int i = 0; i < reddito; i++){
    			if(valori[i] < min)
    				min = valori[i];
    			min = min * 10 /  max;
    		}
    		
    		
    		
    		System.out.println("Il valore del reddito massimo: " + max);
    		System.out.println("Il valore del minimo reddito del 10%: " + min);
    		
    		
    		
    		
    		
    		
    		
    		
    		
    		
    		}
    
    	}
    
    
    
    
    
    
    
  • Re: Array - Conta Famiglie

    Sei sicuro di visualizzare tutte le famiglie che hanno un reddito inferiore del 10% rispetto a quello massimo ?

    Questo è l' ouput che mi da il tuo codice
  • Re: Array - Conta Famiglie

    Volevi fare così ?

    
    /*Scrivere un programma in una classe contafamiglie che conti il numero di famiglie
           * il cui reddito è al di sotto di un certo valore. leggere un intero k da tastiera e in seguito
           * creare un array di valori double di dimensione k. leggere dalla tastiera k valori che rappresentano
           * i redditi delle famiglie e memorizzarli nell'array. trovare il più elevato tra questi redditi.
           * poi contare le famiglie il cui reddito è inferiore fino al 10% rispetto al reddito massimo. visualizzare
           * questo messaggio e i redditi di queste famiglie.*/
    
    import java.util.Scanner;
    
    public class contaFamiglie01
    {
      public static void main (String args[])
      {
    
        double famiglia[];
        Scanner input = new Scanner(System.in);
        System.out.print("Per favore digita il numero di Famiglie ");
        int quanteFamiglie = input.nextInt();
        
        famiglia = new double[quanteFamiglie];
           
        for (byte cntReddito = 0;cntReddito<quanteFamiglie; cntReddito++)
        {
          System.out.print("Immetti il reddito n°"+cntReddito);
          double  reddito= input.nextDouble();
          famiglia[cntReddito] = reddito;
        }  
        
        double maxReddito=0;
        double diecipercento = 0;
        
        for (byte indice = 0;indice<famiglia.length; indice++)
        {
          
          if (famiglia[indice]>maxReddito)
          { 
            maxReddito=famiglia[indice];
            diecipercento = famiglia[indice] * 0.9;
            
          }  
        }  
          
        System.out.println("Reddito massimo "+ maxReddito);
        
        for (byte indice = 0;indice<famiglia.length; indice++)
        { 
         if (famiglia[indice]< diecipercento)
         {
           System.out.println("Reddito inferiore del 10% rispetto al massimo " + famiglia[indice]);
         }   
        } 
      }
      
    }  
    
    
  • Re: Array - Conta Famiglie

    Grazie, che mi hai risolto il problema.
    Ho commentato il tuo codice per capire se l'ho compreso.
    Puoi controllare i miei commenti??

    
    package atm.ats.com;
    import java.util.Scanner;
    import java.util.Arrays;
    
    public class ContaFamiglie {
    
    	public static void main(String[] args) {
    		
    		
    		/*Scrivere un programma in una classe contafamiglie che conti il numero di famiglie
    		 * il cui reddito è al di sotto di un certo valore. leggere un intero k da tastiera e in seguito
    		 * creare un array di valori double di dimensione k. leggere dalla tastiera k valori che rappresentano
    		 * i redditi delle famiglie e memorizzarli nell'array. trovare il più elevato tra questi redditi.
    		 * poi contare le famiglie il cui reddito è inferiore fino al 10% rispetto al reddito massimo. visualizzare
    		 * questo messaggio e i redditi di queste famiglie.*/
    		
    		    double famiglia[]; //Array double
    		    
    		    Scanner input = new Scanner(System.in);
    		    
    		    System.out.print("Per favore digita il numero di Famiglie ");
    		    int quanteFamiglie = input.nextInt(); //inserisci un intero n e salva nella variabile quantefamiglie
    		    famiglia = new double[quanteFamiglie]; //riempi l'array di dimensione quantefamiglie
    		       
    		    
    		    
    		    for (byte cntReddito = 0; cntReddito < quanteFamiglie; cntReddito++) { //il ciclo inizia da 0 è arriva fino al numero di famiglie prefissate
    		      System.out.print("Immetti il reddito n° "+ cntReddito); // stampa il conteggio del ciclo da 0 in poi..
    		      double  reddito= input.nextDouble(); //inserimento dati salvalo nella variabile reddito
    		      famiglia[cntReddito] = reddito; // assegna l'array dell'indice a reddito, in modo che vengono riempiti i campi nell'array
    		    } 
    		   
    		    double maxReddito=0;
    		    double diecipercento = 0;
    		   
    		   
    		    for (byte indice = 0; indice < famiglia.length; indice++) { //Scorri tutto l'array in tutta la sua lunghezza
    		     
    		      if (famiglia[indice] > maxReddito) { //se l'array di indice è maggiore del maxreddito
    		        maxReddito=famiglia[indice]; //assegna maxreddito il massimo del valore dell'array 
    		        diecipercento = famiglia[indice] * 0.9; //calcola array * 0,9 è assegna alla variabile diecipercento
    		      }
    		      
    		    } 
    		     
    		    System.out.println("Reddito massimo "+ maxReddito); //stampa risultato
    		   
    		    
    		    for (byte indice = 0; indice< famiglia.length; indice++) { //Scorri tutta la lunghezza dell'array
    		    
    		    	if (famiglia[indice] < diecipercento) { //nell'array se trovi il valore inferiore al diecipercento
    		    		System.out.println("Reddito inferiore del 10% rispetto al massimo " + famiglia[indice]); //stampa tutto il reddito inferiore di tutte le famiglie
    		    	} 	
    		    }
    		      
    		    
    	}
    }
    
    
    
    
    
  • Re: Array - Conta Famiglie

    robot ha scritto:


    Grazie, che mi hai risolto il problema.
    Sto imparando anche io , attendi anche altre risposte
    
    package atm.ats.com;
    import java.util.Scanner;
    import java.util.Arrays;
    
    public class ContaFamiglie {
    
    	public static void main(String[] args) {
    		
    		
    		/*Scrivere un programma in una classe contafamiglie che conti il numero di famiglie
    		 * il cui reddito è al di sotto di un certo valore. leggere un intero k da tastiera e in seguito
    		 * creare un array di valori double di dimensione k. leggere dalla tastiera k valori che rappresentano
    		 * i redditi delle famiglie e memorizzarli nell'array. trovare il più elevato tra questi redditi.
    		 * poi contare le famiglie il cui reddito è inferiore fino al 10% rispetto al reddito massimo. visualizzare
    		 * questo messaggio e i redditi di queste famiglie.*/
    		
    		    double famiglia[]; //Array double
    		    
    		    Scanner input = new Scanner(System.in);
    		    
    		    System.out.print("Per favore digita il numero di Famiglie ");
    		    int quanteFamiglie = input.nextInt(); //inserisci un intero n e salva nella variabile quantefamiglie
    		    famiglia = new double[quanteFamiglie]; //[i]creo[/i] l'array di dimensione quantefamiglie
    		       
    		    
    		    
    		    for (byte cntReddito = 0; cntReddito < quanteFamiglie; cntReddito++) { //[i]il ciclo inizia da 0 è arriva fino al numero "quanteFamiglie-1"[/i]
    		      System.out.print("Immetti il reddito n° "+ cntReddito); // stampa il conteggio del ciclo da 0 in poi..
    		      double  reddito= input.nextDouble(); //inserimento dati salvalo nella variabile reddito
    		      famiglia[cntReddito] = reddito; //[i]Assegna ad ogni elemento di famiglia[] il valore di reddito[/i] in modo che vengono riempiti i campi nell'array
    		    } 
    		   
    		    double maxReddito=0;
    		    double diecipercento = 0;
    		   
    		   
    		    for (byte indice = 0; indice < famiglia.length; indice++) { //Scorri tutto l'array in tutta la sua lunghezza
    		     
    		      if (famiglia[indice] > maxReddito) { //se l'array di indice è maggiore del maxreddito
    		        maxReddito=famiglia[indice]; //assegna maxreddito il massimo del valore dell'array 
    		        diecipercento = famiglia[indice] * 0.9; //calcola array * 0,9 è assegna alla variabile diecipercento
    		        [i]//In realtà 0.9 è il 90% e quindi implicitamente il 10% in meno rispetto al massimo, ma forse è poco chiaro[/i]
    		      }
    		      
    		    } 
    		     
    		    System.out.println("Reddito massimo "+ maxReddito); //stampa risultato
    		   
    		    
    		    for (byte indice = 0; indice< famiglia.length; indice++) { //Scorri tutta la lunghezza dell'array
    		    
    		    	if (famiglia[indice] < diecipercento) { //nell'array se trovi il valore inferiore al diecipercento
    		    	[i]//Se famiglia[indice]<90% vuole dire che è al di sotto del 10% rispetto al massimo[/i]
    		    		System.out.println("Reddito inferiore del 10% rispetto al massimo " + famiglia[indice]); //stampa tutto il reddito inferiore di tutte le famiglie
    		    	} 	
    		    }
    		      
    		    
    	}
    }
    
    
    
    
    
Devi accedere o registrarti per scrivere nel forum
5 risposte