Funzione per vedere se una matrice è triangolare superiore

di il
5 risposte

Funzione per vedere se una matrice è triangolare superiore

Scrivere una funzione C++ che, data una
matrice quadrata NxN di interi a restituisce 1 se la matrice è
triangolare superiore e 0 altrimenti.

non riesco a controllare se il programma è esatto o meno
cioè dalla funzione void che ho creato come faccio a far restituire 0 o 1 visto che la funzione void non restituisce alcun valore
vi prego datemi una mano
ecco il mio programma

#include<iostream>
using namespace std;
const int N=4;
void triang_sup(int [N][N]);
int main()
{
    int x[N][N]={{1,2,3,4},{0,5,67,90},{0,0,4,67},{0,0,0,1}};
    triang_sup(x);
    return 1;
}

void triang_sup(int a[N][N])
{
    int i,j;
    bool condizione=false;
    i=0;
    while(i<N && !condizione)
    {
        j=0;
        while(j<N && j<i && !condizione)
        {
            if(a[i][j]==0)
            condizione=true;
            j++;
        }
        i++;
    }
}

5 Risposte

  • Re: Funzione per vedere se una matrice è triangolare superiore

    Ovviamente non puoi usare una funzione che ritorna void, ma devi usare una funzione che ritorna int:
    int triang_sup(int a[N][N])
    in modo da ritornare con 1 quando la matrice è triangolare superiore e con 0 se non lo è.
    Inoltre nel tuo programma è inutile la condizione j<N che poni nel secondo ciclo while. Cambiando la variabile condizione da bool a int, il programma corretto risulta essere:
    #include<iostream>
    using namespace std;
    const int N=4;
    int triang_sup(int [N][N]);
    int main()
    {
        int x[N][N]={{1,2,3,4},{0,5,67,90},{0,0,4,67},{0,0,0,1}};
        int a;
        a=triang_sup(x);
        if(a==0)
        cout<< "La matrice non e' triangolare superiore \n";
        if(a==1)
        cout<< "La matrice e' triangolare superiore \n";
        cin.get();
        return 0;
    }
    
    int triang_sup(int a[N][N])
    {
        int i=1,j;
        int condizione=1;
        while(i<N && condizione==1)
        {
            j=0;
            while(j<i && condizione==1)
            {
              if(a[i][j]!=0)
              condizione=0;
              j++;
            }
            i++;
          }
        return condizione;
      }
    
  • Re: Funzione per vedere se una matrice è triangolare superiore

    Siamo in C++, esistono i bool dal 1998.
    
    bool triang_sup(int a[N][N])
    {
        int i=1,j;
        bool condizione=true;
        while(i<N && condizione)
        {
            j=0;
            while(j<i && condizione)
            {
              if(a[i][j]!=0)
              condizione=false;
              j++;
            }
            i++;
          }
        return condizione;
      }
    
    
        if(triang_sup(x))
        cout<< "La matrice non e' triangolare superiore \n";
        else
        cout<< "La matrice e' triangolare superiore \n";
    
  • Re: Funzione per vedere se una matrice è triangolare superiore

    Il programma poteva anche essere risolto con una funzione che ritorna bool, ma lui nell' esercizio dice che deve ritornare 1 oppure 0, per questo ho utilizzato gli int. Anche se forse intendeva 1 per true e 0 per false.

    Matteo
  • Re: Funzione per vedere se una matrice è triangolare superiore

    Non è colpa tua e neanche del autore del thread. E' colpa del prof che non sa cosa sta insegnando se C oppure C++.
  • Re: Funzione per vedere se una matrice è triangolare superiore

    Vi ringrazio a entrambi
Devi accedere o registrarti per scrivere nel forum
5 risposte