Bonjour,

Ce programme ne s'exécute pas ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
/*Nom:exercice 1 du devoir 8
version 1.0
auteur:
date de création : 12/7/2009
date de dernière mise à jour :
Description du travail :
-saisir un par un les mots constituants le dictionnaire
-recherche dichotomique d'un mot dans le dictionnaire
-affichage du résultat de la recherche*/
 
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
 
#define MAXMOTS 100
#define LONGMOT 20
 
short dichotomie(char **dico,char *mot,short nb_mots);
 
main()
{
	/*déclaration et initialisation des variables*/
	short nb_mots=0;
	char *mot;
	char **dico;
	int termine,cptr;
	short moTrouve;
	termine=0;
	mot=malloc(LONGMOT*sizeof(*mot));
	dico=malloc(MAXMOTS*sizeof(char *));
 
	/*saisie des mots du dictionnaire*/
	while((termine!=1)&&(nb_mots<MAXMOTS))
	{
		printf("entrer un mot (fin pour terminer) : ");
		scanf("%s",mot);
 
		if(strcmp(mot, "fin")==0)
		{
			termine=1;
		}
		else
		{
			*(dico+nb_mots)=malloc(strlen(mot)+1);
			strcpy(*(dico+nb_mots),mot);
			nb_mots++;
		}
	}
 
	moTrouve=dichotomie(dico,mot,nb_mots);
	if(moTrouve==1)
	{
		printf("le mot %s a ete trouve .\n",mot);
	}
	else
	{
		printf("le mot %s est introuvable .\n",mot);
	}
 
	/*libération espâce mémoire*/
	free(mot);
	free(dico);
}
 
short dichotomie(char **dico,char *mot,short nb_mots)
{
	/*initialisation des variables*/
	int i,j,k,trouve,inter;
	i=0;
	j=nb_mots;
	k=(nb_mots,2);
 
	/*saisie du mot à trouver*/
	printf("entrer le mot a trouver : ");
	scanf("%s",mot);
 
	/*recherche du mot saisi dans le dico*/
	do
	{
		inter=j-i;
		k=(j+i)/2;
		trouve=strcmp(*(dico+k),mot);
		if(trouve>0)j=k;
		if(trouve<0)i=k;
		if(trouve==0)inter=1;
	}while(inter>1);
 
	/*renvoi résultat recherche*/
	if(trouve==0)
	{
		system("pause");
		return 1;
	}
	else
	{
		return 0;
	}
}