xrange.cpp

#define USECHRONO
#undef HAVE_MPI
#include "eval.hpp"
#include <cassert>
#include <climits>
#include <cstdlib>
#include <list>


/* COMIENZO DE DESCRIPCION

   __USE_WIKI__

   Dada una lista de enteros #L1# y dos iteradores #p, q# de la
   misma, escriba una funcion 
   #void extraer_rango(list<int> &L1, list<int>::iterator p,# 
   #list<int>::iterator q, list<int> &L2);# que extraiga el rango de #L1# 
   y lo deja en la lista #L2.# 
   Nota: ambos iteradores #p# y #q# pueden ser #end()# y
   no necesariamente #p# esta antes de #q.#

   [Tomado en el Trabajo Practico de Laboratorio 1
   (TPL1) de 2020-09-24]
   keywords: lista

   FIN DE DESCRIPCION */

using namespace aed;
using namespace std;

int distancia(list<int> &L,list<int>::iterator p) {
  int j=0;
  auto z=L.begin();
  while (z!=p) {
    j++;
    z++;
  }
  return j;
}

void extraer_rango(list<int> &L1, list<int>::iterator p, list<int>::iterator q, list<int> &L2)  {
  int dp = distancia(L1,p);
  int dq = distancia(L1,q);
  if (dp<dq) {
    L2.insert(L2.begin(),p,q);
    L1.erase(p,q);
  }
}

//---:---<*>---:---<*>---:---<*>---:---<*>---:---<*>
int main() {
  Eval ev;
  int vrbs = 0;
  ev.eval<1>(extraer_rango,vrbs);
  return 0;
}

Generated by GNU Enscript 1.6.6.