Rechercher : dans
Par :

Variable locale non référencée ?

Dernière réponse le 18 jun 2008 à 18:32:10 MouchT8, le 18 jun 2008 à 16:05:49 
 Signaler ce message aux modérateurs

Bonjour,

Voila je suis sur un projet de recherche dichotomique!

J'ai 3 erreurs à corriger dans mon programme!
Par exemple celle ci:

Avertissement 1 warning C4101: 'mot_texte' : variable locale non référencée

QU'est ce que ca veut dire "variable locale non référencée" ?

C'est une question complement absurde je le sais mais je suis incapable de corriger ces erreurs :o(

Configuration: Windows XP
Opera 9.50

Meilleures réponses pour « Variable locale non référencée ? » dans :
Les variables en C++ VoirLes variables en C++ 1. Les différents types de variables 1.1 bool 1.2 char 1.3 unsigned short int 1.4 short int 1.5 unsigned long int 1.6 long int 1.7 int (16 bits) 1.8 int (32 bits) 1.9 unsigned int (16 bits) 1.10 unsigned int (32...
Lecteur h: non valide VoirProblème de lecteur non valide Ceci arrive souvent quand un lecteur a été supprimé ou si sa lettre a été modifiée. La solution est de supprimer toutes les références à ce lecteur dans la base de registre. Procédure Cliquer sur "Démarrer" ...
Java: les variables VoirLe concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage Java sont typées, c'est-à-dire que les données contenues dans...
Langage C++ - Les variables VoirLe concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage C++ sont typées, c'est-à-dire que les données contenues dans...
Référencement VoirQu'est-ce que le référencement ? On désigne habituellement par le terme « référencement » (en anglais web positionning) l'ensemble des techniques permettant d'améliorer la visibilité d'un site web : indexation (en anglais submission) consistant à...

1

kilian, le 18 jun 2008 à 18:17:27

Salut,

En quel langage? il y en a des centaines ;-)

...et euh..ouais nan bah c'est tout...

Répondre à kilian

2

MouchT8, le 18 jun 2008 à 18:20:48

Oups oui pardon ^^

en C !!

et je travaille sous visual studio 2005 !!

voila !

:o)

Répondre à MouchT8

3

kilian, le 18 jun 2008 à 18:22:12

Tu l'a déclaaré dans ta fonction ton mot_texte?
Genre char *mot_texte; par exemple.

...et euh..ouais nan bah c'est tout...

Répondre à kilian

4

MouchT8, le 18 jun 2008 à 18:29:23

Oui!

voici mon code ça peut aider ^^

#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include<stdlib.h>


#define MAXMOTS 100	//nombre maximum de mots dans le dictionnaire
#define LONGMOT 20 	//longueur en carcatere d'un mot

char dico[LONGMOT][MAXMOTS];
char mot[LONGMOT];
char *pmot;
 
FILE*f;


//initialisation de la fonction de recherche dichotomique
short dichotomie(char dico[LONGMOT][MAXMOTS],char *mot,short nb_mots){


int i,j,k,trouve,indice;		//i->debut, j->fin
int strcmp (const char *s1, const char *s2);


i=0;
j=nb_mots;
trouve=0;

while(i<=j && trouve == 0) {				
	
int moy;		//moyenne de(i,j)
moy=(i+j)/2;
k=moy;


if(strcmp(dico[k],mot)==0) {
	trouve=1;
}
if(strcmp(dico[k],mot)>0) {
	j=k-1;}
else{
	i=k+1;
}
}



if(trouve==0){indice=0;}	//si mot n'a pas été trouvé
if(trouve==1){indice=1;}	//si mot a été trouvé

return indice;
}

//initialisation des fonction de supression des majuscules et de la ponctuation
void sup_ponc(char *pmot){
				
int i=0,j=0;
char c;
				
//Traitement
while (pmot[i]!= '/0'){
c=pmot[i];
if (isalpha(c)){
pmot[j]=c;
j++;
}
i++;
}
pmot[j]=0;
}


void sup_maj(char *pmot){
				
int i=0;
char c;

//Traitement
while (pmot[i]!='/0'){
c=pmot[i];
if (isupper(c))
c=tolower(c);
pmot[i]=c;
i++;
}
pmot[i]=0;
}

//fonction ajout

void ajout(char dico[LONGMOT][MAXMOTS],char *mot,short nb_mot)
			{
				//Copie du nouveau mot dans le tableau
				strcpy(dico[nb_mot],mot);
				//Tri en mémoire du tableau dico
				qsort((char**)dico,nb_mot,LONGMOT,strcmp);
			}
 



//FONCTION PRINCIPALE

