Pages: [1]   Go Down
Print
Author Topic: Problema grosso con un esercizio  (Read 1791 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Daréios89
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.679


La musica è la forma d'arte suprema.


« on: 19-02-2009, 18:11:36 »

Praticamente non riescoa capire come viene effettuato il controllo nei cicli for, se pazientemente qualcuno mi sapesse dire in questo codice, dove riporto anche lo scopo del programma, perchè sbaglio e come va fatto, grazie

Code:
/*Scrivere un metodo che prenda come parametro un array bidimensionale int e restituisca un boolean
se due righe consecutive hanno un numero in comune anche in colonne differenti*/

class righecontigue
{
public static void main(String[] args)
{
      int [][] A={{1,2,3,4},
                      {5,6,7,8},
      {9,10,11,12},
      {13,14,15,16}};
     
      System.out.println(verifica(A));
     
}      
     
     
     
      public static boolean verifica(int [][] A)
      {
      boolean comune=true;
     

                                         for (int r=0; r<A.length; r++)
         {
                                              for (int k=0; k<A[r].length; k++)
{
for (int r1=r+1; r1<A.length-1; r1++)
if (A[r][k]==A[r1][k])
return comune;


}
        }
            return !comune;
         }

}
Logged

"Utilizzare sempre de l'Hôpital.....è come andare a caccia di farfalle con un bazooka".
Root
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 474



« Reply #1 on: 19-02-2009, 18:24:38 »

Il testo dell'esercizio dice che devi controllare la riga i-esima e la (i+1)-esima e vedere se queste due hanno un numero in comune.

Dunque per ogni colonna di i vai a controllare tutte le colonne di i+1 (il che implica due for annidati).

In definitiva i for sono tre (come nella tua implmenentazione)
il 1° si gira tutte le righe (occhio all'ultima)
il 2° per ogni riga si gira tutte le colonne
il 3° per ogni colonna della riga i si gira tutte le colonne della riga i+1

Ovviamente non ti posto la soluzione (che sarebbe stato più veloce per me ma meno esaudiente per te),quella te la devi trovare tu!

A presto
Dario
Logged

Passa a jabber!
http://jabber.org (il servizio)
http://pidgin.im (il client)

(c'era una volta) www.mytwocent.it
Condividi le tue conoscenze!

linux registered user #449678
Daréios89
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.679


La musica è la forma d'arte suprema.


« Reply #2 on: 19-02-2009, 18:39:38 »

Ci sto provando....per me è davero un trauma....già non capisco perchè al primo for mi dici di stare attento all'ultima riga....
Logged

"Utilizzare sempre de l'Hôpital.....è come andare a caccia di farfalle con un bazooka".
Root
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 474



« Reply #3 on: 19-02-2009, 18:47:44 »

Dai che non è difficile...

Vedo che tu suoni la chitarra (io provo a cimentarmi (con pochissimi risultati))..
ora, se io ti dico non so fare il FA (che è vero, non lo so fare mai bene come si dovrebbe)!
tu che fai?
1)Mi spieghi come si fa il FA
2) Fai il FA ed inizi a suonare una canzone con tantissimi FA???

 

Comunque se non ci arrivi (e mi auguro che non accada), fra tre ore posto la soluzione 

A presto
Dario
Logged

Passa a jabber!
http://jabber.org (il servizio)
http://pidgin.im (il client)

(c'era una volta) www.mytwocent.it
Condividi le tue conoscenze!

linux registered user #449678
Daréios89
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.679


La musica è la forma d'arte suprema.


« Reply #4 on: 19-02-2009, 19:12:05 »

Sto lavorando su questo...ma mi dà errore

Code:
for (int r=0; r<(A.length-1); r++)
{
   for (int k=0; k<A[r].length; k++)

 for (int k1=0; k<(A[r+1].length-1); k1++)


     
if (A[r][k]==A[r+1][k1])
return comune;



 
}
                 return !comune;
Logged

"Utilizzare sempre de l'Hôpital.....è come andare a caccia di farfalle con un bazooka".
fabliux
Guest
« Reply #5 on: 19-02-2009, 19:13:49 »

Sto lavorando su questo...ma mi dà errore

Code:
for (int r=0; r<(A.length-1); r++)
{
   for (int k=0; k<A[r].length; k++)

 for (int k1=0; k<(A[r+1].length-1); k1++)


     
if (A[r][k]==A[r+1][k1])
return comune;



 
}
                 return !comune;

Se nn indenti gli errori ci saranno sempre....
Code:
for (int r=0; r<(A.length-1); r++)
{
   for (int k=0; k<A[r].length; k++)
   {
     for (int k1=0; k<(A[r+1].length-1); k1++)
     {
        if (A[r][k]==A[r+1][k1])
       {
         return comune;
       }
.......................................................................e così via!!!!!!!!
« Last Edit: 19-02-2009, 19:17:20 by fabliux » Logged
Daréios89
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.679


La musica è la forma d'arte suprema.


« Reply #6 on: 19-02-2009, 19:15:48 »

fabliux questa poi me la spieghi.......
Logged

"Utilizzare sempre de l'Hôpital.....è come andare a caccia di farfalle con un bazooka".
Root
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 474



« Reply #7 on: 19-02-2009, 19:16:28 »

Sto lavorando su questo...ma mi dà errore

Code:

for (int r=0; r<(A.length-1); r++)
{
   for (int k=0; k<A[r].length; k++)
      for (int k1=0; k<(A[r+1].length-1); k1++)      
         if (A[r][k]==A[r+1][k1])
            return comune;

 return !comune;

vedi che ci sei arrivato?
Il tuo errore sta nella condizione del for più interno (controlli k piuttosto che k1)

Complimenti
 
Logged

Passa a jabber!
http://jabber.org (il servizio)
http://pidgin.im (il client)

(c'era una volta) www.mytwocent.it
Condividi le tue conoscenze!

linux registered user #449678
fabliux
Guest
« Reply #8 on: 19-02-2009, 19:19:06 »

fabliux questa poi me la spieghi.......

Errore nel postare , pardon......ciao ciao
Logged
Daréios89
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.679


La musica è la forma d'arte suprema.


« Reply #9 on: 19-02-2009, 19:25:43 »

Ok fabliux perdonato  ciao

Grazie Root, cmq c'era un'altro errore mi pare, in questo codice, dammi la conferma:
Ci dovrebbe essere l'errore al terzo for nella condizione non ci dovrebbe stare il -1

Code:
for (int r=0; r<(A.length-1); r++)
{
   for (int k=0; k<A[r].length; k++)
      for (int k1=0; k<(A[r+1].length-1); k1++)      
         if (A[r][k]==A[r+1][k1])
            return comune;

 return !comune;



Riporto il codice giusto dimmi se funziona secondo te...forse si.



Code:
/*Scrivere un metodo che prenda come parametro un array bidimensionale int e restituisca un boolean
se due righe consecutive hanno un numero in comune anche in colonne differenti*/

class righecontigue
{
public static void main(String[] args)
{
      int [][] A={{1,2,3,4},
                      {5,6,7,8},
      {9,10,11,12},
      {13,14,15,16}};
     
      System.out.println(verifica(A));
     
}      
     
     
     
      public static boolean verifica(int [][] A)
      {
      boolean comune=true;
     

                                       for (int r=0; r<(A.length-1); r++)
                                       {
                                        for (int k=0; k<A[r].length; k++)

                                        for (int k1=0; k1<(A[r+1].length); k1++)


     
                                               if (A[r][k]==A[r+1][k1])
                                                return comune;



 
                                         }
                                            return !comune;

           
                 }
}
Logged

"Utilizzare sempre de l'Hôpital.....è come andare a caccia di farfalle con un bazooka".
fabliux
Guest
« Reply #10 on: 19-02-2009, 19:30:19 »




Così funge, ma ti consiglio di indentare il tutto.... ok....

Code:
class righecontigue
{
public static void main(String[] args)
{
      int [][] A={{1,2,3,4},
                      {5,6,7,8},
      {9,10,11,12},
      {13,14,15,16}};
     
      System.out.println(verifica(A));
     
}      
public static boolean verifica(int [][] A)
{
for (int r=0; r<A.length-1; r++)
{
for(int k=0;k<A[r].length;k++)
{
for(int k1=0;k1<A[r].length;k1++ )
{
if(A[r][k]==A[r+1][k1])
{
return true;
}
}
}
}
return false;
}
}
« Last Edit: 19-02-2009, 19:33:10 by fabliux » Logged
Root
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 474



« Reply #11 on: 19-02-2009, 19:32:45 »

Grazie Root, cmq c'era un'altro errore mi pare, in questo codice, dammi la conferma:
Ci dovrebbe essere l'errore al terzo for nella condizione non ci dovrebbe stare il -1
[/quote]
Prego, esatto non lo avevo notato  testate
Logged

Passa a jabber!
http://jabber.org (il servizio)
http://pidgin.im (il client)

(c'era una volta) www.mytwocent.it
Condividi le tue conoscenze!

linux registered user #449678
Daréios89
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 2.679


La musica è la forma d'arte suprema.


« Reply #12 on: 19-02-2009, 19:36:40 »

Bè non darmi la soluzione è servito a quanto vedo, non l'avrei mai detto....
Non posso che concludere dicendoti un immenso grazie!!!

 univ
Logged

"Utilizzare sempre de l'Hôpital.....è come andare a caccia di farfalle con un bazooka".
Pages: [1]   Go Up
Print
Jump to: