elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


  Mostrar Mensajes
Páginas: 1 2 [3] 4 5 6 7 8 9 10 11 12 13
21  Programación / Programación C/C++ / Operadores Matriz en: 9 Febrero 2018, 00:38 am
Hola, me podrían decir que tanto le hace falta al código para cumplir con estos requisitos:

Implemente la clase Matriz con las siguientes operaciones:

Suma de dos matrices de mxn
Resta de dos matrices de mxn
Producto de una matriz de mxn por una de nxk
Producto de una matriz de mxn por un escalar
Transpuesta de una matriz de mxn
Inversa de una matriz cuadrada de orden n
La implementación deberá incluir:

Asignación dinámica de memoria
Sobrecarga de operadores
+ (Suma de dos matrices)
- (Resta de dos matrices)
* (Producto de dos matrices y de matriz por escalar)
[] (Para el acceso a la entrada m[j] de la matriz)
<< (Imprimir una matriz)
>> (Captura de una matriz)
OJO: La transpuesta e inversa no deben usar operadores.

Producto por escalar conmutativo
Excepciones
Métodos constantes
Definición por default de matrices 1x1 o mx1. Evite la conversión implícita de enteros a matrices.



Este es el código:
matrix.h
Código:

#ifndef MATRIX_H
#define MATRIX_H
 
#include <iostream>
#include <time.h>
#include <stdlib.h>
 
using namespace std;
 
template <class T>
class Matrix {
    public:
        Matrix();
        Matrix(int, int);
        Matrix(const Matrix &m);
        ~Matrix();
 
        Matrix<T> operator+ (const Matrix &matrix_2);
        Matrix<T> operator- (const Matrix &matrix_2);
        Matrix<T> operator* (const Matrix &matrix_2);
 
        bool isSymmetric();
        bool isIdentity();
 
        T get_max();
        T get_min();
        T get_mode();
 
        void delete_matrix();
        void fill_by_user();
        void fill_random();
        void get_transpose();
        void multiply_by_scalar(T);
        void print_matrix();
        void swap_cols(int, int);
        void swap_rows(int, int);
 
    private:
        T m_ele;
        T m_max;
        T m_min;
        T m_mode;
        T **m_matrix;
 
        int m_dim_matrix;
        int m_cols;
        int m_rows;
};
 
#endif // MATRIX_H

matriz.cpp
Código:
#include "matrix.h"
 
// Constructor por defecto
template<typename T>
Matrix<T>::Matrix()
{
    m_rows = 4;
    m_cols = 4;
}
 
// Constructor copia
template<typename T>
Matrix<T>::Matrix(const Matrix &m)
{
    *this = m;
}
 
// Constructor por parámetro
template<typename T>
Matrix<T>::Matrix(int rows , int cols)
{
    m_cols = cols;
    m_rows = rows;
    m_matrix = new T*[m_rows];
 
    for (int i = 0; i < m_rows; i++) {
        m_matrix[i] = new T[m_cols];
    }
}
 
// Suma de matrices con sobrecarga de operadores
template<typename T>
Matrix<T> Matrix<T>::operator+ (const Matrix &matrix_2)
{
    Matrix matrix_result(m_rows, m_cols);
    for (int i = 0; i < m_rows; i++) {
        for (int j = 0; j < m_cols; j++) {
            matrix_result.m_matrix[i][j] = m_matrix[i][j] + matrix_2.m_matrix[i][j];
        }
    }
    return matrix_result;
}
 
// Resta de matrices con sobrecarga de operadores
template<typename T>
Matrix<T> Matrix<T>::operator- (const Matrix &matrix_2)
{
    Matrix matrix_result(m_rows, m_cols);
    for (int i = 0; i < m_rows; i++) {
        for (int j = 0; j < m_cols; j++) {
            matrix_result.m_matrix[i][j] = m_matrix[i][j] - matrix_2.m_matrix[i][j];
        }
    }
    return matrix_result;
}
 
// Multiplicación de matrices con sobrecarga de operadores
template<typename T>
Matrix<T> Matrix<T>::operator* (const Matrix &matrix_2)
{
    Matrix matrix_result(m_rows, matrix_2.m_cols);
    T total;
 
    for (int i = 0; i < m_rows; i++) {
        for (int j = 0; j < matrix_2.m_cols; j++) {
            for (int k = 0; k < m_cols; k++) {
                total += (m_matrix[i][k] * matrix_2.m_matrix[k][j]);
            }
            matrix_result.m_matrix[i][j] = total;
 
            // Limpiar el total sumado arriba
            total = 0;
        }
    }
    return matrix_result;
}
 
