Pages: 1 ... 6 7 [8] 9   Go Down
Print
Author Topic: esercizi seconda prova in itinere  (Read 24220 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
TheSpecialOne
Apprendista Forumista
**
Offline Offline

Posts: 232



« Reply #105 on: 07-01-2009, 16:12:53 »

[
Scrivere un metodo che prenda in input un array bidimensionale A di long, e restituisca un array A’
ottenuto da A ordinando in senso crescente gli elementi in ogni singola colonna di indice dispari.
Es.: Input : [(2,6,4), (1,9,0), (3,7,7), (5,8,5)], Output : [(2,6,4), (1,7,0), (3,8,7), (5,9,5)].



Sicuri che è stato risolto nel topic? non lo trovo...
Io ho provato, sono arrivato fino al punto di isolare le colonne dispari, solo che poi non so che condizione inserire all'interno, per far si che si scambino gli elementi.
Se qualcuno ha suggerimenti, sono ben accetti!
Logged
Fr3d3R!K
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.463



« Reply #106 on: 07-01-2009, 16:24:16 »

hai ragione mi sono confuso, è in un topic simile (sempre aperto da Vivynz) ovvero questo. Scusa l'imprecisione.
La condizione è quella classica dell'ordinamento, se un elemento è maggiore del successivo (in caso di ordinamento crescente), li scambi tramite un algoritmo di ordinamento qualunque.
« Last Edit: 07-01-2009, 16:28:59 by Fr3d3R!K » Logged

Search Button, CODE Tag, Google & Italian language are your friends! Use Them!
Raro89
Apprendista Forumista
**
Offline Offline

Posts: 121



« Reply #107 on: 07-01-2009, 16:48:05 »

raga  ho bisogno di un altro chiarimento...
come posso risolvere questo errore?
di seguito l'esercizio e stavolta anche l'errore...
Quote
/*
Scrivere un metodo che prenda in input un array bidimensionale frastagliato A di long, e restituisca
un boolean che indichi se esistono due righe consecutive in A contenenti rispettivamente due
elementi uguali (anche in colonne differenti).
*/
class arrayFrastagliato
{
   public static boolean risp (long [] [] A)
   {
      boolean conf=false;
      int r;
      int c;
      //inizializza la tabella:
      for (r=0;r<A.length;r++)
          for(c=0;c<A[r].length;c++)
         A[r][c]=(long)(10*Math.random()+1);
            System.out.print(A[r][c] +"\t");
      
      for (int j=0;j<A.length-1;j++)
      {
         if(A[r][c]==A[r][c]+1)
            conf=true;
         System.out.println("Nell'array frastagliato sono presenti due elementi uguali");
      }
      return conf;
   }
   
   public static void main (String [] args)
   {
      boolean risp;
      long frast[][]=new long[5][];
      frast[0]=new long[4];
      frast[1]=new long[3];
      frast[2]=new long[2];
      frast[3]=new long[5];
      frast[4]=new long[3];
      for (int i=0;i<frast.length;i++)
      {
         frast=risp(frast);
      }
   }
}
l'errore...
Quote
>javac arrayFrastagliato.java
arrayFrastagliato.java:39: incompatible types
found   : boolean
required: long[][]
         frast=risp(frast);
                   ^
1 error
>Exit code: 1
ciao e grazie in anticipo...
« Last Edit: 07-01-2009, 16:50:04 by Raro89 » Logged
Fr3d3R!K
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.463



« Reply #108 on: 07-01-2009, 16:55:05 »

il tipo di ritorno del metodo è boolean mentre la JVM nel main, al momento di chiamare il metodo risp si trova frast che è una matrice di long.
Dovresti mettere:
Code:
risp=risp(frast); //senza for visto che devi stampare solo il boolean che è un valore singolo
e comunque sconsiglio di usare lo stesso nome sia per il boolean che per il metodo perchè è ad alto rischio confusione. Per convenzione le variabili (ed anche metodi e classi per la cronaca ) vengono denominate con nomi coerenti al compito che devono svolgere (ad esempio il boolean puoi chiamarlo controllo oppure flag mentre il metodo ElementiUguali o cose simili).
« Last Edit: 07-01-2009, 17:02:26 by Fr3d3R!K » Logged

Search Button, CODE Tag, Google & Italian language are your friends! Use Them!
Raro89
Apprendista Forumista
**
Offline Offline

Posts: 121



« Reply #109 on: 07-01-2009, 17:02:24 »

Fr3d3R!K...
grazie mille...voi del forum siete davvero d'aiuto...!!!
Logged
Raro89
Apprendista Forumista
**
Offline Offline

Posts: 121



« Reply #110 on: 07-01-2009, 17:22:58 »

Fr3d3R!K
per favore help...
dove sbaglio adesso?
rispetto a quello di prima c'è fatta qualche modifica ma non riesco a capire dove sbaglio...
di seguito codice ed errori

Quote
/*
Scrivere un metodo che prenda in input un array bidimensionale frastagliato A di long, e restituisca
un boolean che indichi se esistono due righe consecutive in A contenenti rispettivamente due
elementi uguali (anche in colonne differenti).
*/
class arrayFrastagliato
{
   public static boolean risp (long [] [] A)
   {
      boolean conf=false;
      
      for (int r=0;r<A.length;r++)
           for (int c=0;c<A.length-1;c++)
      {
         if(A[r][c]==A[r+1][c+1])
         {
            conf=true;
            System.out.println("Nell'array frastagliato sono presenti due elementi uguali");   
         }
         else conf=false;
         System.out.println("Nell'array non sono presenti due elementi uguali");
         
         
         
      }
      return conf;
   }
   
   public static void main (String [] args)
   {
      boolean risp;
      long frast[][]=new long[5][];
      frast[0]=new long[4];
      frast[1]=new long[3];
      frast[2]=new long[2];
      frast[3]=new long[5];
      frast[4]=new long[3];
      int r;
      int c;
      //inizializza la tabella:
      for (r=0;r<frast.length;r++)
          for(c=0;c<frast[r].length;c++)
         frast[r][c]=(long)((long)15*Math.random()+1);
      
      for (r=0;r<frast.length;r++)
      {
         for (c=0;c<frast[r].length;c++)
            System.out.print(frast[r][c] +"\t");
          System.out.println();
      }
      
         risp=risp(frast);
      
   }
}


errori
Quote
13   13   2   5   
7   11   1   
9   7   
12   3   8   4   4   
1   11   7   
Nell'array non sono presenti due elementi uguali
Nell'array non sono presenti due elementi uguali
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
   at arrayFrastagliato.risp(arrayFrastagliato.java:15)
   at arrayFrastagliato.main(arrayFrastagliato.java:52)
>Exit code: 1
grazie in anticipo
Logged
Fr3d3R!K
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.463



« Reply #111 on: 07-01-2009, 18:00:25 »

13sima riga dove hai scritto:
Code:
for (int c=0;c<A.length-1;c++)
invece di:
Code:
for (int c=0;c<A[r].length-1;c++)
Logged

Search Button, CODE Tag, Google & Italian language are your friends! Use Them!
rox
Forumista
***
Offline Offline

Posts: 633


« Reply #112 on: 08-01-2009, 11:52:19 »

scusate qualcuno mi potrebbe dire cosa c'è di sbagliato in questo codice?
Code:
public class es5{
private int x;
private int []a;
public es5(int x)
{
this.x=x;

}
public String Genera(int x)
{      String generata="";
this.x=x;
Moneta m=new Moneta();
for (int i=0;i<x;i++)
{
m.effettuaLancio();
m.getFaccia();
if (m.getFaccia()=='C')
{
int z=(int)(Math.random()*3);
if (z==0)
{
generata+='e';
}else if (z==1)
{
generata+='i';
}
else if (z==2)
{
generata+='u';
}
}
if (m.getFaccia()=='T')
{ int y=(int)(Math.random()*2);
if(y==0)
{
generata+='a';
}
else generata+='o';
}
}return generata;
}
public String[] Generabis(int[] a)
{       int t=0;
this.a=a;
int somma=0,i;
for( i=0;i<a.length-1;i++)
{
somma+=a[i];

}
int m=(int)(somma/i);
for ( i=0;i<a.length;i++)
{
t=(int)(m+a[i]);


}
String[]b=new String[a.length];
for( i=0;i<a.length-1;i++)
b[i]=Genera(a[i]);
return b;
}
}
la consegna è questa:Esercizio 5 bis
Scrivere un metodo che prenda come parametri formali un array di interi A e restituisca in output un
corrispondente array di stringhe, in cui la i-esima stringa di lunghezza (m+A) è restituita dal
metodo Genera, e dove m è la media dei valori in A.
Logged

Una macchina è in grado di lavorare come cinquanta uomini comuni, ma nessuna macchina può svolgere il lavoro di un uomo straordinario.
folle
Guest
« Reply #113 on: 08-01-2009, 12:20:43 »

ciao a tutti vorrei cercare di capire xkè qsto codice nn fa qllo ke gli kiedo è molto banale...ma nn capisco...d sicuro sbaglio righe cn colonne..però vorrei almeno cercare d correggerlo...helllpppp da premettere ke all'inizio l'ho fatto per due valori contigui xkè nn riuscivo a capire l'errore!!
Code:
/*Scrivere un metodo che prenda in input un array bidimensionale frastagliato A
di long, e restituisca un boolean che indichi se esiste una riga in A
contenente tre elementi contigui uguali.*/
import java.lang.String;
import javax.swing.*;
public class esercizioa3
{
   public static boolean tre(long [][]a)
     {
         int r=0,c=0,s,t;boolean trovati=false;
         long temp=a[r][c];
         for(r=0;r<a.length;r++)
           {
               
               for(c=0;c<a[r].length-1;c++)
                {
                    c++;
                         if(temp==a[r][c])
                           trovati=true;
                         else
                           trovati=false;
                       
               
                }
            }
         return trovati;           
      }
public static void main(String []args)
     {     
       int i,j;
       long [][]A=new long[5][];
       A[0]=new long[2];
       A[1]=new long[4];
       A[2]=new long[3];
       A[3]=new long[5];
       A[4]=new long[3];
        for(i=0;i<A.length;i++)
         for(j=0;j<A[i].length;j++)
         A[i][j]=(long)(5*Math.random()+1);
         
         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(tre(A));
      }
}
e mi da qsta stampa...errata ovviamente
grazie in anticipo se quancuno m risp


Code:
>javac esercizioa3.java
>Exit code: 0
>java esercizioa3
1 5
2 5 3 1
5 1 5
1 3 1 5 4
2 2 1
false
>Exit code: 0
« Last Edit: 08-01-2009, 12:23:52 by folle » Logged
Vivynz
Forumista Eroico
*****
Offline Offline

Gender: Female
Posts: 2.033


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


« Reply #114 on: 08-01-2009, 14:53:17 »

vale io l'ho fatto così  sembra funzionare...
Code:
public static boolean treContigui(long[][] A)
{
for(int i=0;i<A.length;i++)
{
for(int j=0;j<A[i].length-2;j++)
{
if((A[i][j]==A[i][j+1])&&(A[i][j]==A[i][j+2]))
return true;
}
}
return false;
}
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.
fabliux
Guest
« Reply #115 on: 14-01-2009, 11:46:44 »

Code:
Scrivere un metodo che prenda in input una matrice bidimensionale frastagliata S di stringhe e
restituisca una matrice S' ottenuta da S eliminando i primi due e gli ultimi due caratteri di ogni
stringa.

Come lo risolvereste??? postate la possibile soluzione.....Grazie.... ciao
Logged
ShiShi
Apprendista Forumista
**
Offline Offline

Gender: Female
Posts: 256



« Reply #116 on: 14-01-2009, 11:52:53 »

Code:
/*Scrivere un metodo che prenda in input una matrice bidimensionale frastagliata S di stringhe e
restituisca una matrice S’ ottenuta da S eliminando i primi due e gli ultimi due caratteri di ogni
stringa.*/

public class Nono
 {
    public static void main ( String [] args )
    {
        String [][] A = { { "lica" , "domani" , "luca" } ,
                       { "luc" , "lit" } ,
                       { "andrea" , "lito", "giorgio"} ,
                       { "andes" , "sergio" , "ahahahah"}};
        A=metodo(A);       
         for(int i=0;i<A.length;i++)
           {
            System.out.println("");
            for(int k=0;k<A[i].length;k++)
                System.out.print(A[i][k]+"|");
            }
    }
   
public static String [][] metodo (String[][]A)
    {
        for (int i=0; i<A.length; i++)
            for (int j=0; j<A[i].length; j++)
                {
                    A[i][j]=ControllaCaratteri (A[i][j]);
                }
                return A;
    }
public static String ControllaCaratteri (String A)
   {
       String O="";
           for(int i=2; i<A.length()-2; i++)
             O+= A.charAt(i);
           return O;
    }
}

Io l'ho fatto così. 
Logged
fabliux
Guest
« Reply #117 on: 14-01-2009, 12:04:22 »

Code:
/*Scrivere un metodo che prenda in input una matrice bidimensionale frastagliata S di stringhe e
restituisca una matrice S’ ottenuta da S eliminando i primi due e gli ultimi due caratteri di ogni
stringa.*/

public class Nono
 {
    public static void main ( String [] args )
    {
        String [][] A = { { "lica" , "domani" , "luca" } ,
                       { "luc" , "lit" } ,
                       { "andrea" , "lito", "giorgio"} ,
                       { "andes" , "sergio" , "ahahahah"}};
        A=metodo(A);       
         for(int i=0;i<A.length;i++)
           {
            System.out.println("");
            for(int k=0;k<A[i].length;k++)
                System.out.print(A[i][k]+"|");
            }
    }
   
public static String [][] metodo (String[][]A)
    {
        for (int i=0; i<A.length; i++)
            for (int j=0; j<A[i].length; j++)
                {
                    A[i][j]=ControllaCaratteri (A[i][j]);
                }
                return A;
    }
public static String ControllaCaratteri (String A)
   {
       String O="";
           for(int i=2; i<A.length()-2; i++)
             O+= A.charAt(i);
           return O;
    }
}

Io l'ho fatto così. 

Grazie mille....
Logged
Fr3d3R!K
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.463



« Reply #118 on: 14-01-2009, 13:06:03 »

Code:
   public static boolean tre(long [][]a)
     {
         int r=0,c=0,s,t;boolean trovati=false;
         long temp=a[r][c]; [b]//questo è inutile[/b]
         for(r=0;r<a.length;r++)
           {
               for(c=0;c<a[r].length-1;c++)
                {
                    c++; [b]//e perchè visto che si incrementa già nel for?[/b]
                         if(temp==a[r][c]) [b]//confronti il primo elemento con quello corrente? non va devi avere 3 contigui dovunque nella riga[/b]
                           trovati=true; [b]//se ci sono elementi uguali al primo dal secondo posto in poi restituisce questo (visto che hai incrementato la c prima)[/b]
                         else
                           trovati=false;
                       
               
                }
            }
         return trovati;           
      }
sinceramente non capisco cosa fai in quel programma rispetto a ciò che chiede il testo...hai temp al quale assegni il primo valore, lo fai restare fisso, e lo confronti con gli altri elementi della matrice (il primo con tutti gli altri). Ma non è questo che chiede. Un esempio (fatto al volo ^^ ) per il tuo programma invece sarebbe
Code:
for(r=0;r<a.length;r++)
     for(c=0;c<a[r].length-2;c++)
          if(a[r][c]==a[r][c+1])
             if(a[r][c+1]==a[r][c+2])
                return true;
return false;
Saluti.
EDIT: se ti viene meglio puoi usare altri cicli for per gli indici.
« Last Edit: 14-01-2009, 13:10:29 by Fr3d3R!K » Logged

Search Button, CODE Tag, Google & Italian language are your friends! Use Them!
ShiShi
Apprendista Forumista
**
Offline Offline

Gender: Female
Posts: 256



« Reply #119 on: 14-01-2009, 16:35:21 »

Code:
Scrivere un metodo che prenda come parametri formali un array di stringhe A e restituisca in output
un array B di m stringhe, dove:
• m è la lunghezza media delle stringhe in A di lunghezza maggiore di 5, e
• la i-esima stringa di B è ottenuta concatenando (m*i) asterischi.

Se non sbaglio qualcuno l'ha fatto e postato qui, ma vorrei sapere cosa chiede.
Fino al punto uno ci sono...ma non ho capito • la i-esima stringa di B è ottenuta concatenando (m*i) asterischi.

Qualcuno può farmi un esempio o è così gentile da spiegarmi meglio?
Logged
Pages: 1 ... 6 7 [8] 9   Go Up
Print
Jump to: