Due problemi con Java... HELP!!!

maalla1
Esercizio 01

Si costruisca una classe Vettore con un main.
La classe deve mantenere un array di int
------------
Definire poi
1) un metodo che prende come parametro l'array e restituisce true se l'array di interi contiene tutti pari. false altrimenti.
2) un metodo che prende come parametro l'array e restituisce la somma degli elementi
3) un metodo che restituisce l'elemento massimo dell'array
4) un metodo che prende come parametro l'array ed un intero e controlla che tutti gli elementi siano minori del secondo parametro
5) un metodo void che incrementa di uno tutti gli elementi dell'array
6) un metodo che restituisce int[] che crea un nuovo array con tutti gli elementi dell'array incrementati di uno.
Nel main stampo l'array restituito in output e quello in input.
7) un metodo che restituisce un nuovo array che è la somma elemento per elemento di due array passati come parametri.
------------

Nel main si chieda all'utente quanto deve essere lungo l'array e si crei l'array di interi ricevendo un elemento alla volta. Si riempia l'array chiedendo all'utente i valori di tipo opportuno..



Esercizio 02

Si definisca una classe PuntoSuPiano che rappresenta un punto sul piano (chiaramente avrà due coordinate x e y).
Si definisca un metodo di classe che presi due oggetti PuntoSuPiano restituisce l'oggetto più vicino all'origine 0,0.
-------------

Si definisca una classe Vettore che rappresenta un vettore sul piano (chiaramente avrà due PuntoSuPiano come estremi).
Si definiscano per tale classe:
1) un metodo di classe che restituisce la somma di due oggetti Vettore passati come argomento;
2) un metodo di istanza che restituisce la somma della presente istanza con un oggetto Vettore passato come argomento;
3) un metodo di istanza che prende un intero come argomento e restituisce il vettore prodotto dello scalare per il vettore.

Risposte
Nidhogg
Ti faccio sempre la stessa domanda: Dove trovi difficoltà? Hai scritto qualcosa?
Cerca di postare, quando c'è, una tua possibile soluzione...così puoi anche aiutare chi ti risponde nel spiegarti i tuoi eventuali errori e le tecniche da utilizzare.

Saluti, Ermanno.

