Пример #1
0
/* Manipulation du dictionnaire */
int est_dans_dico(char *mot, arbre dico){
  if((dico == NULL)||(dico->data > mot[0])) return 0;
  if(mot[0] == dico->data){
    if(mot[0] == '\0') return 1;
    return est_dans_dico(mot+1, dico->gauche);
  }
  return est_dans_dico(mot, dico->droite);
}
Пример #2
0
void verifie_mots(arbre dico){
  char buffer[BUFFER_SIZE];
  printf("Entrez les mots à vérifier. Terminez par une ligne vide (ctrl D ou .)\n");
  while(readline(stdin, buffer)){
    if((buffer[0]=='.')&&(buffer[1]=='\0')) break;
    printf("%s",buffer);
    if(est_dans_dico(buffer, dico)) printf(" est correct\n");
    else printf(" n'est pas dans le dictionnaire\n");
  }
}
Пример #3
0
void Decompression(FILE* fichier_in){


	int caractere_a_decompresser;
	int code_caractere;
	uint32_t bit_a_ecrire;
	dictionnaire dico = malloc(sizeof(dictionnaire));
	int tableau_temporaire[Taille_tab]; //AMELIORATION POSSIBLE : Utiliser une succéssion de pointeur afin d'optimiser la place.
	char* sequence;
	int taille_sequence;
	int caractere_save;
	int code_seq=260;
	int taille_code=9;
	int present_dico;
	int i;


	init_dico(dico);
	initialise_tab_temp(tableau_temporaire);

	caractere_a_compresser = readChar(fichier_in);

	while (caractere_a_compresser != 256)
	{


		insere_dans_tab_temp(caractere_a_compresser, tableau_temporaire);
		sequence = concatene_caracteres_de_tab_temp(tableau_temporaire, &taille_sequence);
		printf("%s\n",sequence );

		if(!est_dans_dico(sequence, taille_sequence, dico))//Si la sequence n'estpas dans le dico
		{

			printf("ajout de la séquence dans le dico\n");
			ajout_dico(sequence, taille_sequence, dico, code_seq);
			code_seq++;
		
			caractere_save = exclusion_du_dernier_element(tableau_temporaire);
			taille_sequence = taille_sequence - 1; //La taille de la séquence a perdu un élément
			sequence = concatene_caracteres_de_tab_temp(tableau_temporaire, &taille_sequence);

			
			code_caractere = caract_to_code(sequence, taille_sequence, dico); //recherche code caractere dans dico
			bit_a_ecrire = int_to_uint32(code_caractere);
			printf("On code %d dans le fichier\n", code_caractere );

			//printf("%#X\n", bit_a_ecrire);
			//tampon_ecriture(bit_a_ecrire, taille_code);

			restart(tableau_temporaire, caractere_save);
			caractere_a_compresser = caractere_save;
		}
		//else if (compression_fini == 1) /*&& tableau_temporaire[0] != -1*/
		//{
			
			//printf("%d\n", caractere_a_compresser);
			//printf("%d\n", compression_fini);
			//caractere_a_compresser = 256;

			//printf("%d\n", tableau_temporaire[0]);
			//printf("%d\n", code_caractere);
		//}
		else
		{
			caractere_a_compresser = readChar(fichier_in);
			if (caractere_a_compresser == 256)
			{
				sequence = concatene_caracteres_de_tab_temp(tableau_temporaire, &taille_sequence);
				code_caractere = caract_to_code (sequence, taille_sequence, dico); //recherche code caractere dans dico
				bit_a_ecrire = int_to_uint32(code_caractere);
				printf("On code %d dans le fichier\n", code_caractere );
			}
		}
	}
	bit_a_ecrire = int_to_uint32(caractere_a_compresser);
	printf("On code %d dans le fichier\n", caractere_a_compresser );

	//ecriture_sortie(bit_a_ecrire); //fonction a modifier
	//afficher(dico);
}