Pages: [1] 2 3   Go Down
Print
Author Topic: prova di oggi..  (Read 7203 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Vivynz
Forumista Eroico
*****
Offline Offline

Gender: Female
Posts: 2.033


File reality.sys corrupted, Reboot Universe? Y/N


« on: 09-01-2009, 15:10:28 »

Come vi è andata??A me sinceramente non so...gli esercizi che avevo io erano questi...il primo credo sia giusto...il secondo c'è qualcuno che può correggerlo??non so neanche cos'ho scritto..cioè.. penso ci siano troppi errori, era abbastanza complicato!
Code:
/*Scrivere un metodo che prenda in input un array bidimensionale frastagliato A di float,
e restituisca un boolean che indichi se esiste una riga di A in cui siano presenti tre numeri x,y,z
(con x a sinistra di y e y a sinistra di z) tali che x*y=z*/
public class Esercizio1
{
public static boolean floatProdotto(float[][] A)
{
for(int r=0;r<A.length;r++)
for(int c=0;c<A[r].length-2;c++)
for(int c1=c+1;c1<A[r].length-1;c1++)
for(int c2=c1+1;c2<A[r].length;c2++)
if((A[r][c]*A[r][c1])==A[r][c2])
return true;
return false;
}
public static void main (String[] args)
{
float[][] f={{2F,4F,1F,7F},{1F,2F},{3F,2F,6F}};
boolean b=floatProdotto(f);
System.out.println(b);
}
}


Code:
/*Scrivere un metodo che prenda in input una matrice A di stringhe, e restituisca
un boolean che indichi se esistono tre colonne uguali. Non è possibile utilizzare il metodo equals.(Il prof ha detto
che bisognava usare charAt)*/
public class Esercizio2
{
public static boolean treColUguali(String[][] A)
{
for(int c=0;c<A[0].length-2;c++)
{
int righeuguali=0;
for(int r=0;r<A.length;r++)
{
boolean stop=false;
for(int c1=c+1;(c<A[0].length-1)&&!stop;c1++)
for(int c2=c1+1;(c2<A[0].length)&&!stop;c2++)
{
if((A[r][c].length()==A[r][c1].length())&&(A[r][c].length()==A[r][c2].length()))
{
boolean continua=true;
for(int k=0;k<A[r][c].length()&&continua;k++)
if((A[r][c].charAt(k)!=A[r][c1].charAt(k))||(A[r][c].charAt(k)!=A[r][c2].charAt(k)))
continua=false;
if(continua)
{
righeuguali++;
stop=true;
}
}
}
}
if(righeuguali==A.length)
return true;
}
return false;
}
public static void main (String[] args)
{
String[][] s={{"cane","gatto","palla"},{"cane","gatto","palla"},{"cane","gatto","palla"}};
boolean b=treColUguali(s);
System.out.println(b);
}
}
Logged

L'odrine delle lttere dnetro una praorla non è ipmortatne, la sloa cosa ipmortatne è che la pmria e l'utlima ltteera sinao nel potso giutso. Il rseto può essree in un dsiodrine più totlae e voi ptoerte smerpe lggeree sneza porblmea.
k1r4
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 375


Il mio nick si pronuncia cappaunoerrequattro!!


WWW
« Reply #1 on: 09-01-2009, 16:02:21 »

io non ho usato equals nel secondo... ho usato compareTo  testate
Logged

Vivynz
Forumista Eroico
*****
Offline Offline

Gender: Female
Posts: 2.033


File reality.sys corrupted, Reboot Universe? Y/N


« Reply #2 on: 09-01-2009, 16:34:45 »

anche io volevo ma il prof mi ha detto in quel modo e quindi....
Logged

L'odrine delle lttere dnetro una praorla non è ipmortatne, la sloa cosa ipmortatne è che la pmria e l'utlima ltteera sinao nel potso giutso. Il rseto può essree in un dsiodrine più totlae e voi ptoerte smerpe lggeree sneza porblmea.
MisteroLupo
Apprendista Forumista
**
Offline Offline

Posts: 273

Tra il dire e il fare c'è distanza di hamming 2.


« Reply #3 on: 09-01-2009, 17:23:19 »

Anche io ho usato compareTo yoh
Logged
Vivynz
Forumista Eroico
*****
Offline Offline

Gender: Female
Posts: 2.033


File reality.sys corrupted, Reboot Universe? Y/N


« Reply #4 on: 09-01-2009, 17:25:54 »

cavoloooo ma io prima l'avevo fatto col compareTo....al rogo il prof  testate
Logged

L'odrine delle lttere dnetro una praorla non è ipmortatne, la sloa cosa ipmortatne è che la pmria e l'utlima ltteera sinao nel potso giutso. Il rseto può essree in un dsiodrine più totlae e voi ptoerte smerpe lggeree sneza porblmea.
MisteroLupo
Apprendista Forumista
**
Offline Offline

Posts: 273

Tra il dire e il fare c'è distanza di hamming 2.


« Reply #5 on: 09-01-2009, 17:38:58 »

non vorrei vedermi tolti punti per questo.. nel testo c'era scritto di non usare il metodo equals e io così ho fatto
Logged
Giuseppo
Apprendista Forumista
**
Offline Offline

Posts: 198



« Reply #6 on: 09-01-2009, 17:53:00 »

Vi posto i miei...li ho scritti e funzionano entrambi...speriamo bene  ok

Code:
/* Scrivere un metodo che, dato un array frastagliato di float a, e un float z in input,
restituisca un boolean che indichi la presenza di due elementi il cui prodotto è uguale a z */

public class provaes1{
public static boolean metodo(float[][] a,float z){
boolean b=false;
for (int i=0;i<a.length;i++){
for (int j=0;j<a[i].length;j++){
for(int m=0;m<a.length;m++){
for(int n=0;n<a[m].length;n++){
if((a[i][j]*a[m][n]==z)&&((i!=m&&j==n)||(i==m&&j!=n)||(i!=m&&j!=n)))
{
b=true;
return b;
}
}
}
}
}
return b;
}

public static void main(String[]args){
float[][]a=new float[4][];
a[0]=new float[4];
a[1]=new float[3];
a[2]=new float[4];
a[3]=new float[2];
a[0][0]=4;a[0][1]=3;a[0][2]=2;a[0][3]=1;
a[1][0]=3;a[1][1]=5;a[1][2]=9;
a[2][0]=6;a[2][1]=2;a[2][2]=4;a[2][3]=6;
a[3][0]=3;a[3][1]=2;
System.out.println(metodo(a,16));
}
}



ora il secondo..
Code:
/* Scrivere un metodo che, dato in input un array bidimensionale di stringhe, restituisca un
boolean che indichi la presenza di due stringhe uguali su due colonne consecutive. */

public class provaes2{
public static boolean metodo(String[][] a){
boolean b=false;
for(int i=0;i<a.length-1;i++){
for (int j=0;j<a.length;j++){
for(int n=0;n<a.length;n++){
if(a[j][i].equals(a[n][i+1])){
b=true;
return b;
}
}
}
}
return b;
}

public static void main(String[]args){
String[][] a=new String[3][3];
a[0][0]="ciao";a[0][1]="asd";a[0][2]="cia";
a[1][0]="pizza";a[1][1]="lol";a[1][2]="asds";
a[2][0]="casa";a[2][1]="cia";a[2][2]="----";
System.out.println(metodo(a));
}
}
Logged

I have nothing to declare except my genius.
andreacannella
Administrator
Forumista Esperto
*****
Offline Offline

Gender: Male
Posts: 1.488


Andea Cannella - www.andreacannella.com


WWW
« Reply #7 on: 09-01-2009, 17:54:32 »

Cari colleghi vi posto le mie soluzioni al compito che avevo io stamattina...
...spero qualcuno di voi mi sappia dire se funzionano...
...vi posso assicurare che il codice viene compilato...

Il primo è l'esercizio secondo il quale si dovevano cercare tre colonne per le quali valeva la seguente proprietà: X*Y=Z.
Il secondo è vedere quali caratteri tra a e b predominano in una certa colonna di un array frastagliato di stringhe.



Code:
class esercizio1
{
    public static boolean metodo(int[][]A)
    {
        boolean b=false;
        int tmp=0;
        for (int j=0; j<A[0].length; j++)
        {
            for (int i=0; i<A.length; i++)
            {
                for (int c=i+1; c<A.length; c++)
                {
                    for (int pr=c+1; pr<A.length; pr++)
                    {
                        if (A[i][j]*A[c][j]==A[pr][j])
                        {
                            tmp++;
                        }
                    }
                }
            }
        }
        if (tmp==A[0].length)
        {
            b=true;
        }
        else b= false;
           
        return b;
    }
}



Code:
class esercizio2
{
  public static boolean metodo (String [][]A, int j)
  {
    boolean b=false;
    int tmpa=0;
    int tmpb=0;
    for (int i=0; i<A.length; i++)
    {
      if (j<A[i].length)
      {
        for (int l=0; l<A[i][j].length(); l++)
        {
          if (A[i][j].charAt(l)=='a')
          {
            tmpa++;
          }
          if (A[i][j].charAt(l)=='b')
          {
            tmpb++;
          }
        }
      }
    }
      if (tmpa>tmpb)
      {
        b=true;
      }
      else b=false;
     
      return b;
  }
}
Logged

Le tre grandi virtù di un programmatore: pigrizia, impazienza e arroganza. (Larry Wall)

Good times for a change
See, the luck I've had
Can make a good man
Turn bad

So please, please, please
Let me, let me, let me
Let me get what I want
This time

The Smiths
Giovi89
Apprendista Forumista
**
Offline Offline

Posts: 273


« Reply #8 on: 09-01-2009, 18:43:12 »

salve a tutti colleghi,
posto i miei esercizi a mio parere i più complicati rispetto a tutti quelli della classe, soprattuttto il secondo...
a proposito qualcuno potrebbe vederlo e dirmi quanti punti potrebbe darmi il professore secondo voi?
i testi degli esercizi sono quelli postati all'inizio della pagina da Vivynz...
Code:
class esame
{
public static boolean metodo(float [][] A)
{
boolean t=false;
for(int i=0;i<A.length&&t==false;i++)
  for(int j=0;j<A[i].length-2&&t==false;j++)
    for(int k=j+1;k<A[i].length-1&&t==false;k++)
       for(int a=k+1;a<A[i].length&&t==false;a++)
         if(A[i][j]*A[i][k]==A[i][a])
t=true;

return t;
}
}
public class esame1
{
public static void main(String [] args)
{
float [][] A={ {3f,4f,6f,4f},
     {1f,2f,3f},
     {3333f,5555f,66f,777f,8888f,9999f,4444f},
     {111f,222f,3f,4f,5f,6f,7f,8f,9f},
     {3333f,44444f,5555f,66666f,77777f,1f,3f,3f}};
System.out.println(esame.metodo(A));
}
}
 
il primo è giusto lo provato io, invece sul secondo sono perplesso..
Code:
class esercizio2
{
public static boolean metodo(String [][] A)
{
int k;
boolean t=false;
for(int i=0;i<A[0].length-2&&t==false;i++)
  for(int j=i+1;j<A[0].length-1&&t==false;j++)
     for(int a=j+1;a<A[0].length&&t==false;a++){
        for(k=0;k<A.length;k++)
        for(int x=0;x<A.length;x++)
            for(int b=0;b<A.length;b++)
              for(int h=0;h<A[k][i].length();h++)
                if(A[k][i].charAt(h)==A[b][j].charAt(h))
if(A[b][j].charAt(h)==A[b][a].charAt(h)){
a++;

if(a==A[k][i].length())
t=true;}
}
return t;
}
}

public class esercizio21
{
public static void main(String [] args)
{
String [][] A={ {"ciao","ciao","chece"},
      {"prof","prof","nn"},
      {"del","del","ff"}};
System.out.println(esercizio2.metodo(A));
}
}
perfavore rispondetemi al piu presto..
« Last Edit: 09-01-2009, 18:45:33 by Giovi89 » Logged
k1r4
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 375


Il mio nick si pronuncia cappaunoerrequattro!!


WWW
« Reply #9 on: 09-01-2009, 19:06:36 »

Allora ragazzi, io avevo la prova come quella di Vivynz, il secondo esercizio io l'ho risolto in due metodi, in modo da semplificarmi la vita ed evitare di impazzire con tanti cicli for  [Emoticon] Asd


Scrivere un metodo che prenda in input una matrice A di stringhe, e restituisca
un boolean che indichi se esistono tre colonne uguali. Non è possibile utilizzare il metodo equals.

Code:
    public static boolean esercizio2(String [][]A)
    {
        /*Con il primo for, scorro le colonne*/
        for(int j = 0; j < A[0].length-2; j++)
        {
            String [] a = new String [A.length];
            String [] b = new String [A.length];
            String [] c = new String [A.length];
           
            /*Con il secondo for, scorro le righe*/
            for(int i = 0; i<A.length; i++)
            {
                /*Mi ricopio le tre colonne dentro tre array di String*/
                a[i] = A[i][j];
                b[i] = A[i][j+1];
                c[i] = A[i][j+2];
            }
           
            /*Confronto le tre colonne (che ho ricopiato dentro i tre
             *array di string) con un metodo apposito
            */
            if(compara(a, b, c))
                return true;
        }
        return false;
    }
   
    private static boolean compara(String []a, String []b, String []c)
    {
        boolean test = false;
        for(int i = 0; i<a.length; i++)
        {
            if(a[i].compareTo(b[i]) == 0 && a[i].compareTo(c[i]) == 0)
                test = true;
            else
                return false;
        }
        return test;
    }
   
    public static void main(String[] args) {
        String [][] A = new String [4][4];
       
        A[0][0] = "alberto"; A[0][1] = "alberto"; A[0][2] = "alberto"; A[0][3] = "Salvo";
        A[1][0] = "mauro"; A[1][1] = "mauro"; A[1][2] = "mauro"; A[1][3] = "Salvo";
        A[2][0] = "tony"; A[2][1] = "tony"; A[2][2] = "tony"; A[2][3] = "Salvo";
        A[3][0] = "carla"; A[3][1] = "carla"; A[3][2] = "carla"; A[3][3] = "Salvo";
       
        System.out.println(esercizio2(A));
    }

praticamente mi ricopio le tre colonne in tre array di string e le confronto a parte 

Testato e funzionante!!  univ
« Last Edit: 09-01-2009, 19:21:03 by k1r4 » Logged

Crasher
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 417



« Reply #10 on: 09-01-2009, 20:42:57 »

Avevo il compito come ad andreacannella
Testati e funzionanti!!!!

Prova 1:
Code:
public class Prova_1 {

public static void main (String args[]) {

int[][] A = {{1,2,2},{1,5,2},{67,46,74}};

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


System.out.println();
boolean aux = esercizio(A);

System.out.println(aux);

}

public static boolean esercizio (int[][] A){

boolean aux = false;

for (int i=0; i<A.length; i++)
if (A[i].length >= 3) // esistenza di almeno 3 colonne!
for (int x=0; x< A[i].length-2; x++)
for (int y = x+1; y<A[i].length-1; y++)
for (int z = y+1; z<A[i].length; z++)
if (A[i][x]*A[i][y] == A[i][z])
return true;
return aux;
}
}

Prova 2:
Code:
public class Prova_2 {

public static void main (String args[]) {

String[][] s = {{"abc", "noi", "bo"}, {"fg", "sgkaa"}, {"hhh","java", "aaa"}};

int j=1;

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

boolean aux = esercizio(s,j);

System.out.println("\n\n" + aux);
}

public static boolean esercizio(String[][] s, int j){

int max=0, conta=0, contb=0;
boolean aux = false;

for(int i=0; i< s.length; i++)
if(s[i].length > max)
max = s[i].length;

if (j<= max){ // esistenza della colonna nell'array
for (int i=0; i< s.length; i++)
if (j< s[i].length) // esistenza della colonna nella riga i-esima
for (int car=0; car< s[i][j].length(); car++){ // conto tutti i caratteri 'a' e 'b'
if (s[i][j].charAt(car) == 'a') conta++;
if (s[i][j].charAt(car) == 'b') contb++;
}
if (conta > contb) return true;
}

return aux;
}

}
« Last Edit: 09-01-2009, 21:51:26 by Crasher » Logged

Diventa ciò che sei nato per essere
MisteroLupo
Apprendista Forumista
**
Offline Offline

Posts: 273

Tra il dire e il fare c'è distanza di hamming 2.


« Reply #11 on: 09-01-2009, 21:05:58 »

Il primo è l'esercizio secondo il quale si dovevano cercare tre colonne per le quali valeva la seguente proprietà: X*Y=Z.
Ma perché tutti quei cicli for? nel testo era specificato (almeno da me) che la x stava alla sinistra della y che stava alla sinistra della z. Io l'ho risolto con un semplice ciclo for che confrontava l'elemento con gli indici successivi (i+1) (i+2)..
Logged
k1r4
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 375


Il mio nick si pronuncia cappaunoerrequattro!!


WWW
« Reply #12 on: 09-01-2009, 21:06:51 »

Il primo è l'esercizio secondo il quale si dovevano cercare tre colonne per le quali valeva la seguente proprietà: X*Y=Z.
Ma perché tutti quei cicli for? nel testo era specificato (almeno da me) che la x stava alla sinistra della y che stava alla sinistra della z. Io l'ho risolto con un semplice ciclo for che confrontava l'elemento con gli indici successivi (i+1) (i+2)..

ma i numeri potevano essere non consecutivi  testate
Logged

andreacannella
Administrator
Forumista Esperto
*****
Offline Offline

Gender: Male
Posts: 1.488


Andea Cannella - www.andreacannella.com


WWW
« Reply #13 on: 09-01-2009, 22:31:06 »

kira ha capito il perché dei 4 for...

 
Logged

Le tre grandi virtù di un programmatore: pigrizia, impazienza e arroganza. (Larry Wall)

Good times for a change
See, the luck I've had
Can make a good man
Turn bad

So please, please, please
Let me, let me, let me
Let me get what I want
This time

The Smiths
MisteroLupo
Apprendista Forumista
**
Offline Offline

Posts: 273

Tra il dire e il fare c'è distanza di hamming 2.


« Reply #14 on: 09-01-2009, 22:36:55 »

 testate
Logged
Pages: [1] 2 3   Go Up
Print
Jump to: