Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    esercizio matrice:creare sottomatrice eliminando colonne...

    buonaseranon riesco a trovare la chiave per far girare questo metodo in java!!!la traccia è:

    Scrivere Un metodo filtra che riceve una matrice di interi S e un intero x e restituisce una matrice M1 contenente
    le colonne di S il cui indice è un sottomultiplo di x;

    io ho provato così(non capisco dove sbaglio):

    codice:
    public class esercizio31 {
    public static int sottomultiplo(int[][]m,int p){
       int temp=0;
       for (int j=0;j<m[0].length ;j++)
          for(int i=0;i<m.length;i++)
             if (p%j!=0){
                j=temp;
    }
       return temp;
    }
       
       public static int[][]filtra (int[][]s, int x){
       int cont=0;
       for (int j=0;j<s[0].length ;j++){
       for(int i=0;i<s.length;i++)
       if (x%j!=0)
       cont++;
    }
        int indice=0;
        int[][]m1=new int [s.length ][s[0].length-cont];
        for (int j=0;j<s[0].length ;j++){
        for(int i=0;i<s.length;i++)
       if(j!=sottomultiplo(s,x))
       m1[i][indice]=s[i][j];
        indice++;
        }
        return m1;
        }
    
         
       public static void main(String[] args) {
        int[][]s={{1,4,3,5,6},{4,0,0,9,3},{3,4,3,7,4},{1,2,3,4,3},{6,2,8,5,6},{7,3,8,2,4}};
        int x=4;
        int[][] m1=filtra(s,x);
        for (int i=0;i<m1.length ;i++){
           for(int j=0;j<m1[0].length;j++)
          System.out.print(m1[i][j]+" ");
          System.out.println (" ");
          
       }
       }
    
    }
    ho utilizzato un metodo ausiliario sottomultiplo per "archivare"le j che sono sottomultipli di p...
    Perfavore aiutatemi nn riesco a trovare una soluzione!!!

  2. #2
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    Nella prima fase puoi semplicemente memorizzarti quali colonne prendere:
    codice:
    Integer i,j;     // matrice di M righe e N colonne
    Arraylist <Integer> lista=new ArrayList<Integer> ();
    for(i=0;i<M;i++)
    {
        if(i<x && i%x==0)
            lista.add(i);
    }
    Poi nell' ArrayList hai tutte le colonne da copiare, puoi copriarle:
    codice:
    Integer m1[M][lista.size()];
    for(i=0;i<lista.size();i++)
    {
        Integer temp=lista.get(i);
        for(j=0;j<M;j++)
        {
            m1[j][i]=s[j][temp];
        }
    }
    Prova a compilarlo, potrebbe non andare.

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