Index: mainwindow.C
===================================================================
--- mainwindow.C	(revision f6d90edf48c6ff1b292e9d9971c74c355713fb2b)
+++ mainwindow.C	(revision 9b2ca78462c2459ae871349f345364a665f46da8)
@@ -403,4 +403,9 @@
     Descomposicion.addAction(&actionCortoPlazo);
 
+    actionCompararDescomposicion.setText("&Comparar Resultados");
+    actionCompararDescomposicion.setDisabled(true);
+
+    Descomposicion.addAction(&actionCompararDescomposicion);
+
     menuTools.addMenu(&Descomposicion);
 
@@ -936,5 +941,5 @@
     : actionNewProject(this),actionLoadMatrix(this), actionExportMatrix(this), actionQuit(this),actionCH(this), actionCV(this),
       actionVariableExogena(this),actionEncadenamiento(this),
-      actionDescomposicion(this), actionCortoPlazo(this),
+      actionDescomposicion(this), actionCortoPlazo(this), actionCompararDescomposicion(this),
       actionModeloClasico(this), actionCompararResultados(this),actionModeloNoClasico(this),actionCompararResultadosMNC(this),
       actionPHClasicoIncidencia100(this),actionPHCIncidenciaCuenta(this),actionPHCIncidenciaComponente(this),
@@ -977,4 +982,5 @@
     cantidadPNHincidenciaiComponente = 1;
     cantidadImpactos = 1;
+    comparacionImpactos = 1;
 
     initGUI();
