Pages: [1] 2   Go Down
Print
Author Topic: esercizio 2 lasciato dal prof stamattina  (Read 5964 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Bastard_Inside
Guest
« on: 01-12-2008, 13:45:05 »

ECCO QUI L'ESERCIZIO FUNZIONANTE, PROPONETE EVENTUALI MIGLIORIE !!!
Code:
esercizio2:
  scrivere un metodo che prenda come parametri formali due array di stringhe ed un intero N e restituisca in output
  un valore booleano che indichi la presenza di 2 stringhe uguali di lunghezza maggiori di N nei differenti vettori di input.
 */
 
public class esercizio2
{
public static void main (String[]args) //main
{
int K=5;  //intero N
String[] A= {"casa", "palla", "metro", "pc","metropolitana"};
String[] B ={"computerpdcuy","palla"};
System.out.println(uguale_lunghezza(A,B,K));
}

public static boolean uguale_lunghezza(String[] x, String[] y, int N) //metodo
{
boolean trovato=false;

for(int i=0;i<x.length&&!trovato;i++)
{
if(x[i].length()>N)
{
int temp=x[i].length();

for(int j=0;j<y.length&&!trovato;j++)
{
if (y[j].length()==temp)
{
trovato=true;
}
}
}
}
return trovato;
}

}

Logged
k1r4
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 375


Il mio nick si pronuncia cappaunoerrequattro!!


WWW
« Reply #1 on: 01-12-2008, 14:06:03 »

ecco la mia soluzione:

Code:
public class Main {

    public static boolean compara(String[] a, String[] b, int n) {
        for (int i = 0; i < a.length; i++) {
            for (int j = 0; j < b.length; j++) {
                if (a[i].length() > n && b[j].length() > n) {     //Controllo che entrambe le stringhe siano maggiori di n
                    if (a[i].compareTo(b[j]) == 0) {                 //Comparo le stringhe e se sono uguali e ritorno true
                        return true;
                    }
                }
            }
        }
        return false;
    }


    public static void main(String[] args) {
        String []a = {"ciao", "betulla", "cavolo", "computer"};
        String []b = {"buono", "cervo", "computer"};
        int n = 5;
        System.out.print(compara(a, b, n));
    }

}

il metodo "compara" ritorna true alla prima occorrenza
« Last Edit: 01-12-2008, 14:11:22 by k1r4 » Logged

Aigor
Forumista Esperto
****
Offline Offline

Gender: Male
Posts: 1.184


"Il destino non è una catena, ma un volo."[A.B.]


« Reply #2 on: 01-12-2008, 14:55:18 »

Dove controlli che le due stringhe siano uguali ? Ti ritorna vero SOLO se esistono due stringhe di dimensione uguale, maggiori di n...
o forse ho capito male io l'esercizio e deve fare proprio questo ?...
Logged

"Era d'altronde uno di quegli uomini che amano assistere alla propria vita, ritenendo impropria qualsiasi ambizione a viverla.
Si sarà notato che essi osservano il loro destino nel modo in cui, i più, sono soliti osservare una giornata di pioggia." - Seta,Baricco
Aigor
Forumista Esperto
****
Offline Offline

Gender: Male
Posts: 1.184


"Il destino non è una catena, ma un volo."[A.B.]


« Reply #3 on: 01-12-2008, 14:56:25 »

Ehm... mi riferivo a Bastard_Inside 
Logged

"Era d'altronde uno di quegli uomini che amano assistere alla propria vita, ritenendo impropria qualsiasi ambizione a viverla.
Si sarà notato che essi osservano il loro destino nel modo in cui, i più, sono soliti osservare una giornata di pioggia." - Seta,Baricco
ShiShi
Apprendista Forumista
**
Offline Offline

Gender: Female
Posts: 256



« Reply #4 on: 01-12-2008, 15:02:27 »

Code:
public class EsNuovo
{
    public static void main (String[]args)
    {
        int N = 3;
        String [] A = {"no", "iasa", "ciao",};
        String [] B = {"ia", "iasa"};
        System.out.println ( metodo (A,B,N) );
    }

public static boolean metodo (String [] A, String [] B, int N)
   {
       boolean prova = false;
          for (int i=0; i<A.length; i++)
             for (int j=0; j<B.length; j++)
                 if (A[i] == B[j] && metodo2 (A[i],B[j],N))
                     prova = true;
        return prova;
    }
   
public static boolean metodo2 (String A, String B, int N)
   {
       boolean prova2 = false;
       for (int i=0; i<A.length(); i++)
           for (int j=0; j<A.length(); j++)
             if (A.length()>N && B.length()> N)
             {
                 prova2 = true;   
                return prova2;
         }
         return prova2;
     }
}

Io l'ho fatto così 
Il compareTo non credo si possa usare.
Logged
k1r4
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 375


Il mio nick si pronuncia cappaunoerrequattro!!


WWW
« Reply #5 on: 01-12-2008, 15:09:58 »

Code:
<CUT>

Io l'ho fatto così 
Il compareTo non credo si possa usare.


perchè?  
« Last Edit: 01-12-2008, 15:13:43 by k1r4 » Logged

Bastard_Inside
Guest
« Reply #6 on: 01-12-2008, 15:27:43 »

Dove controlli che le due stringhe siano uguali ? Ti ritorna vero SOLO se esistono due stringhe di dimensione uguale, maggiori di n...
o forse ho capito male io l'esercizio e deve fare proprio questo ?...


devi solo vedere se esistono 2 stringhe di uguale lunghezza e maggiori d n ! non devono essere uguali (stessa parola)
Logged
ShiShi
Apprendista Forumista
**
Offline Offline

Gender: Female
Posts: 256



« Reply #7 on: 01-12-2008, 15:29:21 »

Code:
<CUT>

Io l'ho fatto così 
Il compareTo non credo si possa usare.


perchè?   
Se non sbaglio il prof. non vuole che lo si usi nei compiti..
Logged
k1r4
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 375


Il mio nick si pronuncia cappaunoerrequattro!!


WWW
« Reply #8 on: 01-12-2008, 15:31:54 »

Dove controlli che le due stringhe siano uguali ? Ti ritorna vero SOLO se esistono due stringhe di dimensione uguale, maggiori di n...
o forse ho capito male io l'esercizio e deve fare proprio questo ?...



devi solo vedere se esistono 2 stringhe di uguale lunghezza e maggiori d n ! non devono essere uguali (stessa parola)

Nell esempio che ha fatto Cincotti proprio su questo esercizio mostrava l'utilizzo del metodo equals.. quindi le stringhe devono essere la stessa parola.
Logged

k1r4
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 375


Il mio nick si pronuncia cappaunoerrequattro!!


WWW
« Reply #9 on: 01-12-2008, 15:33:07 »

Code:
<CUT>

Io l'ho fatto così 
Il compareTo non credo si possa usare.


perchè?  
Se non sbaglio il prof. non vuole che lo si usi nei compiti..

Scusa ma non gli ho mai sentito dire una cosa del genere    anche perchè alla fine fanno entrambi la stessa cosa...

ma potrei sbagliarmi  [Emoticon] Asd
« Last Edit: 01-12-2008, 15:46:14 by k1r4 » Logged

carmelo_ct
Guest
« Reply #10 on: 01-12-2008, 16:03:56 »

scusate, ma perchè nel ciclo for del 1° metodo si usa un .lenght senza (), e poi nell'altro ciclo for si usa

un .lenght con ()          ?
 
Logged
Aigor
Forumista Esperto
****
Offline Offline

Gender: Male
Posts: 1.184


"Il destino non è una catena, ma un volo."[A.B.]


« Reply #11 on: 01-12-2008, 16:08:50 »

scusate, ma perchè nel ciclo for del 1° metodo si usa un .lenght senza (), e poi nell'altro ciclo for si usa

un .lenght con ()          ?
 

Il primo lenght restituisce la lunghezza dell'array, il secondo leght() restituisce la lunghezza della stringa alla posizione i.
comunque per quanto riguarda la equals e la compareTo hanno entrambe la stessa funzione all'incirca ( la prima restituisce un boolean la seconda un intero ), di solito la compareTo viene fatta in programmazione 2 ! conoscerla comunque non è un delitto 
Logged

"Era d'altronde uno di quegli uomini che amano assistere alla propria vita, ritenendo impropria qualsiasi ambizione a viverla.
Si sarà notato che essi osservano il loro destino nel modo in cui, i più, sono soliti osservare una giornata di pioggia." - Seta,Baricco
MisteroLupo
Apprendista Forumista
**
Offline Offline

Posts: 273

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


« Reply #12 on: 01-12-2008, 16:18:51 »

Ecco la mia soluzione, non l'ho testata a fondo ma a qualche prova sembra funzionare. Ho usato un solo ciclo for:
Code:
public static boolean esercizio2(String[] A,String[] B, int N) {
    boolean trovati = false;
    for (int i = 0;i<A.length;i++){
        if (A[i].length() > N && A[i].equals(B[i])) {trovati = true;}
    }
    return trovati;
}
Logged
k1r4
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 375


Il mio nick si pronuncia cappaunoerrequattro!!


WWW
« Reply #13 on: 01-12-2008, 16:22:33 »

Ecco la mia soluzione, non l'ho testata a fondo ma a qualche prova sembra funzionare. Ho usato un solo ciclo for:
Code:
public static boolean esercizio2(String[] A,String[] B, int N) {
    boolean trovati = false;
    for (int i = 0;i<A.length;i++){
        if (A[i].length() > N && A[i].equals(B[i])) {trovati = true;}
    }
    return trovati;
}

scusa ma gli array di stringhe possono avere un numero di elementi diverso  [Emoticon] Asd
Logged

ShiShi
Apprendista Forumista
**
Offline Offline

Gender: Female
Posts: 256



« Reply #14 on: 01-12-2008, 16:25:24 »

Dove controlli che le due stringhe siano uguali ? Ti ritorna vero SOLO se esistono due stringhe di dimensione uguale, maggiori di n...
o forse ho capito male io l'esercizio e deve fare proprio questo ?...


devi solo vedere se esistono 2 stringhe di uguale lunghezza e maggiori d n ! non devono essere uguali (stessa parola)
Ha ragione Aigor le stringhe devono 'essere uguali e di lunghezza maggiore di N'.
Code:
<CUT>

Io l'ho fatto così 
Il compareTo non credo si possa usare.


perchè?   
Se non sbaglio il prof. non vuole che lo si usi nei compiti..

Scusa ma non gli ho mai sentito dire una cosa del genere    anche perchè alla fine fanno entrambi la stessa cosa...

ma potrei sbagliarmi  [Emoticon] Asd

Meglio così se si può usare Tongue
« Last Edit: 01-12-2008, 16:30:29 by ShiShi » Logged
Pages: [1] 2   Go Up
Print
Jump to: