Triangolare inferiore

di il
13 risposte

Triangolare inferiore

Potrà sembrare stupido per molti, ma non capisco per quale motivo non mi torna l'esercizio...
devo farlo con la condizione di maggiore per forza, in ogni caso non mi torna..
#include <iostream>
#include <fstream>
using namespace std;

const int N=3;





void leggiMatrice(int mat[N][N]) {
cout << "inserisci matrice "<<N<<"x"<<N<<" "<<endl;
int i, j;
for (i = 0; i< N; i++) {
    for(j = 0; j < N; j++) {
        cin >> mat[i][j];
}
    }
return;
}

void stampaMatrice(int mat[N][N]) {

int i, j;
for (i = 0; i< N; i++) {
    for(j = 0; j < N; j++) {
        cout << mat[i][j] << "\t";
}
             cout << "\n";
    }
return;
}


bool maggiore (int b,int a) {
     return b>a;

}

bool triangolare (int m[N][N]) {
     int i,j;
     bool condizione;
     condizione=false;
     
     for(i=0;i<N-1;i++){
         for(j=1;j<N;j++){
             if( maggiore(j,i) && m[i][j]==0 ) {
                condizione=true;
                cout<<" "<<m[i][j]<<endl;
             }
             else {
                  condizione = false;
                  }
         }
     }
     return condizione;
}



int main () {
    int m[N][N];
    
    leggiMatrice(m);
    stampaMatrice(m);
    
    if(triangolare(m)==true) {
        cout<<"condizione verificata"<<endl;
    } else {
           cout<<"condizione non verificata"<<endl;
           
      }
      system("pause");
}
Edit skynet: inserimento tag code

13 Risposte

  • Re: Triangolare inferiore

    Che ne dici di inserire i tag code così possiamo comprendere meglio il tuo codice?
  • Re: Triangolare inferiore

    Da una rapida visita devi vedere quante volte la condizione divewnta true. Se diventa N volte la matrice è triangolare quindi rivedi la funzione triangolare
  • Re: Triangolare inferiore

    Il problema è che se inserisco una matrice simile : 1 0 2
    3 4 0
    3 4 5
    mi dice condizione verificata ... e non è così..
  • Re: Triangolare inferiore

    Perche non ascolti quello che ti si è stato detto
    
    #include <iostream>
    #include <fstream>
    using namespace std;
    
    const int N=3;
    
    
    
    
    
    void leggiMatrice(int mat[N][N]) {
    	cout << "inserisci matrice "<<N<<"x"<<N<<" "<<endl;
    	int i, j;
    	for (i = 0; i< N; i++) {
    		for(j = 0; j < N; j++) {
    			cin >> mat[i][j];
    		}
    	}
    	return;
    }
    
    void stampaMatrice(int mat[N][N]) {
    
    	int i, j;
    	for (i = 0; i< N; i++) {
    		for(j = 0; j < N; j++) {
    			cout << mat[i][j] << "\t";
    		}
    		cout << "\n";
    	}
    	return;
    }
    
    
    bool maggiore (int b,int a) {
    	return b>a;
    
    }
    
    bool triangolare (int m[N][N]) {
    	int i,j;
    	int counter = 0;
    
    	for(i=0;i<N-1;i++){
    		for(j=1;j<N;j++){
    			if( maggiore(j,i) && m[i][j]==0 ) {
    				counter++;
    			}
    		}
    	}
    	return (counter == N);
    }
    
    
    
    int main () {
    	int m[N][N];
    
    	leggiMatrice(m);
    	stampaMatrice(m);
    
    	if(triangolare(m)) {
    		cout<<"condizione verificata"<<endl;
    	} else {
    		cout<<"condizione non verificata"<<endl;
    
    	}
    	system("pause");
    }
    
  • Re: Triangolare inferiore

    Grazie ma un minimo di gentilezza!!! lo dicevo perchè non penso si possa fare solo così, ma calmo ripeto!
  • Re: Triangolare inferiore

    Chiedo scusa se sembro a volte irrascibile ma se uno ti chiede ti inserire i tag code e di rivedere una parte del codice almeno provarci no.Cmq in buona fede, ciao
  • Re: Triangolare inferiore

    Ma ti ho spiegato perchè non l'ho fatto... comunque ma se ora volessi indicare quale numero non è uguale a zero se la posizione non è verificata?
  • Re: Triangolare inferiore

    Bisogna decidere se lo vuoi fare tutto in un passaggio oppure creare una nuova funzione. Se la prima devi almeno creare un vettore dove piazzi gli indici per recuperarli dopo, se la seconda nella nuova funzione splitti l'if. Quindi se j > i ma m[j] non é uguale a zero stampi su schermo le posizioni.
  • Re: Triangolare inferiore

    Ho provato una cosa simile..ma non viene

    void vettore (int v[N][N]) {
         int i,j;
              
             for(i=0;i<N-1;i++) {
                 for(j=1;j<N;j++) {
                     if(maggiore(j,i) &&  v[N][N]!=0) {
                         cout<<"il numero di posizione:"<<i+1<<","<<j+1<<"non e' uguale a zero"<<endl;
                     }
                 }
             }
             return;
    }
  • Re: Triangolare inferiore

    Scusa se sono ripetitivo: Puoi mettere i tag code?
    L'if bisogna spezzarlo in due, e cioe valutare prima se j > i e poi dentro il corpo dell'if valutare se é diverso da zero.
  • Re: Triangolare inferiore

    Ah si scusa è che premevo risposta rapida e non c'era!comunque ora viene, anche se non capisco perchè in un if solo non va..
  • Re: Triangolare inferiore

    Forse va anche (non ho provato sul compilatore) ma non devi controllare v[N][N]!=0 ma V[j]!=0.
  • Re: Triangolare inferiore

    Sisi ho visto l'errore ,stavo scrivendo velocemente, l'ho corretto ma senza spezzare l'if non viene!
Devi accedere o registrarti per scrivere nel forum
13 risposte