Intersezione elementi comuni tra una matrice ed un array

di il
7 risposte

Intersezione elementi comuni tra una matrice ed un array

Salve, avrei bisogno di aiuto con questo mio codice:
#include <iostream>

using namespace std;

int main()
{
    int k=0;
    int x=0;
    int *D = new int[3];
    int B[3] = {1,4,0};
    int A[3][3] {
        {1,2,3},
        {4,5,0},
        {3,0,6}
};
    for(int i=0; i<3; i++){
            D[i]=0;
        for(int j=0; j<3; j++){
            D[i]=A[i][j];
            while(k<3 && x<3){
                if(D[k] < B[x])
                    k++;
                else if(B[x] < D[k])
                    x++;
                else if(D[k]==B[x]){
                    cout << B[x] << " ";
                    k++;
                    x++;
                }
            }
            }
        }
}
Dovrei controllare quali sono gli elementi comunti tra la matrice e l'array, ma con questo codice che ho scritto confronta soltanto la prima riga della matrice con l'array e non tutte. Riguardando il codice non riesco a capire dove stia l'errore. Grazie a chi saprá aiutarmi.

7 Risposte

  • Re: Intersezione elementi comuni tra una matrice ed un array

    Innanzitutto questa intersezione deve essere salvata in un array o solo stampata a schermo?

    In ogni caso credo che l'esercizio possa essere approcciato in modo molto più semplice... basta scorrere la matrice per ogni elemento dell'array!
  • Re: Intersezione elementi comuni tra una matrice ed un array

    Grazie per la risposta, deve essere salvata in un array, questa é stata una prova per vedere se stampava tutti i valori comuni dell'array e della matrice.
    In che modo scorrere la matrice per ogni elemento dell'array??
  • Re: Intersezione elementi comuni tra una matrice ed un array

    for che itera sull'array
    { 
        doppio for che itera sulla matrice
        {
            if che controlla se l'elemento corrente dell'array è uguale all'elemento corrente della matrice
        }
    }
  • Re: Intersezione elementi comuni tra una matrice ed un array

    Cosí va bene?
    #include <iostream>
    #define n 5
    
    using namespace std;
    
    int arr(int A[][n], int B[n])
    {
        int *C = new int[n];
        for(int i=0; i<n; i++){
            for(int k=0; k<n; k++){
                for(int j=0; j<n; j++){
                    if(B[i]==A[k][j])
                        C[i]=B[i];
                }
            }
        }
        return C[n];
    }
    Il codice dovrebbe restituire un array. Un'ultima domanda: siccome l'esercizio chiede che C non deve contenere ripetizioni, come posso fare per evitare che ció accada?? Grazie ancora e scusa il disturbo
  • Re: Intersezione elementi comuni tra una matrice ed un array

    La struttura dei cicli va bene, ma ti invito a ragionare su alcune cose:
    - cosa rappresenta l'intero ritornato dalla funzione e cosa te ne fai? Secondo te tale intero appartiene all'array C?
    - secondo te cosa conterrà l'array C al termine della funzione? Per esempio nel seguente caso:

    A = 1 3 7
    5 8 3
    6 1 4

    B = 2 6 9

    C = ?

    - secondo te una volta appurato che il generico elemento dell'array è contenuto nella matrice, ha senso continuare la sua ricerca all'interno della matrice?

    Occupiamoci prima di rendere funzionante il codice e poi possiamo ragionare riguardo al fatto che C non deve contenere ripetizioni!
  • Re: Intersezione elementi comuni tra una matrice ed un array

    Nippolo ha scritto:


    La struttura dei cicli va bene, ma ti invito a ragionare su alcune cose:
    - cosa rappresenta l'intero ritornato dalla funzione e cosa te ne fai? Secondo te tale intero appartiene all'array C?
    - secondo te cosa conterrà l'array C al termine della funzione? Per esempio nel seguente caso:

    A = 1 3 7
    5 8 3
    6 1 4

    B = 2 6 9

    C = ?

    - secondo te una volta appurato che il generico elemento dell'array è contenuto nella matrice, ha senso continuare la sua ricerca all'interno della matrice?

    Occupiamoci prima di rendere funzionante il codice e poi possiamo ragionare riguardo al fatto che C non deve contenere ripetizioni!
    -In realtá non ho ancora capito bene come scrivere in modo che la funzione ritorni l'array che ho riempito con i valori in comune
    -Non ho capito se conterrá soltano il 6 oppure il 6 e le altre celle contengono 0
    -In che senso una volta appurato che é contenuto nella matrice? Cioé una volta trovato dovrei fermare la ricerca?
  • Re: Intersezione elementi comuni tra una matrice ed un array

    -In realtá non ho ancora capito bene come scrivere in modo che la funzione ritorni l'array che ho riempito con i valori in comune
    Conosci la relazione che esiste tra array e puntatori?
    In ogni caso molto più semplicemente puoi anche passare l'array C alla funzione come argomento.
    -Non ho capito se conterrá soltano il 6 oppure il 6 e le altre celle contengono 0
    Non ti viene in mente nessun modo per scoprirlo?! Magari compilare il codice ed osservarne l'output?!
    Poi per curiosità... da dove dovrebbero uscire gli 0 di cui parli?
    -In che senso una volta appurato che é contenuto nella matrice? Cioé una volta trovato dovrei fermare la ricerca?
    A che pro continuarla?!
Devi accedere o registrarti per scrivere nel forum
7 risposte