<commit_before>/*! Implementacion  de la clase conjunto<CMP>
 */

/** @todo implementar la funcion
 */
#include <string>
#include <vector>
#include <iostream> 
#include <functional>

#include "crimen.h"
#include "conjunto.h"

using namespace std;

template <typename CMP>
conjunto<CMP>::conjunto() {

}

template <typename CMP>
conjunto<CMP>::conjunto(const conjunto<CMP> & d) {
    this->vc.clear();
    for (unsigned int i = 0; i < d.size(); i++) {
        this->vc.push_back(d.getAt(i));
    }
}

template <typename CMP>
crimen conjunto<CMP>::getAt(int i) const {
    crimen c;
    if (this->vc.size() > (unsigned) i) {
        c = this->vc.at(i);
    }
    return c;
}

template <typename CMP>
typename conjunto<CMP>::iterator conjunto<CMP>::find(const long int & id) {
    conjunto<CMP>::iterator it;
    vector<conjunto<CMP>::entrada>::iterator itvec = vc.begin();
    it.itv = vc.end();

    if (this->cheq_rep()) {
        int abajo = 0;
        int arriba = this->vc.size() - 1;
        int centro;

        while (abajo <= arriba) {
            centro = ((arriba - abajo) / 2) + abajo;
            if (this->vc.at(centro).getID() == id) {
                itvec = vc.begin() + centro;
                it.itv = itvec;
            } else {
                if (id < this->vc.at(centro).getID())
                    arriba = centro - 1;
                else
                    abajo = centro + 1;
            }
        }
    }

    return it;
}

template <typename CMP>
typename conjunto<CMP>::const_iterator conjunto<CMP>::find(const long int & id) const {
    conjunto<CMP>::const_iterator it;
    vector<conjunto<CMP>::entrada>::const_iterator itvec = vc.begin();
    it.c_itv = vc.end();
 
    if (this->cheq_rep()) {
        int abajo = 0;
        int arriba = this->vc.size() - 1;
        int centro;

        while (abajo <= arriba) {
            centro = ((arriba - abajo) / 2) + abajo;
            if (this->vc.at(centro).getID() == id) {
                itvec = vc.begin() + centro;
                it.c_itv = itvec;
            } else {
                if (id < this->vc.at(centro).getID())
                    arriba = centro - 1;
                else
                    abajo = centro + 1;
            }
        }
    }

    return it;
}

template <typename CMP>
string conjunto<CMP>::zeroFill(const string & s, unsigned int n) const {
    string filled = s;
    int diff = n - s.size();
    for (int i = 0; i < diff; i++) {
        filled = "0" + filled;
    }
    return filled;
}

template <typename CMP>
conjunto<CMP> conjunto<CMP>::findIUCR(const string & iucr) const {
    conjunto<CMP> c;
    string zfIUCR = zeroFill(iucr, 4);
    for (unsigned int i = 0; i < this->vc.size(); i++) {
        int j = 0;
        if (vc.at(i).getIUCR() == zfIUCR) {
            c.insert(vc.at(i));
            j++;
        }

    }
    cout << c << endl;
    return c;
}

template <typename CMP>
conjunto<CMP> conjunto<CMP>::findDESCR(const string & descr) const {
    conjunto<CMP> c;

    for (unsigned int i = 0; i < this->vc.size(); i++) {
        int j = 0;<commit_msg>El crimen.hxx también se cambia<commit_after>/*! Implementacion  de la clase conjunto<CMP>
 */

/** @todo implementar la funcion
 */
#include <string>
#include <vector>
#include <iostream> 
#include <functional>

#include "crimen.h"
#include "conjunto.h"

using namespace std;

template <typename CMP>
conjunto<CMP>::conjunto() {

}

template <typename CMP>
conjunto<CMP>::conjunto(const conjunto<CMP> & d) {
    this->vc.clear();
    for (unsigned int i = 0; i < d.size(); i++) {
        this->vc.push_back(d.getAt(i));
    }
}

template <typename CMP>
crimen conjunto<CMP>::getAt(int i) const {
    crimen c;
    if (this->vc.size() > (unsigned) i) {
        c = this->vc.at(i);
    }
    return c;
}

template <typename CMP>
typename conjunto<CMP>::iterator conjunto<CMP>::find(const long int & id) {
    conjunto<CMP>::iterator it;
    vector<conjunto<CMP>::entrada>::iterator itvec = vc.begin();
    it.itv = vc.end();

    if (this->cheq_rep()) {
        int abajo = 0;
        int arriba = this->vc.size() - 1;
        int centro;

        while (abajo <= arriba) {
            centro = ((arriba - abajo) / 2) + abajo;
            if (this->vc.at(centro).getID() == id) {
                itvec = vc.begin() + centro;
                it.itv = itvec;
            } else {
                if (id < this->vc.at(centro).getID())
                    arriba = centro - 1;
                else
                    abajo = centro + 1;
            }
        }
    }

    return it;
}

template <typename CMP>
typename conjunto<CMP>::const_iterator conjunto<CMP>::find(const long int & id) const {
    conjunto<CMP>::const_iterator it;
    vector<conjunto<CMP>::entrada>::const_iterator itvec = vc.begin();
    it.c_itv = vc.end();
 
    if (this->cheq_rep()) {
        int abajo = 0;
        int arriba = this->vc.size() - 1;
        int centro;

        while (abajo <= arriba) {
            centro = ((arriba - abajo) / 2) + abajo;
            if (this->vc.at(centro).getID() == id) {
                itvec = vc.begin() + centro;
                it.c_itv = itvec;
            } else {
                if (id < this->vc.at(centro).getID())
                    arriba = centro - 1;
                else
                    abajo = centro + 1;
            }
        }
    }

    return it;
}

template <typename CMP>
string conjunto<CMP>::zeroFill(const string & s, unsigned int n) const {
    string filled = s;
    int diff = n - s.size();
    for (int i = 0; i < diff; i++) {
        filled = "0" + filled;
    }
    return filled;
}

template <typename CMP>
conjunto<CMP> conjunto<CMP>::findIUCR(const string & iucr) const {
    conjunto<CMP> c;
    string zfIUCR = zeroFill(iucr, 4);
    for (unsigned int i = 0; i < this->vc.size(); i++) {
        int j = 0;
        if (vc.at(i).getIUCR() == zfIUCR) {
            c.insert(vc.at(i));
            j++;
        }

    }
    cout << c << endl;
    return c;
}

template <typename CMP>
conjunto<CMP> conjunto<CMP>::findDESCR(const string & descr) const {
    conjunto<CMP> c;

    for (unsigned int i = 0; i < this->vc.size(); i++) {
        int j = 0; 
{'fraction_non_alphanumeric': 0.15666936135812448, 'fraction_numerical': 0.00582053354890865, 'mean_word_length': 1.9387173396674584, 'pattern_counts': {'":': 0, '<': 95, '<?xml version=': 0, '>': 101, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7003786', 'n_tokens_mistral': 2269, 'n_tokens_neox': 2219, 'n_words': 525}