@@ -4157,5 +4163,5 @@
     {
         formCompararResultados = new FormCompararResultados(this);
-        QStringList nombres = obtenerNombreResultadoEscenario();
+        QStringList nombres = obtenerNombreResultadoEscenario(cantidadEscenarios,"Resultado C");
         formCompararResultados->ui->resultadosListWidget->addItems(nombres);
         connect(formCompararResultados->ui->buttonVerResultados,SIGNAL(clicked()),this,SLOT(slotVerResultado()));
@@ -4164,7 +4170,10 @@
     else
     {
+        disconnect(formCompararResultados->ui->buttonVerResultados,SIGNAL(clicked()),this,SLOT(slotVerResultado()));
+        disconnect(formCompararResultados->ui->buttonVerResultados,SIGNAL(clicked()),this,SLOT(slotVerResultadoDescomposicion()));
         formCompararResultados->ui->resultadosListWidget->clear();
-        QStringList nombres = obtenerNombreResultadoEscenario();
+        QStringList nombres = obtenerNombreResultadoEscenario(cantidadEscenarios,"Resultado C");
         formCompararResultados->ui->resultadosListWidget->addItems(nombres);
+        connect(formCompararResultados->ui->buttonVerResultados,SIGNAL(clicked()),this,SLOT(slotVerResultado()));
     }
     formCompararResultados->show();
@@ -4175,12 +4184,14 @@
     @date 02/10/2015
     @author Rodrigo Boet
+    @param <cantidad> Recibe la cantidad de elementos
+    @param <nombre> Recibe el nombre de la pestaña que buscará
     @return <nombres> retorna los nombres de los resultados del escenario
 */
-QStringList MainWindow::obtenerNombreResultadoEscenario()
+QStringList MainWindow::obtenerNombreResultadoEscenario(int cantidad, QString nombre)
 {
     QStringList nombres;
-    for(int i=1;i<cantidadEscenarios;i++)
-    {
-        int indice = ObtenerIndice(QString("Resultado C %1").arg(i));
+    for(int i=1;i<cantidad;i++)
+    {
+        int indice = ObtenerIndice(QString(nombre+" %1").arg(i));
         nombres.append(tabWidget->tabText(indice));
     }
@@ -6514,5 +6525,5 @@
 void MainWindow::finalizarImpacto()
 {
-    QMessageBox msBox(QMessageBox::Question,"Finalizar Escenario","¿Está seguro que desea finalizar\ este escenario?",
+    QMessageBox msBox(QMessageBox::Question,"Finalizar Escenario","¿Está seguro que desea finalizar\neste escenario?",
                       QMessageBox::Yes | QMessageBox::No,this);
     msBox.setButtonText(QMessageBox::Yes,"&Si");
@@ -6544,9 +6555,9 @@
         actionCortoPlazo.setEnabled(true);
         formcortoplazo->ui->listSeleccionado->clear();
-        /*if(cantidadEscenarios>2)
-        {
-            actionCompararResultados.setEnabled(true);
-            connect(&actionCompararResultados,SIGNAL(triggered()),this,SLOT(slotCompararResultados()));
-        }*/
+        if(cantidadImpactos>2)
+        {
+            actionCompararDescomposicion.setEnabled(true);
+            connect(&actionCompararDescomposicion,SIGNAL(triggered()),this,SLOT(slotFormResultadosDescomposicion()));
+        }
     }
 }
@@ -6588,4 +6599,82 @@
         }
     }
-    qDebug()<<totalCuentasEncadenamiento;
-}
+}
+
+/**
+    @brief Función para abrir el formulario de comparar resultados
+    @date 14/11/2016
+    @author Rodrigo Boet
+*/
+void MainWindow::slotFormResultadosDescomposicion()
+{
+    if(opcionFormCompararResultados == 0)
+    {
+        formCompararResultados = new FormCompararResultados(this);
+        QStringList nombres = obtenerNombreResultadoEscenario(cantidadImpactos,"Resultado CP");
+        formCompararResultados->ui->resultadosListWidget->addItems(nombres);
+        connect(formCompararResultados->ui->buttonVerResultados,SIGNAL(clicked()),this,SLOT(slotVerResultadoDescomposicion()));
+        opcionFormCompararResultados ++;
+    }
+    else
+    {
+        disconnect(formCompararResultados->ui->buttonVerResultados,SIGNAL(clicked()),this,SLOT(slotVerResultado()));
+        disconnect(formCompararResultados->ui->buttonVerResultados,SIGNAL(clicked()),this,SLOT(slotVerResultadoDescomposicion()));
+        formCompararResultados->ui->resultadosListWidget->clear();
+        QStringList nombres = obtenerNombreResultadoEscenario(cantidadImpactos,"Resultado CP");
+        formCompararResultados->ui->resultadosListWidget->addItems(nombres);
+        connect(formCompararResultados->ui->buttonVerResultados,SIGNAL(clicked()),this,SLOT(slotVerResultadoDescomposicion()));
+    }
+    formCompararResultados->show();
+}
+
+/**
+    @brief Función para comparar los resultados de la descomposición de multiplicadores
+    @date 14/11/2016
+    @author Rodrigo Boet
+*/
+void MainWindow::slotVerResultadoDescomposicion()
+{
+    QTableWidget *tablaComparar = new QTableWidget;
+    tablaComparar->setObjectName(QString("TablaCompararResultadoImpacto %1").arg(comparacionImpactos));
+    QTableWidget *endogena = findChild<QTableWidget *>("MatrizEndogenaEndogena");
+    int contador = endogena->rowCount()-2;
+    crearTablaVaciaEncadenamiento(contador,tablaComparar,2);
+    cuentacomponentesResultado(tablaComparar,contador);
+    int contar=formCompararResultados->ui->resultadosListWidget->selectedItems().count();
+    for(int i=0;i<contar;i++)
+    {
+        QString text = formCompararResultados->ui->resultadosListWidget->selectedItems().value(i)->text();
+        QStringList number = text.split(" ");
+        text = number.at(2);
+        QTableWidget *tw = findChild<QTableWidget *>(QString("TablaResultadoImpactos %1").arg(text));
+        crearTablaComparar(tablaComparar,tw);
+    }
+    //Se agrega el nombre de los resultados
+    tablaComparar->insertRow(0);
+    QFont font;
+    font.setBold(true);
+    int j = 0;
+    for(int i=0;i<contar;i++)
+    {
+        QString text = formCompararResultados->ui->resultadosListWidget->selectedItems().value(i)->text();
+        QTableWidgetItem *item1 = new QTableWidgetItem(text);
+        item1->setFlags(item1->flags() ^ Qt::ItemIsEditable);
+        item1->setFont(font);
+        item1->setTextAlignment(Qt::AlignCenter);
+        QTableWidgetItem *item2 = new QTableWidgetItem(text);
+        item2->setFlags(item2->flags() ^ Qt::ItemIsEditable);
+        item2->setFont(font);
+        item2->setTextAlignment(Qt::AlignCenter);
+        tablaComparar->setItem(0,2+j,item1);
+        j++;
+        tablaComparar->setItem(0,2+j,item2);
+        tablaComparar->setSpan(0,(2+j)-1,1,2);
+        j++;
+    }
+    ItemsNoEditable(tablaComparar,0,2);
+
+    createTab(QString("Comparacion Impactos %1").arg(comparacionImpactos),tablaComparar,true);
+
+    formCompararResultados->close();
+    comparacionImpactos++;
+}
Index: mainwindow.H
===================================================================
--- mainwindow.H	(revision f6d90edf48c6ff1b292e9d9971c74c355713fb2b)
+++ mainwindow.H	(revision 9b2ca78462c2459ae871349f345364a665f46da8)
@@ -108,4 +108,5 @@
     QAction actionDescomposicion;
     QAction actionCortoPlazo;
