Programma c++ su array

di il
30 risposte

30 Risposte - Pagina 2

  • Re: Programma c++ su array

    Ho capito l'errore array non è un int
    ma per quanto riguarda int quantevolte lo devo mettere solo nel main oppure devo dichiarare fuori la funzione e soprattutto a cosa mi serve oltre che a richiamare la funzione occorrenze?
    cioè dico nel main poi una volta richiamata che devo scrivere?
    non è che potresti darmi il tuo contatto msn che mi faresti un gran favore...
  • Re: Programma c++ su array

    Allora un pò di teoria:
    Main stesso è una funzione. E' la prima funzione che il sistema operativo chiama quando lanci il tuo programma. Un programma senza main non si compila quindi fin quì voglio che le cose siano chiare.
    Una funzione cos'è: Una serie di istruzioni che dato dei parametri in input ti restituisce zero (caso funzione dichiarata come void funzione(parametri) oppure un parametro in output (tipodidato funzione(parametri)).
    Quindi tu chiami una funzione quando vuoi far eseguire delle istruzioni ma li vuoi tenere separati dal tuo main. Questo perche:
    1. Il main rimane + snello
    2. se hai problemi nella funzione correggi solo la funzione e non tutto il programma.
    Quindi se nel main tu vuoi sapere quante sono le occorrenze di un dato x in un array a di dimensione n, e hai creato la funzione che dato come input l'array a, la dimensione n e il dato da cercare x, crei una variabile NEL MAIN per tenere il valore restituito dalla funzione occorrenze. Una volta che hai questo dato lo puoi usare nel main come meglio credi: visualizzarlo sullo schermo, usarlo per fare altri calcoli ecc.
    quindi:
    siamo nel main
    
    int main()
    { 
      ..............
       int quanteVolte = occorrenze(a,n,x);
       
       // quanteVolte adesso tiene il numero delle occorrenze che la funzione occorrenze ha trovato per il dato x.
    
       cout << quanteVolte << endl;
      //stampo su schermo le occorrenze trovate.
    }
    
    MSN: no grazie.
  • Re: Programma c++ su array

    Ti ringrazio nuovamente
    sei stato molto preciso nella spiegazione
    cmq ora riprovo dal capo e se ci sono problemi ti faccio sapere
  • Re: Programma c++ su array

    La funzione booleana come la richiamo nella funzione principale main?
    io avevo pensato :

    #include<iostream>
    using namespace std;
    int occorrenze(int [], int , int);
    bool funzione(int [], int );
    int main()
    {
    const int DIM=100;
    int a[DIM];
    int n=0;
    int dimensione_logica=0;

    int num;
    bool test=true;
    cout<<"Inserire dei numeri o una lettera per terminare"<<endl;
    while(test && n<DIM)
    {
    cin>>num;
    if(!cin.fail())
    {
    a[n]=num;
    n++;
    }
    else
    test=false;
    }
    dimensione_logica=n;
    cout<<endl<<"la dimensione logica è uguale a "<<n<< endl;

    int x;
    cout<<"Inserisci un numero e verifica quante volte ci sta nell'array";
    cin>>x;

    int occur=occorrenze(a,n,x);
    if(funzione)
    cout<<"le occorrenze sono "<< occur<<endl;
    else
    cout<<"la condizione non è verificata<<endl;
    }
    int occorrenze(int a[], int n, int x)
    {
    int i;
    int contatore =0;
    for(i=0;i<n;i++)
    if(a==x)
    contatore++;
    return contatore;
    }

    bool funzione(int a[], int n)
    {
    bool condizione=true;
    int i=1;
    int occ=occorrenze(a,n,a[0]);
    while(i<n && condizione)
    {
    if(occ!=occorrenze(a,n,a))
    condizione=false;
    i++;
    }
    return condizione;
    }
  • Re: Programma c++ su array

    Cosa fa la funzione bool chiamata funzione?
    usa [ code ] tuocodice [ /code ] togliendo gli spazi
    che così non si capisce cosa hai scritto.
  • Re: Programma c++ su array

    
    int occur=occorrenze(a,n,x);
    if(occur != 0) //basta questo.
    cout<<"le occorrenze sono "<< occur<<endl;
    else
    cout<<"la condizione non è verificata<<endl;
    }
    
  • Re: Programma c++ su array

    Spiega da capo cosa intendi fare con sto programma perche mi pare che stai cercando non solo di contare le occorrenze ma di vedere anche se le occorrenze sono le stesse x ogni valore del vettore. Una funzione booleana lo puoi chiamare nello stesso modo in cui chiami una funzione qualsiasi.
    
    bool valoreRitorno = funzione(a,n);
    if(valoreRitorno == true)
    ....
    else
    ....
    
    siccome una espressione dentro un if è sempre eguagliata a true tutto si semplifica in:
    
    if(funzione(a,n) == true)
    ...
    else
    ....
    
    
    ancora meglio
    if(funzione(a,n)) //== a true è di default
    ...
    else
    ....
    
    
  • Re: Programma c++ su array

    Comunque io voglio vedere che le occorrenze all'interno dell'array siano le stesse ma non ci riesco

    guarda potresti correggermi il programma
    non ci sto capendo più nulla


    #include<iostream>
    using namespace std;
    int occorrenze(int [], int , int);
    bool funzione(int [], int );


    int main()
    {
    const int DIM=100;
    int a[DIM];
    int n=0;
    int dimensione_logica=0;

    int num;
    bool test=true;
    cout<<"Inserire dei numeri o una lettera per terminare"<<endl;
    while(test && n<DIM)
    {
    cin>>num;
    if(!cin.fail())
    {
    a[n]=num;
    n++;
    }
    else
    test=false;
    }
    dimensione_logica=n;
    cout<<endl<<"la dimensione logica è uguale a "<<n<< endl;

    int x;
    cout<<"Inserisci un numero e verifica quante volte ci sta nell'array";
    cin>>x;

    int occur=occorrenze(a,n,x);
    if(funzione(a,n))
    cout<<"le occorrenze sono "<< occur<<endl;
    else
    cout<<"la condizione non è verificata"<<endl;
    }


    int occorrenze(int a[], int n, int x)
    {
    int i;
    int contatore =0;
    for(i=0;i<n;i++)
    if(a==x)
    contatore++;
    return contatore;
    }


    bool funzione(int a[], int n)
    {
    bool condizione=true;
    int i=1;
    int occ=occorrenze(a,n,a[0]);
    while(i<n && condizione)
    {
    if(occ!=occorrenze(a,n,a))
    condizione=false;
    i++;
    }
    return condizione;
    }
  • Re: Programma c++ su array

    È tanto dificile postare del codice formattato? metti tra parentesi quadre [] la scritta code all'inizio codice e tra parentesi quadre [] la scritta /code a fine codice. così non si capisce nulla.
  • Re: Programma c++ su array

    Guarda che è tutto del codice
    non ci sono commenti personali
    se ho capito bene quello dicevi
  • Re: Programma c++ su array

    Hai visto come viene postato il mio codice o quello dei altri? In una casella dove c'è scritto CODICE: Seleziona tutto. Ti sei mai chiesto perche il tuo codice non viene messo così?
  • Re: Programma c++ su array

    Il programma funzionante è il seguente
    
    #include <iostream>
    
    using namespace std;
    
    int num_occ(int a[],int dima,int x)
    {
        int cont=0;
        int i=0;
        while(i<dima)
        {
            if(a[i]==x){
                         cont++;
                         i++;
                      }
        else i++;
        }
        return cont;
    }
    
    bool uguali_occ(int a[],int dima)
    {
        bool cond;
        int i=0;
        int appo=a[i];
        int n=num_occ(a,dima,appo);
        i++;
        while(i<dima)
        {
            int m=num_occ(a,dima,a[i]);
            if(m!=n) return false;
            else {
                   cond =true;
                   i++;
                 }
        }
        return cond;
    }
    
    int main()
    {
        cout << "OCCORRENZE V2!" << endl;
        const int n1=8;
        const int n2=4;
        int x[]={1,5,-2,5,-2,4,4,1};
        int y[]={3,-5,4,-5};
        bool bb,bb1;
        bb=uguali_occ(x,n1);
        if (bb==true) cout<<"il primo vettore rispetta la condizione"<<endl;
        else cout<<"il primo vettore NON rispetta la condizione"<<endl;
        cout<<endl;
        bb1=uguali_occ(y,n2);
        if (bb1==true) cout<<"il secondo vettore rispetta la condizione"<<endl;
        else cout<<"il secondo vettore NON rispetta la condizione"<<endl;
        return 0;
    }
    
    Per qualsiasi chiarimento chiedi pure.
  • Re: Programma c++ su array

    Il programma funzionante è il seguente
    
    #include <iostream>
    
    using namespace std;
    
    int num_occ(int a[],int dima,int x)
    {
        int cont=0;
        int i=0;
        while(i<dima)
        {
            if(a[i]==x){
                         cont++;
                         i++;
                      }
        else i++;
        }
        return cont;
    }
    
    bool uguali_occ(int a[],int dima)
    {
        bool cond;
        int i=0;
        int appo=a[i];
        int n=num_occ(a,dima,appo);
        i++;
        while(i<dima)
        {
            int m=num_occ(a,dima,a[i]);
            if(m!=n) return false;
            else {
                   cond =true;
                   i++;
                 }
        }
        return cond;
    }
    
    int main()
    {
        cout << "OCCORRENZE V2!" << endl;
        const int n1=8;
        const int n2=4;
        int x[]={1,5,-2,5,-2,4,4,1};
        int y[]={3,-5,4,-5};
        bool bb,bb1;
        bb=uguali_occ(x,n1);
        if (bb==true) cout<<"il primo vettore rispetta la condizione"<<endl;
        else cout<<"il primo vettore NON rispetta la condizione"<<endl;
        cout<<endl;
        bb1=uguali_occ(y,n2);
        if (bb1==true) cout<<"il secondo vettore rispetta la condizione"<<endl;
        else cout<<"il secondo vettore NON rispetta la condizione"<<endl;
        return 0;
    }
    
    Per qualsiasi chiarimento chiedi pure
  • Re: Programma c++ su array

    Bravo. Così ha risolto un esercizio e ha imparato meno di prima.
  • Re: Programma c++ su array

    Ti ringazio
Devi accedere o registrarti per scrivere nel forum
30 risposte