Programmino c++ con array

di il
7 risposte

Programmino c++ con array

Ragazzi ho bisogno di una mano per scrivere il codice di questo programma utilizzando o una oppure (meglio) due funzioni
scrivere una funzione che ,dati due array x ed y ed un intero k, restituisce true se e solo se esiste almeno un elemento di x che occorre k volte in y.
per esempio se x={1,2,4} e y={1,1,1,2,1,4,-5,6} se k=3 TRUE se k=5 FALSE

7 Risposte

  • Re: Programmino c++ con array

    Ecco qui il programma scritto da me ma non riesco a capire quali sono gli errori
    visto che mi dice sempre che la condizione è verificata


    #include<iostream>
    using namespace std;
    bool occorrenze(const int [],int,const int [],int,int);
    int n=0;
    int main()
    {
    const int x[]={1,2,4};
    const int y[]={1,1,1,2,1,4,-5,6};
    int k=0;
    cout<<"Inserire un numero k positivo per calcolare le occorrenze di x in y"<<endl;
    cin>>k;
    if(occorrenze)
    cout<<"LA CONDIZIONE E' VERIFICATA"<<endl;
    else
    cout<<"LA CONDIZIONE NON E' VERIFICATA"<<endl;

    return 0;

    }


    bool occorrenze(const int x[],int nx,const int y[],int ny,int k)
    {
    int i;
    int j;
    int cont;
    bool trovato=false; //mi dice se ho trovato un valore x che mi soddisfa la condizione cercata
    i=0;
    while(i<nx && !trovato)
    {
    j=0, cont=0;
    while(j<ny && !trovato)
    {
    if(x==y[j])
    {
    cont++;
    trovato=cont>=k;
    }
    j++;
    }
    i++;
    }
    return trovato;
    }
  • Re: Programmino c++ con array

    Ti sei dimenticato degli argomenti:
    if(occorrenze(...))
    
  • Re: Programmino c++ con array

    Cioè cosa devo scrivere per intenderci
    che non riesco a capire
    non basta mettere if(occorrenze)
    poichè occorrenze è una booleana?
  • Re: Programmino c++ con array

    Cosa c'entra che è una booleana? Gli argomenti li devi inserire comunque, oppure crea variabili globali.
  • Re: Programmino c++ con array

    Poi la variabile n rimane inutilizzata.
  • Re: Programmino c++ con array

    Allora, fai così:
    #include<iostream>
    
    using namespace std;
    
    bool occorrenze(const int [],int,const int [],int,int);
    
    int main()
    {
      const int x[nx] = {1,2,4};
      const int y[ny] = {1,1,1,2,1,4,-5,6};
      int k = 0;
      cout << "Inserire un numero k positivo per calcolare le occorrenze di x in y" << endl;
      cin >> k;
      if (occorrenze(x, nx, y, ny,))
        cout<<"LA CONDIZIONE E' VERIFICATA"<<endl;
      else
        cout<<"LA CONDIZIONE NON E' VERIFICATA"<<endl;
      return 0;
    }
    
    
    bool occorrenze(const int x[],int nx,const int y[],int ny,int k)
    {
      int i;
      int j;
      int cont;
      bool trovato=false; //mi dice se ho trovato un valore x che mi soddisfa la condizione cercata
      i = 0;
      while(i<nx && !trovato)
      {
        j=0, cont=0;
        while(j<ny && !trovato)
        {
          if(x[i]==y[j])
          {
            cont++;
            trovato=cont>=k;
          }
          j++;
        }
        i++;
      }
      return trovato;
    }
  • Re: Programmino c++ con array

    Come hai detto masaniello, sarebbe meglio usare due funzioni, la prima che restituisce il risultato vero e proprio al chiamante (ovvero se davvero almeno un elemento di X occore K volte in Y), la seconda invece la usi per cercare le occorrenze di un elemento di X in Y). prendendo esempio dal codice che hai postato, potrebbe essere:
    
    #include<iostream>
    using namespace std;
    
    int Occorrenze(int n ,const int vett[],int dim); // <--- funzione che mi dice quante volte un numero occore in un array di dimensione dim
    
    bool Verifica(const int vettX[],int dimX,const int vettY[],int dimX,int nOcc ) // <--- Restituisce se almeno un valore di vettX occorre nOcc volte in vettY
    
    int main(){
        const int x[]={1,2,4};
        const int y[]={1,1,1,2,1,4,-5,6};
        int k=0;
        cout<<"Inserire un numero k positivo per calcolare le occorrenze di x in y"<<endl;
        cin>>k;
        if(ValutaOccorrenze(x,y,3,8,k)
            cout<<"LA CONDIZIONE E' VERIFICATA"<<endl;
        else
            cout<<"LA CONDIZIONE NON E' VERIFICATA"<<endl;
        return 0;
    }
    
    int Occorrenze(int n,const int vett[],int dim){
        dim occ=0;
        for (int i=0;i<dim;++i)
            if (n == vett[i]) ++occ;
        return occ;
    }
    
    bool Verifica(const int vettX[],int dimX,const int vettY[],int dimY, int nOcc){
        if (dimY<=0 || dimX<=0 || nOcc<=0) return false;
        for(int i=0;i<dimX;++i)
            if (nOcc == Occorrenze(vettX[i],vettY,dimY)) return true;
        return false;
    }
    
Devi accedere o registrarti per scrivere nel forum
7 risposte