+    QAction actionCompararDescomposicion;
 
     QAction actionSeleccionarTabla;
@@ -206,4 +207,6 @@
     //Cantidad de impactos a corto plazo
     int cantidadImpactos;
+    //Cantidad de comparaciones de impactos
+    int comparacionImpactos;
 
     FormLoadMatrix * formLoadMatrix;
@@ -262,5 +265,5 @@
     void calcularFinEscenario(QTableWidget *, QString, Eigen::MatrixXd matrix);
     QVector<double> obtenerResultadoEscenario(QVector<double>, QString, Eigen::MatrixXd matrix);
-    QStringList obtenerNombreResultadoEscenario();
+    QStringList obtenerNombreResultadoEscenario(int cantidad, QString nombre);
     void cuentacomponentesResultado(QTableWidget *, int count, bool clasico = true);
 
@@ -388,7 +391,9 @@
     void finalizarImpacto();
 
+    //Slots para comparar resultados en el modelo no clásico
     void slotCompararResultadosMNC();
     void slotVerResultadoMNC();
 
+    //Slots para precios homogeneos
     void slotPHCIncidencia100();
     void slotPHCIncidenciaiCuenta();
@@ -397,7 +402,9 @@
     void slotCalcularPHCIncidenciaiComponente();
 
+    //Slots para comparar resultados en los precios homogeneos
     void slotCompararResultados();
     void slotVerResultado();
 
+    //Slots para precios no homogeneos
     void slotPHNCIncidencia100();
     void slotPHNCIncidenciaiCuenta();
@@ -418,4 +425,8 @@
     void slotSeleccionarTabla();
 
+    //Slots para comparar resultados de descomposicion
+    void slotFormResultadosDescomposicion();
+    void slotVerResultadoDescomposicion();
+
     //Slots del menú de ayuda
     void abrirManual();
Index: moc_mainwindow.cpp
===================================================================
--- moc_mainwindow.cpp	(revision 8f1b6a6cca5aa4fe4d27521be2c785dea30bb3e3)
+++ moc_mainwindow.cpp	(revision 9b2ca78462c2459ae871349f345364a665f46da8)
@@ -20,6 +20,6 @@
 QT_BEGIN_MOC_NAMESPACE
 struct qt_meta_stringdata_MainWindow_t {
-    QByteArrayData data[71];
-    char stringdata[1484];
+    QByteArrayData data[73];
+    char stringdata[1548];
 };
 #define QT_MOC_LITERAL(idx, ofs, len) \
