Visualizzazione dei risultati da 1 a 1 su 1
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2015
    Messaggi
    10

    Esercizio esame!!! HELP ME! array!

    TESTO DELL'ESERCIZIO
    codice:
    Scrivere un programma, composto da due classi, una denominata Programma contenente il main, l’altra i metodi necessari allo svolgimento delle operazioni, denominata Metodi, che svolga quanto segue:
    
    
    Classe Programma:
    Riceve un numero positivo n, istanziando un array di interi denominato interi di dimensione n;
    Riceve in ingresso due interi a e b, tali che a < b;
    Invoca il metodo occorrenzeContenuto() (decritto sotto) passando come parametri interi, a e b;
    Stampa l’array originale e quello modificato;
    Qualora il contenuto dei due array sia diverso, invoca il metodo uniformaContenuto() (descritto sotto) passando come parametri i due array;
    Stampa a video il risultato del metodo uniformaContenuto();
    
    
    
    
    Classe Metodi:
    Definisce un metodo occorrenzeContenuto() che riceve come parametri un array di interi denominato par e due interi a e b e conta quanti elementi di par non sono compresi strettamente fra a e b. Se tale valore è maggiore di (lunghezza di par)/3, sostituisce i valori di par non compresi fra a e b con il risultato del metodo calcolaMedia();  lascia l’array inalterato altrimenti;
    Definisce un metodo calcolaMedia() che riceve come parametri un array di interi denominato par e due interi a e b e restituisce la media dei valori di par non compresi fra a e b;
    Definisce un metodo uniformaContenuto() che riceve come parametri due array di interi denominati par1 e par2, creando un terzo array denominato rit i cui valori in posizione i sono pari alla differenza dei valori di par1 e par2 in posizione i; ad esempio, dati gli array {6, 7, 8, 9, 10} e {1, 2, 3, 4, 5}  il risultato sarebbe un terzo array {5, 5, 5, 5, 5};

    codice:
    import java.util.Scanner;
    
    
    public class ProgrammaB {
    	public static void main (String [] args) {
    	
    	Scanner tastiera = new Scanner (System.in);
    	System.out.println("Inserisci la dimensione dell'array");
    	int d = tastiera.nextInt();
    	int i;
    	int interi [] = new int [d];
    	System.out.println("Riempi l'array di elementi");
    	for (i=0; i<interi.length; i++)
    		interi[i]= tastiera.nextInt();
    	int a, b;	
    	do {
    		System.out.println("Inserisci il valore di a");
    		a = tastiera.nextInt();
    		System.out.println("Inserisci il valore di b");
    		b = tastiera.nextInt();
    		
    		if (a>b)
    			System.out.println("Riprova, a deve essere minore di b");
    		} while (a>b);
    		
    		int [] interiOriginale = new int [d];
    		for (i=0; i<interi.length; i++)
    			interiOriginale[i] = interi[i];
    			
    		int par [] = occorrenzeContenuto(interi, a, b);
    		
    	System.out.println("Array interiOriginale");	
    		for (i=0; i<interiOriginale.length; i++)
    		System.out.print(interiOriginale[i] + " ");
    		System.out.println();
    		
    	System.out.println("Array par");	
    		for (i=0; i<par.length; i++)
    		System.out.print(par[i] + " ");
    		System.out.println();
    		
    	boolean flag = true;
    	for (i=0; i<interiOriginale.length && flag; i++) {
    		if (interiOriginale[i] != par[i])
    			flag = false;
    		}
    		
    		
    		
    	if (!(flag)) {
    		int [] rit = uniformaContenuto(interiOriginale, par);
    		System.out.println("Array rit");	
    		for (i=0; i<rit.length; i++)
    		System.out.print(rit[i] + " ");	
    		}
    			
    		
    	}
    	
    	public static int [] occorrenzeContenuto (int [] par, int a, int b) {
    		int i;
    		int contatore =0;
    		for (i=0; i<par.length; i++) {
    			if ((par[i]<a) || (par[i]>b)) 
    				contatore++;
    		
    			}
    			
    			if (contatore > (par.length/2)) {
    			for (i=0; i<par.length; i++) {
    				if ((par[i]<a) || (par[i]>b)) {
    				par [i] = calcolaMedia (par, a, b);
    					}
    				}
    			}
    		return par;
    		}
    	
    	public static int calcolaMedia (int [] par, int a, int b) {
    		int i;
    		int somma = 0;
    		int contatore = 0;
    		for (i=0; i<par.length; i++) {
    			if ((par[i]<a) || (par[i]>b))  {
    				somma = somma + par [i];
    				contatore++;	
    			}
    		}
    		System.out.println("Somma prima divisione: "+somma);
    		somma = somma / contatore;
    		System.out.println("Somma finale: "+somma);
    		return somma;
    		
    	}
    	
    	public static int [] uniformaContenuto (int [] par1, int [] par2) {
    		int i;
    		int [] rit = new int [par1.length];
    		for (i=0; i<par1.length; i++)
    			rit[i] = par1[i] - par2 [i];
    		return rit;
    	
    	}
    }

    Il problema è semplice: ogni elemento dell'array da modificare riceve inspiegabilmente, una media diversa... ? chi sa aiutarmi?! esame in vista :S
    Ultima modifica di fedez_; 14-01-2015 a 22:07

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.