Due problemi con Java... HELP!!!
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.
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
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.
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.
Questa volta non ho so neanche da dove iniziare...
Ti faccio vedere un esempio di risoluzione del primo esercizio:
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.
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.
Grazie... domani lo studio attentamente e poi ti faccio sapere se ho domande...
Per il secondo hai qualche idea da darmi???
Per il secondo hai qualche idea da darmi???
"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.
Psso mandarti una mail al tuo indirizzo MSN per porti una domanda di java in "privato"?