Visualizzazione dei risultati da 1 a 3 su 3

Visualizzazione discussione

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    19

    Operazione su 3 vettori

    Buongiorno, volevo creare un programma che dati 3 : v1,v2,v3. Restituisce un vettore contenente tutti e solo gli elementi di v1 che sono presenti almeno due volte in v2 e non più di due volte in v3.
    Esempio : v1=(4,5) v2=(4,6,4,4) v3=(5,2,4)
    Ovviamente il vettore finale sarà : V=(4) .
    Ho provato a farlo ma mi da un errore non capisco cosa sia,potete darmi una mano? :
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
    at esempio2.filtra(esempio2.java:19)
    at esempio2.main(esempio2.java:7)

    codice:
    public class esempio2{     public static void main(String[]args){
         
         	   int v1[]={4,5,6,7,9};	
               int v2[]={4,10,6,7,12,4,6,9};
               int v3[]={4,6,10,6,6};
                int V[]=filtra(v1,v2,v3);
                for(int i=0;i<V.length;i++)
                    System.out.println(V[i]+"|");
         }
         
         
           public static int[] filtra(int[]v1, int[]v2, int[]v3){
                   int dimvett=0;   
                 for(int i=0;i<v1.length;i++){
                      int cont1=trova1(v1[i],v2);
                      int cont2=trova2(cont1,v3);   
                         if(cont1==cont2 && cont1!=0){
                               dimvett++;
                         }        
                 }
                  int[]vett=new int[dimvett];  int pos=0;
                      for(int i=0;i<v1.length;i++){
                         int cont1=trova1(v1[i],v2);
                         int cont2=trova2(cont1,v3);   
                             if(cont1==cont2 && cont1!=0){
                                 vett[pos]=cont1;
                                 pos++;
                             }        
                      }
                 
                 return vett;
                 
           }
           
           public static int trova1(int num, int[]v2){
              int cont=0;   int val=0;
                for(int i=0;i<v2.length;i++){
                     if(num==v2[i]){
                      cont++;  
                       if(cont==2){
                          val=num; 
                          return val;
                       }
                     }
                }
                return val;
           }          
                     
           public static int trova2(int num, int[]v3){
              int cont=0;   int val;
                for(int i=0;i<v3.length;i++){
                   if(num==v3[i]){
                      cont++;  
                    }
                }     
                     if(cont<=2)
                        val=num;
                     else
                       val=0;
                       
                    return val;   
                     
                     
           }          
           
     }

    Grazie mille!!
    Ultima modifica di Mark_7; 10-06-2014 a 14:03

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 © 2026 vBulletin Solutions, Inc. All rights reserved.