@@ -99,6 +99,8 @@
 QT_MOC_LITERAL(67, 1405, 36),
 QT_MOC_LITERAL(68, 1442, 20),
-QT_MOC_LITERAL(69, 1463, 11),
-QT_MOC_LITERAL(70, 1475, 8)
+QT_MOC_LITERAL(69, 1463, 32),
+QT_MOC_LITERAL(70, 1496, 30),
+QT_MOC_LITERAL(71, 1527, 11),
+QT_MOC_LITERAL(72, 1539, 8)
     },
     "MainWindow\0slotNuevoProyecto\0\0"
@@ -141,6 +143,8 @@
     "slotSelectPNHi\0slotCalcularPNHIncidenciaiCuenta\0"
     "slotSelectPNHic\0slotCalcularPNHIncidenciaiComponente\0"
-    "slotSeleccionarTabla\0abrirManual\0"
-    "acercaDe"
+    "slotSeleccionarTabla\0"
+    "slotFormResultadosDescomposicion\0"
+    "slotVerResultadoDescomposicion\0"
+    "abrirManual\0acercaDe"
 };
 #undef QT_MOC_LITERAL
@@ -152,5 +156,5 @@
        0,       // classname
        0,    0, // classinfo
-      69,   14, // methods
+      71,   14, // methods
        0,    0, // properties
        0,    0, // enums/sets
@@ -160,73 +164,75 @@
 
  // slots: name, argc, parameters, tag, flags
