Esercizio c++ con array

di il
1 risposte

Esercizio c++ con array

Salve a tutti, avrei urgentemente bisogno di una mano per risolvere questo esercizio che mi sono inventato
Ho un array di N elementi reali, devo stampare tutti i possibili sottoarray,tale che la somma degli elementi di questi sia minore della media tra l'elemento massimo e l'elemento minimo.
Io riesco a stamparmi solo il primo,gli altri non ci riesco
ecco qui il mio codice dove l'ultimo while più esterno l'avevo messo per stamparmi tutti i sottoarray che verificano la condizione ma come immaginavo è un ciclo infinito


#include<iostream>
using namespace std;
const int N=10;
int main()
{
    double a[N]={4,4.5,4.8,36,7,8,9,11,5,6.1};
    int i,j;
    double min,max;
    min=max=a[0];
    i=0;
    while(i<N)
    {
        if(a[i]<min)min=a[i];
    i++;
    }
    j=0;
    while(j<N)
    {
        if(a[j]>max)max=a[j];
    j++;
    }
    cout<<"Gli elementi dell'array sono:  "<<endl;
    for(int k=0;k<N;k++)
        cout<<a[k]<<"   ";
    cout<<endl<<endl;
    cout<<"Gli elementi minimo e massimo dell'array sono rispettivamente"<<endl<<min<<"  e  "<<max<<endl<<endl;

    double media=(min+max)/2;
    cout<<endl<<"La media dei due numeri minimo e massimo è:   "<<media<<endl<<endl;

    bool c[N];
    for(int d=0;d<N;d++)
        c[d]=false;


    int p=0,q=0;
    double temp=media;

    bool verifica=true;
while(verifica)
{
 double somma=0;

    while(p<N)
    {
        if(somma+a[p]<=media && a[p]!=min && a[p]!=max){
            if(c[p]==false){
            somma+=a[p];
            c[p]=false;
            cout<<a[p]<<" - ";
            }
        }
        verifica=true;
    p++;
    }
    cout<<endl;
}
return 0;
}

1 Risposte

  • Re: Esercizio c++ con array

    
    int cont =0;
    while(verifica)
    {
    double somma=0;
        p=cont;
        while(p<N)
        {
            if(somma+a[p]<=media && a[p]!=min && a[p]!=max){
                if(c[p]==false){
                somma+=a[p];
                c[p]=false;
                cout<<a[p]<<" - ";
                }
            }
            verifica=true;
        p++;
        }
        cout<<endl;
        cont++;
    }
    return 0;
    }
    
    come hai fatto tutto è normale che va solo il primo, ma cmq la condizione del primo while penso non sia esatta , penso adrebbe in loop o.o anche la prima condizione dovrebbe essere tipo while ( cont < N ) . Ma cmq in questo modo non so se avrai tutti i possibili sottoarray.
Devi accedere o registrarti per scrivere nel forum
1 risposte