int main (int argc, char **argv[]) {

char mot_texte[LONGMOT];	//mot lu dans le fichier text
short nb_mots=0;
int i,j,k;
char *fichier_texte;		//nom du fichier à ouvrir et à traiter
fichier_texte="fichierdevoir";



printf("Veuillez entrer le nom du fichier texte a traiter pour la recherche dichotomique svp: ");
fgets (fichier_texte, sizeof fichier_texte, stdin); 

f=fopen("dico.dat","r");



//Test que le fichier dico s'ouvre bien
	if ((f=fopen("dico.dat","r")) == NULL)
		printf("Impossible d'ouvrir le fichier Dico\n");



//**
printf("lecture mot par mot de tout le fichier et stockage dans un tableau en mémoire ....\n");
i=0;
while(fgetc(f)!=EOF)
{
	fgets(dico[i],19,f);
	i++;
}



fclose(f);

nb_mots=100;

//**
printf("Tri en mémoire du tableau dico....\n");
qsort((char**)dico,nb_mots,LONGMOT,strcmp);	


f=fopen("fichierdevoir","r");

//Test que le fichier s'ouvre bien
if ((f=fopen("fichierdevoir.dat","r")) == NULL)
printf("Impossible d'ouvrir le fichier texte");


pmot=mot;

//**
printf("Traitement pour chaque mot: supression des majuscules et de la ponctuation....");

while (fscanf(f,"%s",mot) != EOF){
sup_ponc(pmot);
sup_maj(pmot);
printf("Recherche du mot dans le tableau dico .....");
dichotomie(dico, mot, nb_mots);

if (dichotomie==0){
char rep[5];	//variable pour la réponse de l'utilisateur
fprintf (f,"Le mot n'existe pas. Voulez vous l'ajouter au dictionnaire? \n");
fscanf(f,"%s",&rep);

if (strcmp(rep,"oui")==0) {
ajout(dico,mot,nb_mots);
}
}
}

fclose(f);

f=fopen("dico.dat","a");

for (i=0; i<nb_mots; i++) {
fprintf(f,"%s\n",dico[i]);
}

fclose(f);

}

Répondre à MouchT8

5

 MouchT8, le 18 jun 2008 à 18:32:10

PETit changement de derniere minute pour mon code à 2 endroits...

Le revoila mis a jour :



#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include<stdlib.h>


#define MAXMOTS 100	//nombre maximum de mots dans le dictionnaire
#define LONGMOT 20 	//longueur en carcatere d'un mot

char dico[LONGMOT][MAXMOTS];
char mot[LONGMOT];
char *pmot;
int i=0;

FILE*f;


//initialisation de la fonction de recherche dichotomique
short dichotomie(char dico[LONGMOT][MAXMOTS],char *mot,short nb_mots){


int i,j,k,trouve,indice;		//i->debut, j->fin
int strcmp (const char *s1, const char *s2);


i=0;
j=nb_mots;
trouve=0;

while(i<=j && trouve == 0) {				
	
int moy;		//moyenne de(i,j)
moy=(i+j)/2;
k=moy;


if(strcmp(dico[k],mot)==0) {
	trouve=1;
}
if(strcmp(dico[k],mot)>0) {
	j=k-1;}
else{
	i=k+1;
}
}



if(trouve==0){indice=0;}	//si mot n'a pas été trouvé
if(trouve==1){indice=1;}	//si mot a été trouvé

return indice;
}

//initialisation des fonction de supression des majuscules et de la ponctuation
void sup_ponc(char *pmot){
				
int i=0,j=0;
char c;
				
//Traitement
while (pmot[i]!= '/0'){
c=pmot[i];
if (isalpha(c)){
pmot[j]=c;
j++;
}
i++;
}
pmot[j]=0;
}


void sup_maj(char *pmot){
				
int i=0;
char c;

//Traitement
while (pmot[i]!='/0'){
c=pmot[i];
if (isupper(c))
c=tolower(c);
pmot[i]=c;
i++;
}
pmot[i]=0;
}

//fonction ajout

void ajout(char dico[LONGMOT][MAXMOTS],char *mot,short nb_mot)
			{
				//Copie du nouveau mot dans le tableau
				strcpy(dico[nb_mot],mot);
				//Tri en mémoire du tableau dico
				qsort((char**)dico,nb_mot,LONGMOT,strcmp);
			}
 



//FONCTION PRINCIPALE

int main (int argc, char **argv[]) {

char mot_texte[LONGMOT];	//mot lu dans le fichier text
short nb_mots=0;

char *fichier_texte;		//nom du fichier à ouvrir et à traiter
fichier_texte="fichierdevoir";



printf("Veuillez entrer le nom du fichier texte a traiter pour la recherche dichotomique svp: ");
fgets (fichier_texte, sizeof fichier_texte, stdin); 

f=fopen("dico.dat","r");



//Test que le fichier dico s'ouvre bien
	if ((f=fopen("dico.dat","r")) == NULL)
		printf("Impossible d'ouvrir le fichier Dico\n");



//**
printf("lecture mot par mot de tout le fichier et stockage dans un tableau en mémoire ....\n");

while(fgetc(f)!=EOF)
{
int i;
i =0;

fgets(dico[i],19,f);
i++;
}



fclose(f);

nb_mots=100;

//**
printf("Tri en mémoire du tableau dico....\n");
qsort((char**)dico,nb_mots,LONGMOT,strcmp);	


f=fopen("fichierdevoir","r");

//Test que le fichier s'ouvre bien
if ((f=fopen("fichierdevoir.dat","r")) == NULL)
printf("Impossible d'ouvrir le fichier texte");


pmot=mot;

//**
printf("Traitement pour chaque mot: supression des majuscules et de la ponctuation....");

while (fscanf(f,"%s",mot) != EOF){
sup_ponc(pmot);
sup_maj(pmot);
printf("Recherche du mot dans le tableau dico .....");
dichotomie(dico, mot, nb_mots);

if (dichotomie==0){
char rep[5];	//variable pour la réponse de l'utilisateur
fprintf (f,"Le mot n'existe pas. Voulez vous l'ajouter au dictionnaire? \n");
fscanf(f,"%s",&rep);

if (strcmp(rep,"oui")==0) {
ajout(dico,mot,nb_mots);
}
}
}

fclose(f);


f=fopen("dico.dat","a");


for (i=0; i<nb_mots; i++) {
fprintf(f,"%s\n",dico[i]);
}

fclose(f);

}



VS m'indique donc que mot_texte est déclaré non référencé à sa déclaration dans le main !

;o)

Répondre à MouchT8