Lettura duplicati

di il
7 risposte

Lettura duplicati

Salve a tutti.
Ho un codice in cui verifico(a coppie) se le matrici hanno lo stesso numero di colonne e le stampo.. ma vorrei che se stampo la matrice A e B, successivamente non mi stampa la matrice B-A poichè è già stata fatta la verifica tra A e B, quindi sarebbe una sorta di dubplicato.. il codice da me sviluppato è il seguente:


PrintWriter pw5 = new PrintWriter(new FileWriter("5.txt"));
int w=0;
int v=0;
int i2=0;
int j2=0;
for (Matrice m: matrici){
w=m.nColonne();
i2++;
for(Matrice m1:matrici){
v=m1.nColonne();
j2++;
if(i2!=j2) {
if(w==v){
pw5.print("Le matrici "+m+" e "+m1+" hanno lo stesso numero di colonne\n\n");
}
else
pw5.print("Le matrici "+m+" e "+m1+ "hanno numero di colonne diverso \n\n");
}
}
j2=0;
}
pw5.close();


Come posso fare affinchè nel caso in cui mi vada a verificare le matrici A-B successivamente non vada a fare B-A?

P.s.: nColonne è un metodo da me creato nella classe Matrice nel quale conto il numero di colonne presente in ogni matrice

7 Risposte

  • Re: Lettura duplicati

    Anto11796 ha scritto:


    vorrei che se stampo la matrice A e B, successivamente non mi stampa la matrice B-A
    Immagina di avere 5 matrici a, b, c, d, e

    La progressione dovresti farla:
        parti da b, non a
       /
    a b
    a c
    a d
    a e
    
        parti da c, non a/b
       /
    b c
    b d
    b e
    
        parti da d, non a/b/c
       /
    c d
    c e
    
    ...ecc..
    Il "parti" lo puoi anche intendere nel senso di "salta" quelli precedenti. Ragionaci, puoi farlo benissimo anche come stai gestendo ora gli indici (cioè tenuti extra oltre al for-each).
  • Re: Lettura duplicati

    Ho capito il ragionamento, e per questo direi che devo "giocarmela" sulla variabile j2=0, ma anche facendo varie modifiche non riesco a saltarci fuori perchè non capisco come poter attuare tale ragionamento in questo codice
  • Re: Lettura duplicati

    Anto11796 ha scritto:


    Ho capito il ragionamento, e per questo direi che devo "giocarmela" sulla variabile j2=0, ma anche facendo varie modifiche non riesco a saltarci fuori perchè non capisco come poter attuare tale ragionamento in questo codice
    Stai usando il for-each per scorrere la matrice, quindi esso parte sempre dall'inizio, pertanto NON puoi far "partire" un indice più avanti.
    Semplicemente, l'ho detto prima: ragiona sul "saltare" il controllo delle colonne. Come l'avevi fatto prima, saltavi (giustamente) il controllo quando i2 uguale j2 (è la stessa matrice).
    Ora devi "saltare" di più.
  • Re: Lettura duplicati

    Niente, purtroppo le sto provando in tutti i colori ma non riesco ad arrivarci.. essendo alle prime armi ancora non riesco ad entrare ancora bene nella logica.. so benissimo che dare la "pappa già pronta" non è neanche la corretta soluzione, ma purtroppo non riesco a saltarci fuori
  • Re: Lettura duplicati

    Anto11796 ha scritto:


    Niente, purtroppo le sto provando in tutti i colori ma non riesco ad arrivarci.. essendo alle prime armi ancora non riesco ad entrare ancora bene nella logica..
    Ok, allora ripeto: hai es. 5 matrici agli indici 0...4. E hai 2 variabili "indice" per il ciclo esterno e interno (ora non importa come le chiami). Queste devono sempre partire da 0, stai usando il for-each e quindi devi replicare il fatto che parte sempre dall'inizio.

    est. 0
    int. 0 1 2 3 4

    est. 1
    int. 0 1 2 3 4

    est. 2
    int. 0 1 2 3 4

    ecc...

    Gli indici interni che ho colorato, li devi IGNORARE, ovvero devi fare il controllo sul numero di colonne solo quando l'indice interno è ......

    EDIT: ho colorato le parti, così è più evidente ..
  • Re: Lettura duplicati

    Ok ora mi è più chiaro e finalmente son riuscito a capire meglio il tutto, scusami se ho dovuto farti rispiegare alcune cose ma essendo alle prime armi non mi è sempre molto immediato e ho ancora molte conoscenze e lacune da sistemare.
    Ad ogni modo ti ringrazio per la pazienza e la disponibilità!
  • Re: Lettura duplicati

    P.S. giusto perché tu lo sappia: il modo di considerare le matrici secondo quella sequenza descritta, nella teoria del calcolo combinatorio si chiamano "combinazioni semplici (senza ripetizione)".
Devi accedere o registrarti per scrivere nel forum
7 risposte