// Verificar si una Matriz es simétrica
template<typename T>
bool Matrix<T>::isSymmetric()
{
    if (m_rows != m_cols) {
        return false;
    }
 
    for (int i = 0; i < m_rows; i++) {
        for (int j = 0; j < m_cols; j++) {
            if (m_matrix[i][j] != m_matrix[j][i]) {
                return false;
            }
        }
    }
    return true;
}
 
// Verificar si una Matriz es identidad
template<typename T>
bool Matrix<T>::isIdentity()
{
    if (m_rows != m_cols) {
        return false;
    }
 
    for (int i = 0; i < m_rows; i++) {
        for (int j = 0; j < m_cols; j++) {
            if (i == j) {
                if (m_matrix[i][j] != 1)
                    return false;
            } else {
                if (m_matrix[i][j] != 0)
                    return false;
            }
        }
    }
    return true;
}
 
// Obtener el mayor de la Matriz
template<typename T>
T Matrix<T>::get_max()
{
    for (int i = 0; i < m_rows; i++) {
        for (int j = 0; j < m_cols; j++) {
            if (m_matrix[i][j] > m_max) {
                m_max = m_matrix[i][j];
            }
        }
    }
    return m_max;
}
 
// Obtener el menor de la Matriz
template<typename T>
T Matrix<T>::get_min()
{
    for (int i = 0; i < m_rows; i++) {
        for (int j = 0; j < m_cols; j++) {
            if (m_matrix[i][j] < m_min) {
                m_min = m_matrix[i][j];
            }
        }
    }
    return m_min;
}
 
// Obtener la moda de la Matriz
template<typename T>
T Matrix<T>::get_mode()
{
    // Creo una Matrix auxiliar
    Matrix matrix_aux(m_rows, m_cols);
 
    // Lleno la Matriz con ceros
    for (int i = 0; i < m_rows; i++) {
        for (int j = 0; j < m_cols; j++) {
            matrix_aux.m_matrix[i][j] = 0;
        }
    }
 
    m_dim_matrix = m_rows * m_cols;
 
    // Para retener una fila n veces
    int y = 0;
 
    // Para retener una columna n veces
    int z = 0;
 
    // Empiezo a comparar cada elemento n veces
    for (int x = 0; x < m_dim_matrix; x++) {
        for (int i = 0; i < m_rows; i++) {
            for (int j = 0; j < m_cols; j++) {
                if (m_matrix[y][z] == m_matrix[i][j]) {
                    matrix_aux.m_matrix[i][j]++;
                }
            }
        }
 
        // Pasar a la siguiente columna despues de n comparaciones
        z++;
 
        /* Empiezo a comparar con la siguiente fila
           despues empiezo nuevamente en la 1era columna
           Y luego paso a la siguiente fila */
        if (z == m_cols) {
            z = 0;
            y++;
        }
    }
 
    // Obtengo el mayor valor de la Matriz
    m_max = matrix_aux.get_max();
 
    // Si ningun valor se ha repetido más de una vez, entonces no hay moda
    if (m_max == 1) {
        return -1;
    } else {
        for (int i = 0; i < m_rows; i++) {
            for (int j = 0; j < m_cols; j++) {
                if (matrix_aux.m_matrix[i][j] == m_max) {
                    m_mode = m_matrix[i][j];
                }
            }
        }
    }
 
    return m_mode;
}
 
template<typename T>
void Matrix<T>::delete_matrix()
{
    for (int i = 0; i < m_rows; i++) {
        delete[] m_matrix[i];
    }
    delete[] m_matrix;
}
 
// Llenar una Matriz desde teclado
template<typename T>
void Matrix<T>::fill_by_user()
{
    for (int i = 0; i < m_rows; i++) {
        cout << "Fila " << i + 1 << endl;
        for (int j = 0; j < m_cols; j++) {
            cout << "Ingresa el elemento " << j + 1 << endl;
            cin >> m_ele;
            m_matrix[i][j] = m_ele;
        }
        cout << endl;
    }
    m_max = m_matrix[0][0];
    m_min = m_matrix[0][0];
}
 
// Llenar aleatoriamente una Matriz
template<typename T>
void Matrix<T>::fill_random()
{
    for (int i = 0; i < m_rows; i++) {
        for (int j = 0; j < m_cols; j++) {
            m_matrix[i][j] = rand() % 30;
        }
    }
 
    m_max = m_matrix[0][0];
    m_min = m_matrix[0][0];
    srand(time(NULL));
}
 