-       1,    0,  359,    2, 0x08 /* Private */,
-       3,    0,  360,    2, 0x08 /* Private */,
-       4,    0,  361,    2, 0x08 /* Private */,
-       5,    3,  362,    2, 0x08 /* Private */,
-       6,    0,  369,    2, 0x08 /* Private */,
-       7,    0,  370,    2, 0x08 /* Private */,
-       8,    0,  371,    2, 0x08 /* Private */,
-       9,    0,  372,    2, 0x08 /* Private */,
-      10,    0,  373,    2, 0x08 /* Private */,
-      11,    0,  374,    2, 0x08 /* Private */,
-      12,    0,  375,    2, 0x08 /* Private */,
-      13,    0,  376,    2, 0x08 /* Private */,
-      14,    0,  377,    2, 0x08 /* Private */,
-      15,    0,  378,    2, 0x08 /* Private */,
-      16,    0,  379,    2, 0x08 /* Private */,
-      17,    0,  380,    2, 0x08 /* Private */,
-      18,    0,  381,    2, 0x08 /* Private */,
-      19,    0,  382,    2, 0x08 /* Private */,
-      20,    0,  383,    2, 0x08 /* Private */,
-      21,    0,  384,    2, 0x08 /* Private */,
-      22,    0,  385,    2, 0x08 /* Private */,
-      23,    0,  386,    2, 0x08 /* Private */,
-      24,    0,  387,    2, 0x08 /* Private */,
-      25,    0,  388,    2, 0x08 /* Private */,
-      26,    0,  389,    2, 0x08 /* Private */,
-      27,    2,  390,    2, 0x08 /* Private */,
-      28,    0,  395,    2, 0x08 /* Private */,
-      29,    0,  396,    2, 0x08 /* Private */,
-      30,    0,  397,    2, 0x08 /* Private */,
-      31,    0,  398,    2, 0x08 /* Private */,
-      32,    0,  399,    2, 0x08 /* Private */,
-      33,    1,  400,    2, 0x08 /* Private */,
-      33,    0,  403,    2, 0x28 /* Private | MethodCloned */,
-      35,    0,  404,    2, 0x08 /* Private */,
-      36,    0,  405,    2, 0x08 /* Private */,
-      37,    0,  406,    2, 0x08 /* Private */,
-      38,    0,  407,    2, 0x08 /* Private */,
-      39,    0,  408,    2, 0x08 /* Private */,
-      40,    0,  409,    2, 0x08 /* Private */,
-      41,    0,  410,    2, 0x08 /* Private */,
-      42,    0,  411,    2, 0x08 /* Private */,
-      43,    0,  412,    2, 0x08 /* Private */,
-      44,    0,  413,    2, 0x08 /* Private */,
-      45,    0,  414,    2, 0x08 /* Private */,
-      46,    0,  415,    2, 0x08 /* Private */,
-      47,    0,  416,    2, 0x08 /* Private */,
-      48,    0,  417,    2, 0x08 /* Private */,
-      49,    0,  418,    2, 0x08 /* Private */,
-      50,    0,  419,    2, 0x08 /* Private */,
-      51,    0,  420,    2, 0x08 /* Private */,
-      52,    0,  421,    2, 0x08 /* Private */,
-      53,    0,  422,    2, 0x08 /* Private */,
-      54,    0,  423,    2, 0x08 /* Private */,
-      55,    0,  424,    2, 0x08 /* Private */,
-      56,    0,  425,    2, 0x08 /* Private */,
-      57,    0,  426,    2, 0x08 /* Private */,
-      58,    0,  427,    2, 0x08 /* Private */,
-      59,    0,  428,    2, 0x08 /* Private */,
-      60,    0,  429,    2, 0x08 /* Private */,
-      61,    0,  430,    2, 0x08 /* Private */,
-      62,    0,  431,    2, 0x08 /* Private */,
-      63,    0,  432,    2, 0x08 /* Private */,
-      64,    0,  433,    2, 0x08 /* Private */,
-      65,    0,  434,    2, 0x08 /* Private */,
-      66,    0,  435,    2, 0x08 /* Private */,
-      67,    0,  436,    2, 0x08 /* Private */,
-      68,    0,  437,    2, 0x08 /* Private */,
-      69,    0,  438,    2, 0x08 /* Private */,
-      70,    0,  439,    2, 0x08 /* Private */,
+       1,    0,  369,    2, 0x08 /* Private */,
+       3,    0,  370,    2, 0x08 /* Private */,
+       4,    0,  371,    2, 0x08 /* Private */,
+       5,    3,  372,    2, 0x08 /* Private */,
+       6,    0,  379,    2, 0x08 /* Private */,
+       7,    0,  380,    2, 0x08 /* Private */,
+       8,    0,  381,    2, 0x08 /* Private */,
+       9,    0,  382,    2, 0x08 /* Private */,
+      10,    0,  383,    2, 0x08 /* Private */,
+      11,    0,  384,    2, 0x08 /* Private */,
+      12,    0,  385,    2, 0x08 /* Private */,
+      13,    0,  386,    2, 0x08 /* Private */,
+      14,    0,  387,    2, 0x08 /* Private */,
+      15,    0,  388,    2, 0x08 /* Private */,
+      16,    0,  389,    2, 0x08 /* Private */,
+      17,    0,  390,    2, 0x08 /* Private */,
+      18,    0,  391,    2, 0x08 /* Private */,
+      19,    0,  392,    2, 0x08 /* Private */,
+      20,    0,  393,    2, 0x08 /* Private */,
+      21,    0,  394,    2, 0x08 /* Private */,
+      22,    0,  395,    2, 0x08 /* Private */,
+      23,    0,  396,    2, 0x08 /* Private */,
+      24,    0,  397,    2, 0x08 /* Private */,
+      25,    0,  398,    2, 0x08 /* Private */,
+      26,    0,  399,    2, 0x08 /* Private */,
+      27,    2,  400,    2, 0x08 /* Private */,
+      28,    0,  405,    2, 0x08 /* Private */,
+      29,    0,  406,    2, 0x08 /* Private */,
+      30,    0,  407,    2, 0x08 /* Private */,
+      31,    0,  408,    2, 0x08 /* Private */,
+      32,    0,  409,    2, 0x08 /* Private */,
+      33,    1,  410,    2, 0x08 /* Private */,
+      33,    0,  413,    2, 0x28 /* Private | MethodCloned */,
+      35,    0,  414,    2, 0x08 /* Private */,
+      36,    0,  415,    2, 0x08 /* Private */,
+      37,    0,  416,    2, 0x08 /* Private */,
+      38,    0,  417,    2, 0x08 /* Private */,
+      39,    0,  418,    2, 0x08 /* Private */,
+      40,    0,  419,    2, 0x08 /* Private */,
+      41,    0,  420,    2, 0x08 /* Private */,
+      42,    0,  421,    2, 0x08 /* Private */,
+      43,    0,  422,    2, 0x08 /* Private */,
+      44,    0,  423,    2, 0x08 /* Private */,
+      45,    0,  424,    2, 0x08 /* Private */,
+      46,    0,  425,    2, 0x08 /* Private */,
+      47,    0,  426,    2, 0x08 /* Private */,
+      48,    0,  427,    2, 0x08 /* Private */,
+      49,    0,  428,    2, 0x08 /* Private */,
+      50,    0,  429,    2, 0x08 /* Private */,
+      51,    0,  430,    2, 0x08 /* Private */,
+      52,    0,  431,    2, 0x08 /* Private */,
+      53,    0,  432,    2, 0x08 /* Private */,
+      54,    0,  433,    2, 0x08 /* Private */,
+      55,    0,  434,    2, 0x08 /* Private */,
+      56,    0,  435,    2, 0x08 /* Private */,
+      57,    0,  436,    2, 0x08 /* Private */,
+      58,    0,  437,    2, 0x08 /* Private */,
+      59,    0,  438,    2, 0x08 /* Private */,
+      60,    0,  439,    2, 0x08 /* Private */,
+      61,    0,  440,    2, 0x08 /* Private */,
+      62,    0,  441,    2, 0x08 /* Private */,
+      63,    0,  442,    2, 0x08 /* Private */,
+      64,    0,  443,    2, 0x08 /* Private */,
+      65,    0,  444,    2, 0x08 /* Private */,
+      66,    0,  445,    2, 0x08 /* Private */,
+      67,    0,  446,    2, 0x08 /* Private */,
+      68,    0,  447,    2, 0x08 /* Private */,
+      69,    0,  448,    2, 0x08 /* Private */,
+      70,    0,  449,    2, 0x08 /* Private */,
+      71,    0,  450,    2, 0x08 /* Private */,
+      72,    0,  451,    2, 0x08 /* Private */,
 
  // slots: parameters
