Ultimo aggiornamento messaggio: ore 19:26 – 04/12/2010 | autore: Stefa
Salve a tutti, penso che non ci sia posto migliore di questo per chiedere un aiutino in Java.
Il programma che ho fatto deve: " Dato un array di interi restituire le cifre che compaiono più volte all'interno dell'array"
ES: {10,1,45,3,4,8,12}
Risultato: {1} (il numero compare 2 volte tutti gli altri una volta sola)
ES2: {0,104,4,3,240,8,64,120,91,158}
Risultato: {0,1,4} (lo "0" , l' "1" ed il "4" compaiono 4 volte all'interno dell'array.)
Posto qui il mio lavoro:
public class Main {
public static void aggF(int v[], int f[]) {
int temp;
for (int j = 0; j < v.length; j++) {
while (v[j] != 0) {
temp = v[j] % 10;
v[j] /= 10;
f[temp]++;
}
}
}
public static int Max(int f[], int v[]) {
Main.aggF(v, f);
int max = 0;
for (int q = 0; q < f.length; q++) {
if (f[q] > max) {
max = f[q];
}
}
return max;
}
public static void ContaValori(int f[], int max, int m, int v[]) {
int temp[];
temp = new int[m];
for (int n = 0; n < temp.length; n++) {
temp[n] = -1;
}
for (int h = 0; h < f.length; h++) {
if (f[h] == max) {
temp[h] = h;
}
}
for (int u = 0; u < temp.length; u++) {
if (temp[u] != -1) {
System.out.print("Risultato: " + temp[u] + " ");
}
}
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Scanner tastiera = new Scanner(System.in);
int conta;
int m;
int maxx;
int v[], f[];
f = new int[10];
for (int i = 0; i < 10; i++) {
f[i] = 0;
}
System.out.println("Numero Elementi?");
m = tastiera.nextInt();
v = new int[m];
for (int k = 0; k < m; k++) {
System.out.println("Inserire un numero in V:");
v[k] = tastiera.nextInt();
}
Main.aggF(v, f);
maxx = Main.Max(f, v);
System.out.println("maxx: " + maxx);
ContaValori(f, maxx, m, v);
}
}
Il problema sta nella funzione "aggF" che se inserisco da solo come elemento d'array lo "0" non lo conteggia.
Per esempio se inserisco questo vettore: {7,5,104,155} il programma svolge correttamente il suo lavoro se invece inserisco {0,7,5,104,155} il programma non conteggia lo "0" da solo.
Ho provato anche ad inserire nel for:
if (v[j]==0) f[0]++;
ma purtoppo non funzia!
Mi rivolgo a voi =)
Grazie in anticipo.