// Obtener la transpuesta de una Matriz
template<typename T>
void Matrix<T>::get_transpose()
{
    Matrix matrix_result(m_cols, m_rows);
 
    for (int i = 0; i < m_cols; i++) {
        for (int j = 0; j < m_rows; j++) {
            matrix_result.m_matrix[i][j]= m_matrix[j][i];
        }
    }
    matrix_result.print_matrix();
}
 
// Multiplicar a una Matriz por un escalar
template<typename T>
void Matrix<T>::multiply_by_scalar(T scalar)
{
    for (int i = 0; i < m_rows; i++) {
        for (int j = 0; j < m_cols; j++) {
            m_matrix[i][j] = m_matrix[i][j] * scalar;
        }
    }
    cout << "Se multiplicó a la Matriz por el escalar " << scalar << endl;
}
 
// Imprimir Matriz
template<typename T>
void Matrix<T>::print_matrix()
{
    for (int i = 0; i < m_rows; i++) {
        for (int j = 0; j < m_cols; j++) {
            cout << m_matrix[i][j] << " ";
        }
        cout << endl << endl;
    }
    cout << endl << endl;
}
 
// Intercambiar dos columnas en una Matriz
template<typename T>
void Matrix<T>::swap_cols(int col_1, int col_2)
{
    if (col_1 > m_cols || col_2 > m_cols) {
        cout << "Esa columna se encuentra fuera de rango." << endl;
    } else {
        T temp;
        col_1--;
        col_2--;
 
      for (int i = 0; i < m_rows; i++) {
          temp = m_matrix[i][col_1];
          m_matrix[i][col_1] = m_matrix[i][col_2];
          m_matrix[i][col_2] = temp;
      }
      cout << "Se intercambiaron las columnas " << col_1 + 1 << " y " << col_2 + 1 << endl;
    }
}
 
// Intercambiar dos filas en una Matriz
template<typename T>
void Matrix<T>::swap_rows(int row_1, int row_2)
{
    if (row_1 > m_rows || row_2 > m_rows) {
        cout << "Esa fila se encuentra fuera de rango." << endl;
    } else {
        T temp;
        row_1--;
        row_2--;
 
        for (int i = 0; i < m_cols; i++) {
            temp = m_matrix[row_1][i];
            m_matrix[row_1][i] =  m_matrix[row_2][i];
            m_matrix[row_2][i] = temp;
        }
        cout << "Se intercambiaron las filas: " << row_1 + 1 << " y " << row_2 + 1 << endl;
    }
}
 
template<typename T>
Matrix<T>::~Matrix() {}

main.cpp:
Código:
#include <iostream>
#include "matrix.h"
#include "matrix.cpp"
 
using namespace std;
 
int main()
{
    // Para no generar los mismos números aleatorios
    srand(time(NULL));
 
    int n_rows;
    int n_cols;
 
    int col_1;
    int col_2;
    int row_1;
    int row_2;
    int scalar;
 
    cout << "Ingresa nro de filas: " << endl;
    cin >> n_rows;
    cout << "Ingresa nro de columnas: " << endl;
    cin >> n_cols;
    cout << endl;
 
    Matrix<int> a(n_rows, n_cols);
    Matrix<int> b(n_rows, n_cols);
 
    // Matriz para almacenar el resultado de las operaciones
    Matrix<int> c(n_rows, n_cols);
 
    a.fill_random();
    b.fill_random();
 
    cout << "********** Operaciones básicas con la Matriz A **********" << endl;
    cout << "Matriz A " << endl;
    a.print_matrix();
 
    cout << "El mayor de la Matriz es: " << a.get_max() << endl;
    cout << "El menor de la Matriz es: " << a.get_min() << endl;
    cout << "La moda de la Matrix es: " << a.get_mode() << endl;
    cout << (a.isSymmetric() ? "" : "No") << " Es simétrica." << endl;
    cout << (a.isIdentity() ? "" : "No") << " Es identidad." << endl;
    cout << endl;
 
    cout << "Ingresa el escalar: " << endl;
    cin >> scalar;
    a.multiply_by_scalar(scalar);
    a.print_matrix();
 
    cout << "Intercambio: Ingresa 2 columnas del 1 al " << n_cols << endl;
    cout << "Columna 1: " << endl;
    cin >> col_1;
    cout << "Columna 2: " << endl;
    cin >> col_2;
    a.swap_cols(col_1, col_2);
    a.print_matrix();
 
    cout << "Intercambio: Ingresa 2 filas del 1 al " << n_rows << endl;
    cout << "Fila 1: " << endl;
    cin >> row_1;
    cout << "Fila 2: " << endl;
    cin >> row_2;
    a.swap_rows(row_1, row_2);
    a.print_matrix();
 
    cout << "Transpuesta de A " << endl;
    a.get_transpose();
 
    cout << "********** Operaciones con matrices **********" << endl;
    cout << "Matriz A " << endl;
    a.print_matrix();
 
    cout << "Matriz B " << endl;
    b.print_matrix();
 
    cout << "Matriz A + B " << endl;
    c = a + b;
    c.print_matrix();
 
    cout << "Matriz A - B " << endl;
    c = a - b;
    c.print_matrix();
 
    cout << "Matriz A * B " << endl;
    c = a * b;
    c.print_matrix();
 
    a.delete_matrix();
    b.delete_matrix();
    c.delete_matrix();
 
    return 0;
}