@@ -263,4 +269,6 @@
     QMetaType::Void,
     QMetaType::Void, QMetaType::Int,   34,
+    QMetaType::Void,
+    QMetaType::Void,
     QMetaType::Void,
     QMetaType::Void,
@@ -376,6 +384,8 @@
         case 65: _t->slotCalcularPNHIncidenciaiComponente(); break;
         case 66: _t->slotSeleccionarTabla(); break;
-        case 67: _t->abrirManual(); break;
-        case 68: _t->acercaDe(); break;
+        case 67: _t->slotFormResultadosDescomposicion(); break;
+        case 68: _t->slotVerResultadoDescomposicion(); break;
+        case 69: _t->abrirManual(); break;
+        case 70: _t->acercaDe(); break;
         default: ;
         }
@@ -408,11 +418,11 @@
         return _id;
     if (_c == QMetaObject::InvokeMetaMethod) {
-        if (_id < 69)
+        if (_id < 71)
             qt_static_metacall(this, _c, _id, _a);
-        _id -= 69;
+        _id -= 71;
     } else if (_c == QMetaObject::RegisterMethodArgumentMetaType) {
-        if (_id < 69)
+        if (_id < 71)
             *reinterpret_cast<int*>(_a[0]) = -1;
-        _id -= 69;
+        _id -= 71;
     }
     return _id;
