[Noti-aed] listab.cpp tpl3 Cordini

Juan Cordini juanbcordini en gmail.com
Jue Nov 9 19:11:36 -03 2023


------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://venus.santafe-conicet.gov.ar/pipermail/noti-aed/attachments/20231109/554e5bcd/attachment.html>
------------ próxima parte ------------
#define USECHRONO
#undef HAVE_MPI

#include "eval.hpp"
#include <cassert>
#include <climits>
#include <cstdlib>
#include <stack>
using namespace aed;
using namespace std;

//---:---<*>---:---<*>- COMIENZA CODIGO FUNCION --:---<*>---:---<*>---:---<*>
// COMPLETAR DNI y NOMBRE AQUI:
// Nombre: Cordini Juan Bautista
int DNI=45344874;

//---:---<*>---:---<*>---:---<*>---:---<*>---:---<*>
///Auxiliar
void listab(btree<int> B, btree<int>::iterator it, list<int> &abpos, list<int> &val, int pos) {
  if (it == B.end()) {
    return; // Nodo Lambda, no se hace nada
  }
  
  abpos.push_back(pos); // Agrega la posición al final de la lista abpos
  val.push_back(*it);   // Agrega el valor al final de la lista val
  
  // Propaga la recursión a los hijos
  listab(B, it.left(), abpos, val, 2 * pos + 1);  // Hijo izquierdo
  listab(B, it.right(), abpos, val, 2 * pos + 2); // Hijo derecho
}
///Wrapper
void listab(btree<int> &B, list<int> &abpos, list<int> &val) {
  // Inicia la recursión desde la raíz del árbol (posición 0)
  listab(B, B.begin(), abpos, val, 0);
}
///Auxiliar
btree<int>::iterator insertab_recursive(btree<int>::iterator it, list<int> &pos, list<int> &val, int current_pos) {
  if (pos.empty() || val.empty()) {
    return it;
  }
  
  // Obtener la posición y el valor actuales
  int target_pos = pos.front();
  int target_val = val.front();
  
  if (current_pos == target_pos) {
    *it = target_val; // Actualizar el valor en la posición actual
    pos.pop_front();
    val.pop_front();
  }
  
  // Propagar la recursión a los hijos izquierdo y derecho
  insertab_recursive(it.left(), pos, val, 2 * current_pos + 1);  // Hijo izquierdo
  insertab_recursive(it.right(), pos, val, 2 * current_pos + 2); // Hijo derecho
  
  return it;
}
///Wrapper
void insertab(btree<int> &B, std::list<int> &pos, list<int> &val) {
  // Inicia la recursión desde la raíz del árbol (posición 0)
  insertab_recursive(B.begin(), pos, val, 0);
}

//---:---<*>---:---<*>- FINALIZA CODIGO FUNCION --:---<*>---:---<*>---:---<*>
int main() {
  Eval ev;
  int vrbs=0;
  ev.eval<1>(listab,vrbs);
  ev.evalr<1>(listab,12345,vrbs);
  return 0;
}


Más información sobre la lista de distribución Noti-AED