Gracias de antemano, saludos !!
22  Programación / Programación C/C++ / Cuándo es mejor definir una función como amiga de clase? en: 31 Enero 2018, 23:43 pm
Es una duda que tengo en programación C++, en que casos es mejor definir una función como amiga de la clase??

Un saludo.
23  Media / Multimedia / No puedo escuchar audio de libro de inglés versión web en: 30 Enero 2018, 05:13 am
Hola, buenas. Estoy trabajando con el libro de inglés "American English File" (Second Edition) de Oxford university press en versión Web. Al momento de querer escuchar los audios me aparece un mensaje de "Error to load audio" , cuál puede ser el problema?, ya miré que el cable estuviese bien conectado e intenté diversas maneras de hacerlo escuchar siguiendo tutoriales de youtube como este:
https://www.youtube.com/watch?v=ahXxW1C4bPE

y este:
https://www.youtube.com/watch?v=DXgPvZixTFs

pero no logro solucionarlo, alguna sugerencia?, un saludo.
24  Sistemas Operativos / Windows / Re: No lee mi USB booteable en: 30 Enero 2018, 05:11 am
Tienes que desactivar el secure boot, y activar el legacy support. Eso o sino tendrás que crear el pendrive para BIOS uefi usando por ejemplo el rufus en la opción de 'Tipo de partición GPT para computadora UEFI' como se aprecia en la imagen:



Saludos...

Songoku


Me ha servido, muchas gracias !!
25  Sistemas Operativos / Windows / No lee mi USB booteable en: 27 Enero 2018, 01:02 am
Hola, buenas. Estoy intentando formatear mi laptop, seguí los pasos tal cual:

1) Descargué el ISO de Windows 10 e hice mi memoria booteable:


2) Conecto la USB, enciendo la Lap, ingreso a la BIOS con F10:


3) Configuro de esta forma para que lea primero la USB y arranque desde ahí:

Nota: Estaba seleccionada la opción de la memoria por eso se mira en blanco, casi no se nota pero es la primer opción.

4) Ingreso al Boot Option con F9 pero no me aparece la opción de arranque de la USB:


Cuál puede ser el error?, gracias de antemano.

Saludos.
26  Programación / PHP / No puedo conectarme al servidor desde Filezilla en: 11 Noviembre 2017, 16:01 pm
Hola, buenas. He comprado un dominio para tener un sistema siempre en línea pero estoy teniendo problemas para poder subirlo al servidor, sigo los pasos que la página me indica pasando todos los documentos a la carpeta "public_html" , creando la bd y asociando pero me aparece "Error al Conectar"

Me conecto mediante FileZilla y subo los documentos del sistema a public_html:


Creo la bd:


Así lo configuro:


Pero me marca error por esto:


Y cuando intento ingresar aparece así el inicio:



Cómo Podría solucionarlo?, alguna sugerencia??, gracias de antemano.

Saludos.

MOD: Imagenes adaptadas a lo permitido (ya deberías saber ésto)
27  Programación / PHP / No puedo agregar clientes nuevos en: 21 Octubre 2017, 02:01 am
Hola, buenas. Estoy intentando agregar nuevos usuarios o clientes en un sistema de inventario pero cuando los doy de alta no me aparecen en la lista.

Aquí se mira como creo al cliente:


Y aquí se muestra como me informa que ha sido creado:


Pero cuando entro a la lista de clientes no aparece:


