Programma con array bidimensionali!!!!

di Anonimizzato8504 il
8 risposte
Salve a tutti gente, avrei bisogno di sapere come si risolve questo esercizio
è un esercizio d'esame
ecco il testo:
Scrivere una funzione C++ che dato un array a due dimensioni N x N di interi a, un intero n>=1 ed un intero k, restituisce TRUE se e solo se in ogni colonna esistono n coppie distinte di elementi la cui somma sia pari a k.

8 Risposte

  • Nessuno che può aiutarmi???
  • Tu cosa hai fatto?
  • Ecco una soluzione elaborata da me

    Ho utilizzato due funzioni
    La prima che mi verifica se le condizioni nel testo vengono verificate nella prima colonna
    La seconda funzione che mi verifica invece se la condizione viene verificata per tutte le altre colonne
    
    bool verifica_coppia(int a[N][N], int k, int n, int& c){
    int i , j;
    bool trovata = false;
    int cont=0;
    i=0;
    while(i<N && !trovata){
    j=0;
    while(j<N && !trovata){
    c=0;
    if((a[i][c]+a[i+j][c])==k)
    cont++;
    j++;
    }
    i++;
    if(cont==n)
    trovata=true;
    }
    return trovata;
    }
    
    bool condizione(int a[N][N], int k, int n){
    int s=0;
    bool condition=true;
    while (s<N&& condition){
    verifica_coppia(a,k,n,s);
    if(verifica_coppia)
    s++;
    cout<<”La condizione è verificata”<<endl;
    cout<<”La condizione non è verificata”<<endl;
    }
    return condition;
    }
    
  • Cos'è che non ti funziona?
    
    a[i+j][c]
    
    secondo me i + j supera di gran lunga N.
  • Ok quindi avrei dovuto inizializzare j ad i+1 ma cos'è poi che è sbagliato?
  • I + j supera N. l'indice delle colonne è errato. Se N = 4 i = 3 e j = 3 tu vai a leggere la colonna 6 che non esiste.
  • Ok questo l'ho capito
    ma per il resto il programma ossia la funzione è corretta?
  • Quello è l'errore del programma. Correggi quello e prova se va. Mettendolo a posto come si deve vedrai che il resto sarà OK.
Devi accedere o registrarti per scrivere nel forum
8 risposte