public void setEntrada(int ren, int col, double valor)
      throws IndexOutOfBoundsException {
      if (indiceValido(ren, col)) {
         switch (tipocod) {
         case 1:
            mat[((col * (col + 1)) / 2) + ren] = valor; // sd

            break;

         case 2:
            mat[((col * (col - 1)) / 2) + ren] = valor; // sn

            break;

         case 3:
            mat[((ren * (ren + 1)) / 2) + col] = valor; // id

            break;

         case 4:
            mat[((ren * (ren - 1)) / 2) + col] = valor; // in

            break;

         case 5:

            if (ren >= col) { // sim
               mat[((ren * (ren + 1)) / 2) + col] = valor;
            } else {
               mat[((col * (col + 1)) / 2) + ren] = valor;
            }

            break;

         default:
            mat[(ren * columnas) + col] = valor; // reg
         }
      } else {
         throw new IndexOutOfBoundsException("Índice inválido");
      }
   }