Yo agregué campos extra, como cuenta, horas de pago, etc. De seguro eso es, este es el código de los registros que venía en el sistema:
https://pastebin.com/WQw9H5h8

Y así lo edité y fue cuando ya no aparecieron en la lista los usuarios que iba creando:
https://pastebin.com/JmzMTf4d

O tendría que cambiar algo más en la bd?


Espero alguien pueda apoyarme o decirme cuál puede ser el error, gracias de antemano !!

Saludos.
28  Programación / PHP / Re: Cambiar la imagen de pendiendo la seleccionada en: 26 Agosto 2017, 18:43 pm
El js lo debo incluir ahí mismo debajo del la imagen del color rojo? O como son varios productos debe ser después de cada"if($('.producto'')=='producto') "?
29  Programación / PHP / Re: Cambiar la imagen de pendiendo la seleccionada en: 10 Agosto 2017, 01:09 am
Hola, gracias por responder. El problema es que son varios los productos que se seleccionan, y se tiene que hacer para cada uno de pendiendo cuál está seleccionado, este es: https://pastebin.com/kSJb4W76
cómo podría aplicarlo con distintos productos?




Intenté hacerlo, quedó así:
https://pastebin.com/MgzWEi45

Pero me marca error en la línea 48, alguna sugerencia?



Exactamente esto quiero: https://jsfiddle.net/3bL3y03g/2/

Quiero juntarlo a este: https://pastebin.com/q1CLJQfp que vendría siendo este: http://cotizadorweb.com.mx/ para cuando se elija un producto aparezca debajo de su imagen el color, pero no puedo juntarlos..


Mod: No hacer triple post. Existe el boton "Modificar"
30  Programación / PHP / Cambiar la imagen de pendiendo la seleccionada en: 5 Agosto 2017, 22:31 pm
Hola, buenas tardes. Tengo este sistema de cotización que encontré en internet:
http://cotizadorweb.com.mx/

Pero me gustaría saber cómo hago para abajo de la imagen del producto aparezcan varios colores (en imagen) y cuando se seleccione uno, la imagen de arriba cambie con el color seleccionado:



Algo así que si pone alfombra y selecciona el color rojo, cambie la imagen con una alfombra roja, y así para el resto, algo como lo que se hace aquí: http://www.persianasfarz.com/producto.php?prodId=16&cate=Enrollable

Supongo que es como esto:
Código:
 function sel_estilo(value) //lo que pasa cuando se selecciona un estilo
  {
    $('#rango').val('').change();
    var select=document.getElementById("rango");
    var op=select.getElementsByTagName("option");

    if(value==''){
      for (var i = 1; i < op.length; i++) op[i].style.display="none";
    }else if(value=='Trafico'){
      for (var i = 1; i < 3; i++) op[i].style.display="block";
      for (var i = 3; i < op.length; i++) op[i].style.display="none";
    }else if(value=='Residencial'){
      $("#msg-pedido").modal({
        modal: true,
        buttons: {
            Ok: function() {
                $( this ).modal( "close" );
            }
        }
      });
      for (var i = 1; i < 3; i++) op[i].style.display="none";
      for (var i = 3; i < 10; i++) op[i].style.display="block";
      for (var i = 10; i < op.length; i++) op[i].style.display="none";
    
    }else if(value=='7mm'){
      for (var i = 1; i < 12; i++) op[i].style.display="none";
      for (var i = 12; i < 14; i++) op[i].style.display="block";
      for (var i = 14; i < op.length; i++) op[i].style.display="none";
    }else if(value=='8mm'){
      for (var i = 1; i < 14; i++) op[i].style.display="none";
      for (var i = 14; i < 16; i++) op[i].style.display="block";
      for (var i = 16; i < op.length; i++) op[i].style.display="none";
    }else if(value=='10mm'){
      for (var i = 1; i < 16; i++) op[i].style.display="none";
      for (var i = 16; i < 18; i++) op[i].style.display="block";
      for (var i = 18; i < op.length; i++) op[i].style.display="none";

    }else if(value=='12mm'){
      for (var i = 1; i < op.length; i++) op[i].style.display="none"; //??????

    }else if(value=='Rollet'){

    }else if(value=='Wollet'){

    }else if(value=='Panellet'){

    }else if(value=='Aluminix'){

    }
  }

Pero no se como hacer para aplicarlo ahora con colores y hacer que vaya cambiando la imagen...

Un saludo !!.
Páginas: 1 2 [3] 4 5 6 7 8 9 10 11 12 13
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines