Tfe

Ongi etorri tfe-ren webgunera...

Old stuff/ecole_etude_fac_de_pau/nico/bckup/deflater.cpp

(Deskargatu)
#include "deflater.h"
#include <string>
#include <iostream>
#include <map>
#include <vector>




Deflater::Deflater()//constructeur permettant de creer le dictionnaire grace au code ascii
{
  std::string chaine;  
  for(int i=0;i<256;i++)
    {
    chaine=i;
      dico[chaine]=i+1;
    }
}




int Deflater::add(std::string s)//fonction pour ajouter une valeur au dictionnaire
{

  dico[s] = dico.size();
  return dico.size();
}



int Deflater::seek(std::string s)//fonction pour chercher si une valeur est  dans le dictonnaire
{
    return dico.find(s) != dico.end();
}



int Deflater::deflate()
{
  std::string s;
  std::string precedent;
  std::vector<unsigned int> s2;
  int j=0;
  int longueur=1;
  for(int i=0;i<memoire.length();i++)  //parcourt du dictionnaire
    {
	longueur=0;
	s=memoire[i];	
	precedent=s;
	while(seek(s)) //si il trouve la valeur il concatene notre chaine resultat
	{
	  precedent=s;
	  longueur++;
	 s.append(&memoire[i+longueur],1);
	}	
	add(s);//si il ne la trouve pas il l'ajoute en fin de dictionnaire
	sortie.push_back(dico[precedent]);
	i=i+longueur-1;
    }
  for(int i=0;i<sortie.size();i++)//affichage du resultat
    {
      std::cout << sortie[i] << "\t";
    }
  std::cout << "\n";
}

void Deflater::setinput(std::string a)//permet de remplir le buffer memoire
{
  memoire=a;
}