Esercizio funzione d'esame

di il
1 risposte

Esercizio funzione d'esame

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.
esempio per
n=2 
e
k=5
se abbiamo in una colonna
3
1
2
4
0
6
allora restituisce true

se invece
3
1
2
2
6
restituisce false perchè le due coppie (3,2) e (3,2) hanno in comune il 3 quindi non sono distinte
se fosse
3
1
2
2
3
restituisce true

se invece
3
1
2
4
0
6
5
restituisce false perchè le coppie sono 3

ecco qui il programma incompleto
c'è un errore che non riesco a risolvere

#include<iostream>
using namespace std;
const int N=5;
bool verifica_coppia(int [N][N], int , int, int);
bool condizione(int [N][N], int, int);
int main()
{
    int k,n;
    int a[N][N]={{3,1,2,2,3},{3,1,2,2,3},{3,1,2,2,3},{3,1,2,2,3},{3,1,2,2,3}};
    cout<<"Inserisci un numero(somma degli elementi della coppia ";
    cin>>k;
    cout<<"Inserisci un numero(numero di elementi della coppia) ";
    cin>>n;

cout<<condizione(a,k,n);
return 0;
}

bool verifica_coppia(int y[N][N], int b,int numero,int c)
{
    int i,j;
    bool trovata=false;
    int cont=0;
    bool visitato[N];
    for(i=0;i<N;i++){
    visitato[i]=false;
    }
    i=0;
    while(i<N && !trovata)
    {
        if(!visitato[i])
        j=i+1;
        int b=0;
        while(j<N)
        {
            if(y[i][c]==y[j][c])
            {
                visitato[j]=true;
            }
            if((y[i][c]+y[j][c])==b)
            {
                visitato[j]=true;
                b=1;
            }
        j++;
        }
        cont+=b;
        i++;
        if(cont==numero)
        trovata=true;
    }
return trovata;
}
bool condizione(int x[N][N],int r,int val)
{
    int s=0;
    bool condition=true;
    while(s<N && condition)
    {
        condition=verifica_coppia(x,r,val,s);
        if(condition)
        {
            s++;
            cout<<"La condizione è verificata"<<endl;
        }
        else
        {
         cout<<"La condizione NON è verificata"<<endl;
        }
    }
return condition;
}

1 Risposte

Devi accedere o registrarti per scrivere nel forum
1 risposte