Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19

Discussione: Confronto di due array

  1. #1

    Confronto di due array

    Ciao a tutti...
    Ho un problema da risolvere e chiedo il vostro aiuto magari per trovare l'algoritmo di esecuzione.
    Allora,io ho due array di char e devo dire se il secondo array contiene tutti gli elementi del primo...

    Presumo che debba fare un ciclo for a partire dal primo array e vedere per ogni elemento se è contenuto nel secondo array..
    Come posso tradurlo a livello di codice?

    Grazie

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Confronto di due array

    Originariamente inviato da OvettoKinder
    devo dire se il secondo array contiene tutti gli elementi del primo...
    Nel secondo array devi trovare gli elementi del primo ma .... trovarli consecutivi? E se no ... comunque nello stesso ordine o in qualunque ordine??
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Basta che ci siano...non importa l'ordine...

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da OvettoKinder
    Basta che ci siano...non importa l'ordine...
    Quindi dato es. A={'o', 'c'} determinare se in B={'c', 'i', 'a', 'o'} ci sono tutti gli elementi di A (qualunque posizione/ordine). In questo caso devi per forza partire scansionando A, per ogni carattere vai a cercarlo in B.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    si,questo lo ho capito...
    Ma non riesco a tradurlo in codice...

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da OvettoKinder
    Ma non riesco a tradurlo in codice...
    Classico doppio ciclo for annidato. Il primo: per ogni elemento in A. Il secondo, innestato: per ogni elemento in B. Solo una questione: se alla fine del ciclo interno non hai trovato il carattere di A in B, per te il risultato finale è già false, non devi continuare.
    Qui dovresti tenerti una variabile che fa da "flag" trovato/non trovato. Ma se conosci come si usa il continue con label .... lo fai brillantemente e senza usare alcuna variabile. Appena trovi il carattere fai "continuare" il ciclo esterno.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Tipo:

    public class InsiemeArray {
    public static void main(String[] args){
    char[] primoArray={'a','c','b','d','e'};
    char[] secondoArray={'a','b','c','d','e','f','g','h','i', 'l','m','n','o','p','q'};
    cercaInsieme(primoArray,secondoArray);
    }

    static boolean cercaInsieme(char[] primoArray,char[] secondoArray){
    for(int i=0;i<=primoArray.length-1;i++){
    for(int y=0;y<=secondoArray.length-1;y++){
    if(primoArray[i]==secondoArray[y]){
    i++;
    }
    else{
    while(y<=secondoArray.length-1){
    y++;
    }

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da OvettoKinder
    Tipo:
    No, come ho detto, a livello di "cicli" bastano 2 for annidati. Il while che hai messo non so a che ti serva ....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Basta togliere il while quindi?e dopo?Potresti farmi uno schizzo di come lo faresti te gentilmente?

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da OvettoKinder
    Basta togliere il while quindi?e dopo?Potresti farmi uno schizzo di come lo faresti te gentilmente?
    Moooolto abbozzato/pseudo codice:

    codice:
    FOR su primo array
        VAR trovato = false
    
        FOR su secondo array
            IF char di secondo = char di primo THEN
                trovato = true
                esci da questo FOR  <-- opzionale, come ottimizzazione
            END IF
        END FOR
    
        IF trovato = false THEN
            RETURN false
        END IF
    END FOR
    
    RETURN true
    E ripeto che se conosci come si usa il continue con label (forse/probabilmente dovresti ...) lo fai senza usare quella variabile 'trovato' cambiando di poco le cose.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.