Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: romybe en 20 Julio 2015, 20:21 PM

Título: [Consulta] Matriz triangular inferior y superior en C++
Publicado por: romybe en 20 Julio 2015, 20:21 PM
Hola gente! Estoy haciendo un ejercicio que me pide determinar si una matriz cuadrada es triangular inferior, superior o ninguna de las dos. Realicé el siguiente código en C++:

#include <stdio.h>
#include <iostream>

int leer_matriz(int M[][100],int &cf);
int definir_triangular(int M[][100],int cf);
int imprimir(int M[][100],int cf);

main ()
{
    int M[100][100];
    int cant_filas;
    leer_matriz(M,cant_filas);
    definir_triangular(M,cant_filas);
    imprimir(M,cant_filas);
    printf ("\n");
    system ("pause");
}

int leer_matriz(int M[][100],int &cf)
{
   do
   {
                   printf ("Ingrese la cantidad de filas de la matriz: ");
                   scanf ("%d", &cf);
                   printf ("\n");
   } while (cf>100);
   for (int i=0;i<cf;i++)
   {
       for (int j=0;j<cf;j++)
       {
           printf ("Ingrese el elemento %d %d de la matriz: ", i, j);
           scanf ("%d", &M[i][j]);
           printf ("\n");
       }
   }
}

int definir_triangular(int M[][100],int cf)
{
   int trian_inf=0, trian_sup=0;
   int i=1, j=0;
   while (i<cf)
   {
         while ((j<i)||(trian_inf=0))
         {
               if (M[i][j]==0)
                  j++;
               else
                   trian_inf=1;
         }
         i++;
   }
   int f=0, c=1;
   while (f<cf)
   {
         while ((c<cf)||(trian_sup=0))
         {
               if (M[f][c]==0)
                  c++;
               else
                   trian_sup=1;
         }
         f++;
   }
   if (trian_inf==0)
      printf ("La matriz es triangular inferior.\n\n");
   if (trian_sup==0)
      printf ("La matriz es triangular superior.\n\n");
   if ((trian_inf==1)&&(trian_sup==1))
      printf ("La matriz no es triangular inferior ni superior.\n\n");
}

int imprimir(int M[][100],int cf)
{
   for (int i=0;i<cf;i++)
   {
       for (int j=0;j<cf;j++)
       {
           printf ("  %d  ", M[i][j]);
       }
       printf ("\n");
   }
}

El problema es que no me está haciendo la parte de verificar si es triangular pero no veo el error. Espero que me puedan ayudar.
Muchas gracias!
Título: Re: [Consulta] Matriz triangular inferior y superior en C++
Publicado por: romybe en 20 Julio 2015, 21:21 PM
Ya lo solucioné por si a alguno le sirve dejo el código.

Código (cpp) [Seleccionar]
#include <stdio.h>
#include <iostream>

int leer_matriz(int M[][100],int &cf);
int definir_triangular(int M[][100],int cf);
int imprimir(int M[][100],int cf);

main ()
{
     int M[100][100];
     int cant_filas;
     
     leer_matriz(M,cant_filas);
     definir_triangular(M,cant_filas);
     imprimir(M,cant_filas);
     
     printf ("\n");
     system ("pause");
}

int leer_matriz(int M[][100],int &cf)
{
    do
    {
                    printf ("Ingrese la cantidad de filas de la matriz: ");
                    scanf ("%d", &cf);
                    printf ("\n");
    } while (cf>100);

    for (int i=0;i<cf;i++)
    {
        for (int j=0;j<cf;j++)
        {
            printf ("Ingrese el elemento %d %d de la matriz: ", i, j);
            scanf ("%d", &M[i][j]);
            printf ("\n");
        }
    }
}

int definir_triangular(int M[][100],int cf)
{
    int trian_inf=0, trian_sup=0;
    int i=1;
   
    while (i<cf)
    {
          int j=0;
         
          do
          {
                if (M[i][j]==0)
                   j++;
                else
                    trian_inf=1;
          } while ((j<i)&&(trian_inf==0));

          i++;
    }
   
    int f=0, c=1;
   
    while (f<cf)
    {
         
          do
          {
                if (M[f][c]==0)
                   c++;
                else
                    trian_sup=1;
          } while ((c<cf)&&(trian_sup==0));
         
          f++;
    }
   
    if (trian_inf==0)
       printf ("La matriz es triangular inferior.\n\n");
       
    if (trian_sup==0)
       printf ("La matriz es triangular superior.\n\n");
       
    if ((trian_inf==1)&&(trian_sup==1))
       printf ("La matriz no es triangular inferior ni superior.\n\n");
}

int imprimir(int M[][100],int cf)
{
    for (int i=0;i<cf;i++)
    {
        for (int j=0;j<cf;j++)
        {
            printf ("  %d  ", M[i][j]);
        }
       
        printf ("\n");
    }
}