maalla1
Questa volta non ho so neanche da dove iniziare... :(

Nidhogg
Ti faccio vedere un esempio di risoluzione del primo esercizio:

import java.io.*;

public class Vettore {
	
	// metodo (1)
	public static boolean containsEvenNumber(int A[])
	{
		for(int i = 0 ; i < A.length ; i++) 
			if (A[i]%2 != 0) // se la divisione fra A[i] e 2 da resto diverso da zero 
				return false; // A[i] è dispari e quindi il metodo ritorna false
		return true; // altrimenti ritorna true perchè tutti gli elementi sono pari
	}
	
	// metodo (2)
	public static int sumElements(int A[])
	{
		int sum = 0;
		for(int i = 0 ; i < A.length ; i++)
			sum+=A[i];
		return sum;
	}
	
	// metodo (3)
	public static int maxElement(int A[])
	{
		int max = A[0]; // assumo che il massimo sia il primo elemento
		for(int i = 1 ; i < A.length ; i++) // per ogni elemento
			if(max < A[i])  //verifico se è maggiore del massimo (parziale)
				max = A[i]; // se sì assegno al massimo parziale l'elemento
		return max;
	}
	
	// metodo (4)
	public static boolean isTheBiggest(int A[], int k)
	{
		for(int i = 0 ; i < A.length ; i++)
			if (A[i] >= k)  // se l'elemento è maggiore o uguale di k
				return false; // ritorno false
		return true;
	}
	
	// metodo (5)
	public static void incElements(int A[])
	{
		for(int i = 0 ; i < A.length ; i++)
			A[i]++;
	}
	
	// metodo (6)
	public static int[] arrayIncremented(int A[])
	{
		int[] ai = new int[A.length];
		// devo copiare tutti gli elementi di un array in un altro
		// l'istruzione int[] ai = A non è utilizzabile in quanto copia soltanto il riferimento
		// e dopo questa istruzione i due array faranno riferimento entrambi ad A!!!
		// quindi utilizzo il metodo arraycopy della classe System
		// ovviamente questo metodo si può "rimpiazzare" con un ciclo for
		System.arraycopy(A, 0, ai, 0, A.length); 
		incElements(ai);
		return ai;	
	}
	
	// metodo (7)
	public static int[] sumByElements(int A[], int B[])
	{
		int k;
		// determino la dimensione dell'array Sum
 		if(A.length<=B.length)  
			k=A.length;
		else 
			k=B.length;
 		// gli elementi di A o di B che si trovano in una posizione p>k non verranno considerati
 		int[] Sum = new int[k];
		for(int j = 0; j < k ; j++)
			Sum[j]=A[j]+B[j];
		
		return Sum;	
	}
	
	// metodo per il caricamento di un array
	public static int[] loadArray() throws IOException
	 {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		System.out.print("Quanti elementi vuoi caricare? ");
		int dim = Integer.parseInt(br.readLine());
		System.out.println("Ok, inserisci "+dim+" numeri interi...");
		int[] v = new int[dim];
		// caricamento array
		for(int i = 0 ; i < dim ; i++)
		{
			System.out.print((i+1)+"° elemento: ");
			v[i]=Integer.parseInt(br.readLine());
		}
		return v;
	}
	// metodo main
	public static void main(String[] args) throws IOException {
		
		int[] v = loadArray();
		int scelta;
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		do
		{
			System.out.println("\n Metodi disponibili: ");
			System.out.println("(1) Verifica se l'array contiene o meno tutti numeri pari");
			System.out.println("(2) Somma degli elementi dell'array");
			System.out.println("(3) Elemento massimo dell'array");
			System.out.println("(4) Verifica se utti elementi dell'array sono minori di un intero k");
			System.out.println("(5) Incremento unitario degli elementi dell'array");
			System.out.println("(6) Creazione di un nuovo array con gli elementi dell'array incrementati di 1");
			System.out.println("(7) Somma elemento per elemento di due array");
			System.out.print("Scelta: ");
			scelta = Integer.parseInt(br.readLine());
			System.out.println();
			switch(scelta)
			{
			case 0:System.out.println("Elaborazione terminata!"); 
			break;
			
			case 1:if(containsEvenNumber(v))
				      System.out.println("L'array contiene tutti numeri pari");
			       else 
				      System.out.println("L'array non contiene tutti numeri pari");
			break;
			
			case 2:System.out.println("La somma degli elementi dell'array è "+sumElements(v));
			break;
			
			case 3:System.out.println("L'elemento massimo dell'array è "+maxElement(v));
			break;
			
			case 4:System.out.println("Inserisci un numero intero k");
				   int k = Integer.parseInt(br.readLine());
				   if(isTheBiggest(v,k))
				      System.out.println("L'array contiene tutti numeri minori di "+k);
				   else 
				      System.out.println("L'array non contiene tutti numeri minori di "+k);
		    break;
		    
			case 5:incElements(v);
			break;
			
			case 6:System.out.println("L'array dato in input è: ");
				   for(int i = 0; i < v.length ; i++)
				      System.out.println("v["+i+"] = "+v[i]);
				   int[] newArray = arrayIncremented(v);
				   System.out.println("L'array modificato è: ");
			       for(int i = 0; i < v.length ; i++)
				      System.out.println("newArray["+i+"] = "+newArray[i]);
			break;
			
			case 7:System.out.println("Caricamento Array A");
				   int[] A = loadArray();
			       System.out.println("Caricamento Array B");
				   int[] B = loadArray();
				   int[] S = sumByElements(A, B);
				   System.out.println("L'array somma elemento per elemento degli array A e B è");
				   for(int i = 0; i < S.length ; i++)
				      System.out.println("ArraySomma["+i+"] = "+S[i]);
			break;
			
		    default:System.out.println("Scelta errata!");
		    break;
			}
			
		}while(scelta!=0);
	}
}


Salvo errori...

Questo qui l'ho risolto io, per farti vedere un possibile template su cui basarti. Spero di esserti stato d'aiuto!

A presto, Ermanno.

maalla1
Grazie... domani lo studio attentamente e poi ti faccio sapere se ho domande...

Per il secondo hai qualche idea da darmi???

Nidhogg
"maalla":

Per il secondo hai qualche idea da darmi???


Puoi crearti un metodo distance che determina la distanza fra due punti, e utilizzarlo nel metodo che restituisce il punto più vicino all'origine.

Saluti, Ermanno.

maalla1
Psso mandarti una mail al tuo indirizzo MSN per porti una domanda di java in "privato"?

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.