Código
#include <iostream> #include <numeric> #include <vector> using namespace std; template <class entrada,class salida> salida division_adyacente(entrada primero,entrada ultimo,salida resultado) { if (primero!=ultimo) { typename iterator_traits<entrada>::value_type valor,anterior; *resultado = anterior = *primero; while (++primero!=ultimo) { valor = *primero; *++resultado = valor / anterior; anterior = valor; } ++resultado; } return resultado; } int main(){ vector<double> v{1,3,6,9,4.5}; division_adyacente(v.begin(),v.end(),v.begin()); for(vector<double>::iterator it=v.begin();it!=v.end();it++) cout<<*it<<" "; return 0; }