Pages: 1 [2]   Go Down
Print
Author Topic: esercizi primo itinere  (Read 1806 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
mariuccia.901
Matricola
*
Offline Offline

Posts: 72



« Reply #15 on: 20-02-2012, 17:58:05 »

si..perfetto..funziona! bene o male il primo esercizio è facile..ma il secondo..?
Logged

. . . Se in un primo momento l'idea non è assurda, allora non c'è nessuna speranza che si realizzi . . .
sf692
Matricola
*
Offline Offline

Posts: 75


« Reply #16 on: 20-02-2012, 18:02:58 »

Code:
static boolean metodo(char[][]A, char [][]B){

int c=0;

for(int i=0;i<A.length;i++){
for(int k=i;k<A[0].length;k++){
for(int j=0;j<A[0].length;j++){


if(A[i][j] == B[j][k])
c++;
else
c=0;
}
}
if(c==A.length)
return true;
}
return false;
}


secondo me cosi è piu intuitivo...
Logged
mariuccia.901
Matricola
*
Offline Offline

Posts: 72



« Reply #17 on: 20-02-2012, 18:09:30 »

mi sento confusa 
Logged

. . . Se in un primo momento l'idea non è assurda, allora non c'è nessuna speranza che si realizzi . . .
Gpeppe69
Apprendista Forumista
**
Offline Offline

Posts: 294



« Reply #18 on: 20-02-2012, 18:28:44 »

il secondo l'ho fatto è funziona c'è soltanto un problema che nella nuova matrice che deve restituire oltre alle Stringhe mi stampa anke il valore null x il resto vaaaa

Code:
/*
scrivere un metodo che prenda in input 2 array bidimensionali frastagliati A e B di Stringhe e restituisca
un array bisimensionale C in cui ogni riga contiene le stringhe scambiate della riga più lunga tra le corrispondenti di A e B.
lo scambio di una stringa  è ottuento scamabiando ogni carattere di indice pari con il successivo ES: "abcdef" -> "badcfe"

si supponga che tutte le stringhe in A e B abbiano lunghezza pari.
*/

import javax.swing.*;

class swapped
{
public String [][] metodo(String A [][], String B [][])
{
byte i,j=0;
byte x,y=0;
int tmp=0;
int s=0;
byte r,c;


String [][] C=new String [3][];

for(x=0,i=0;(i<A.length && x<B.length);i++,x++)     
                 if((A[i].length)>(B[x].length))                     
                                 {                                // verifica qual'è la riga più lunga tra A e B e assegna alle i-esima riga di C il numero maggiore di colonne
tmp=(A[i].length);
C[i]=new String[tmp];

     for(c=0,j=c;c<A[i].length;c++)                 
for(s=0;s<(A[i][c].length()-1);s=s+2)
{                                                         //  prende a 2 a 2 i caratteri della Stringa dell'array A e copia nella casella di C prima il successivo carattere è poi il precedente
j=c;
C[i][j]+=" "+A[i][c].charAt(s+1);
C[i][j]+=" "+A[i][c].charAt(s);
}
}

else
{
tmp=(B[x].length) ;
C[i]=new String[tmp];

for(c=0,j=c;c<B[x].length;c++)
     for(s=0;s<(B[x][c].length()-1);s=s+2)
{                                                   //  prende a 2 a 2 i caratteri della Stringa dell'array B e copia nella casella di C prima il successivo carattere è poi il precedente     
j=c;
C[i][j]+=" "+B[x][c].charAt(s+1);
C[i][j]+=" "+B[x][c].charAt(s);
}
}
       
       return C;      

}

}


public class prova_itinere_2
{
public static  void main(String [] args)
{
   swapped d=new swapped();
int i,j;
        int x,y;

String [][] A=new String [3][];

        A[0]=new String[2];
  A[1]=new String[4];
         A[2]=new String[1];

String [][] B=new String [3][];

        B[0]=new String[5];
  B[1]=new String[1];
         B[2]=new String[3];
           
String [][] C;

for(i=0;i<A.length;i++)
                            for(j=0;j<A[i].length;j++)
                         A[i][j]=JOptionPane.showInputDialog("insersci una stringa nella matrice A ");

      for(x=0;x<B.length;x++)
                                          for(y=0; y<B[x].length;y++)
                                      B[x][y]=JOptionPane.showInputDialog("insersci una stringa nella matrice B ");
     

     
C=d.metodo(A,B);
     

                     for(i=0;i<C.length;i++)
{
                            for(j=0;j<C[i].length;j++)
                     
                      System.out.print(C[i][j]+"\t");
        System.out.println();
      }

  System.out.println();


for(i=0;i<A.length;i++)
{
                            for(j=0;j<A[i].length;j++)
                     
                      System.out.print(A[i][j]+"\t");
        System.out.println();
                 
      }
     
      System.out.println();
     
      for(x=0;x<B.length;x++)
      {
                                        for(y=0; y<B[x].length;y++)
                         
                           System.out.print(B[x][y]+"\t");
   System.out.println();
      }
     
}


}
Logged
sf692
Matricola
*
Offline Offline

Posts: 75


« Reply #19 on: 20-02-2012, 18:35:05 »

Code:
for(x=0,i=0;(i<A.length && x<B.length);i++,x++)     
                 if((A[i].length)>(B[x].length)) 
tmp=(A[i].length);
C[i]=new String[tmp];
   



questo è piu giusto riscriverlo così:


Code:
                  for(i=0;i<A.length;i++)     
                 if((A[i].length)>(B[i].length))   
                                  C[i]=new String[A[i].length];
 
Logged
bassman
Matricola
*
Offline Offline

Gender: Male
Posts: 19



« Reply #20 on: 13-04-2012, 22:10:18 »

si si hai ragione cmq

 
Code:
/*
scrivere un metodo che prenda in input 2 matrici  quadrate A, B di char , e restituisca un boolean
che indichi se una  riga di A identica ad una colonna di B   
*/



class stringa
{
public boolean metodo(char a [][], char b[][])
{
byte i,j;
byte x,y;
byte cont=0;
for(i=0;i<a.length;i++)
                                for(y=0;y<b.length;y++)       
                       {
   if(cont==3)return true;
                 for(cont=0,j=0,x=0;(x<b.length && j<a.length);x++,j++)
                                       if(a[i][j]==b[x][y])cont++;
       }
       return false;
       }


}

public class prova_itinere_1
{
public static void main (String [] args)
{

stringa s=new stringa();

char [][] a={
          {'a','g','t'},
                  {'a','g','j'},
                  {'a','g','t'}
  };

char [][] b={
          {'a','t','a'},
                  {'g','g','g'},
                  {'n','t','t'}
  };
 
 
System.out.println(s.metodo(a,b));  

}
}

questo è il primo cmq l'esercizio restituisce sempre true a meno che non cambi qualche carattere e ti darà false



Ciao...scusa l'ignoranza ma non riesco a capire come faccia il metodo a vedere se c'è una colonna ugualle ad una riga...! Non è che saresti così gentile da darmi un accenno di spiegazione??? E' tutta sa sera che provo a capire come funzioni... testate

Grazie in anticipo!!! ciao
Logged
bassman
Matricola
*
Offline Offline

Gender: Male
Posts: 19



« Reply #21 on: 16-04-2012, 02:08:16 »

Risolto da solo grazie...!!! pc
Logged
Pages: 1 [2]   Go Up
Print
Jump to: