ho questo problema:
se l'array è composto da : 2,10,8,7,1,12,2
allora deve stampare: 12,10,8
ecco il codice Java:
ho pensato di usare un vettore di appoggio per non modificare il vettore originale.
Nel metodo find_max ad ogni iterazione controllo se flag non è arrivato a 3 e passo l'indice corrente al metodo max_num che calcola il massimo, sempre nell'if una volta trovato il massimo cancello l'elemento trovato (cioè il massimo) del vettore di appoggio. MA QUESTO NON ACCADE PERCHÈ???
grazie..
se l'array è composto da : 2,10,8,7,1,12,2
allora deve stampare: 12,10,8
ecco il codice Java:
Codice:
import java.util.*;
public class Max_tre {
public static void main(String [] args){
Scanner in=new Scanner (System.in);
int A[]=new int [100];
boolean flag=true;
int i=0;
while (flag){
int n=in.nextInt();
if (n<0){
flag=false;
break;
}
A[i++]=n;
}
// copio in un altro vettore per non modificare l'originale
int V[]=A.clone();
find_max(A,V,A.length);
}
public static void find_max(int A[],int V[],int n){
int find;
int flag=1;
for (int i=0;i<n-1;i++){
if (flag<=3){
find=Max_num(V,n,i);
System.out.println(find);
cancella(V,n,i);
flag++;
}
}
}
public static void cancella (int V[],int n,int i){
for (int j=0;j<n;j++){
if (i==j) {
Valore v1 = new Valore(V[i]);
Valore v2 = new Valore(V[j+1]);
delete(v1,v2);
}
}
}
public static void delete(Valore a,Valore b){
int t = a.val;
a.val = b.val;
b.val = 0;
}
public static int Max_num(int V[],int n,int i){
int max=V[i];
for (int j=0;j<n;j++){
if (V[j]>max)
max=V[j];
}
return max;
}
}
class Valore {
public int val;
public Valore(int val) { this.val = val; }
}
Nel metodo find_max ad ogni iterazione controllo se flag non è arrivato a 3 e passo l'indice corrente al metodo max_num che calcola il massimo, sempre nell'if una volta trovato il massimo cancello l'elemento trovato (cioè il massimo) del vettore di appoggio. MA QUESTO NON ACCADE PERCHÈ???
grazie..