Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    12

    [C++]-matrice unitaria (ricorsivo)

    Devo scrivere un programma ricorsivo che restituisca true se la matrice assegnata è unitaria, false altrimenti. Non ho capito cosa si deve mettere nel main per far stampare il risultato dopo che nella funzione ho fatto return false oppure return true...

    codice:
    #include<iostream>
    #include<cstdlib>
    
    using namespace std;
    
    bool unitaria(int[][3], int, int, int);
    
    main()
    {
        int mat[][3]={1,0,0,0,1,0,0,0,1};
        int i=0;
        int j=0;
        int n=3;
        
        unitaria(mat,i,j,n);
       
        ?????(come faccio per far stampare 0 oppure 1?)
        system ("pause");
    }
    
    
    bool unitaria(int mat[][3], int i, int j, int n)
    {
         if (i>n)
             return true;
    
         else if (((i==j) && (mat[i][j]!=1)) || ((i!=j) && (mat[i][j]!=0)))    
            return false;
             
         else if (j>n)
             unitaria (mat, i+1,0,n); 
    
         else 
             unitaria (mat,i,j+1,n);         
    }
    Grazie a tutti. Ciao ciao...

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254

    Re: [C++]-matrice unitaria (ricorsivo)

    Originariamente inviato da Ale777
    Non ho capito cosa si deve mettere nel main per far stampare il risultato dopo che nella funzione ho fatto return false oppure return true...
    Testi il valore di ritorno della funzione con un semplice if e se true stampi qualcosa, else stampi qualcos'altro. Non capisco la difficoltà.

    E tra l'altro, almeno ad occhio, la funzione unitaria() non mi sembra corretta, perché chiami, è vero, la funzione in modo ricorsivo ma il suo valore di ritorno non lo usi e la funzione quindi non ha un return in quei due casi.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    la funzione corretta dovrebbe essere così:

    codice:
    bool unitaria(int mat[][3], int i, int j, int n)
    {
         if (i>n)
             return true;
    
         else if (((i==j) && (mat[i][j]!=1)) || ((i!=j) && (mat[i][j]!=0)))    
            return false;
             
         else if (j>n)
            return unitaria (mat, i+1,0,n); 
    
         else 
            return unitaria (mat,i,j+1,n);         
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.