[Noti-aed] Ciorciari Conrado EJ3TPL3
Conrado Ciorciari
conrs2001 en gmail.com
Jue Nov 9 19:52:17 -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/8b55b2c7/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: Conrado Ciorciari
int DNI=43426610;
//---:---<*>---:---<*>---:---<*>---:---<*>---:---<*>
//Escribir una función void createab(btree<int> &B, list<int> &abpos,list<int> &val); que, dado un árbol B, y
//dos listas de enteros abpos y val va tomando valores p y v de ambas listas y va insertando el valor v en la posición correspondiente a abpos=p.
//Las posiciones en abpos recorren los nodos en orden previo.
///AYUDA
///Escribir una función recursiva con un argumento adicional de tipo iterador.
/// En la función recursiva, si la lista abpos está vacía, salir.
/// Caso contrario extraer los valores pos y val del comienzo de las listas (eliminarlos).
/// Insertar el valor val en el nodo actual (refrescar el iterador).
///Ahora hay que crear (recursivamente) los árboles izquierdo y derecho.
/// Si la lista NO está vacía y si el valor en el frente de abpos es 2*pos+1 llamar recursivamente sobre el hijo izquierdo para crear su subárbol.
/// Si la lista NO está vacía y si el valor en el frente de abpos es 2*pos+2 llamar recursivamente sobre el hijo derecho para crear su subárbol.
//aux
void createab(btree<int> &B, btree<int>::iterator n,list<int> &abpos,list<int> &vals) {
if(abpos.empty()==true){//si abpos vacio retorna
return;
}else{
int valor=vals.front();//tomo valor del comienzo de vals
int posicion=abpos.front();//tomo valor comienzo de pos
vals.pop_front();//elimino 1er valor vals
abpos.pop_front();//elimino 1er valor pos
n=B.insert(n,valor);//inserto valor en n.
int posicionIzq=2*posicion+1;
int posicionDer=2*posicion+2;
//itero por izq
if(abpos.front()==posicionIzq){
createab(B,n.left(),abpos,vals);
}
//itero por der
if(abpos.front()==posicionDer){
createab(B,n.right(),abpos,vals);
}
}
}
//---:---<*>---:---<*>---:---<*>---:---<*>---:---<*>
void createab(btree<int> &B, list<int> &abpos,list<int> &vals) {
createab(B,B.begin(),abpos,vals);
}
//---:---<*>---:---<*>- FINALIZA CODIGO FUNCION --:---<*>---:---<*>---:---<*>
int main() {
Eval ev;
int vrbs=0;
ev.eval<1>(createab,vrbs);
// ev.evalr<1>(createab,12345,vrbs);
return 0;
}
Más información sobre la lista de distribución Noti-AED