[C] Help au plus vite

Help au plus vite [C] - C - Programmation

Marsh Posté le 17-06-2004 à 17:12:00    

Bonjours, nous avons un programme à rendre demain après midi, et nous sommes bloquer.
But : On doit faire une table de hachage (annuaire) et pouvoir aller chercher des infos dans cette table à l'aide d'une clef de hachage (Pour nous ordre alphabétique)
On récupère la première lettre taper par l'utilsateur, on soustrait 65 à la valeur de cette lettre ce qui nous donne un numero de case.
La table de hachage est composer d'un tableau (26 cases), chaque case du tableau contient une liste chainee avec dans chaque maillon une structure coportant les informations suivante (nom, prénom, adresse, n° tel).
Tout ceci est trier à partir d'un fichier texte de ce type :  
TEST michel 512 rue des grottes 0238569326
 
Chaque séparation est faite à l'aide de tabulation.
 
Merci de votre aide.

Citation :


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define Malloc(int) (int*)malloc(sizeof(int))
#define maxi 255
 
typedef struct MAILLON
 {
  char nom;
  struct MAILLON *suiv;
 }maillon;
 
typedef maillon *liste_chainee;
typedef liste_chainee table[25];
 
void initialisation()
{
 int i=0;
 table Tab;
 for(i=0;i<=25; i++)
 {
  Tab[i]=NULL;
 }
}
 
void trie()
{
 FILE *f;
 char val[254];
 int n;
 f=fopen("C:\\annuaire.txt","r" );
 
 if(!f)
 {
  printf("\nerreur !! le fichier n'existe pas" );
  getch();
  exit(-1);
 }
 
 while(!feof(f))
 {
  fgets(val,255,f);
  n=val[1]-65;  //clef de hachage
  if(n<=25)
  {
   haching(n,val);  // permet de cree les listes chainee du tableau ou de cree de nouveau maillon si il existe une liste_ch
  }
 }
 fclose(f);
}
 
liste_chainee haching(int n, char v) ==> error 1 : Type mismatch in redeclaration of 'haching'
{
 liste_chainee L;
 maillon *pl, *dl;
 table t;
 
 if(t[n]==NULL)
 {
  pl=Malloc(maillon);
  pl->nom=v;
  pl->suiv=NULL;
  if(L==NULL)
  {
   L=pl;
  }
  else
  {
   dl->suiv=pl;
  }
  dl=pl;
 }
 else
 {
  L=inserer(L,v);
 }
 return L;
}
 
liste_chainee inserer(liste_chainee L, char v) // insertion d'un nouveau maillon ==> error 2 ; Type mismatch in redeclaration of 'inserer'
{
 maillon *nouveau, *parcour, *insere;
 nouveau=malloc(sizeof(maillon));
 nouveau->nom=v;
 insere=NULL;
 parcour=L;
 
 while(parcour!=NULL)
 {
  insere=parcour;
  parcour=parcour->suiv;
 }
 if(insere==NULL)
 {
  nouveau->suiv=L;
  L=nouveau;
 }
 else
 {
  nouveau->suiv=insere->suiv;
  insere->suiv=nouveau;
 }
 return L;
}
 
void recherche()
{
 char rch[20];
 maillon *tete;
 int n;
 char *tmp;
 char a[20];
 table t;
 
 printf("\nquel nom voulez-vous recherchez ???\n" );
 scanf("%c",&rch);
 n=rch[1]-65;   //clef de hachage
 if(n>25)
 {
  printf("\nTapez le nom en majuscule" );
  menu();
 }
 else
 {
  if(t[n]==NULL)
  {
   printf("\nle nom n'existe pas" );
   getch();
   menu();
  }
  else
  {
   while(tete!=NULL)
   {
 tmp=strdup(tete);  //On récupere ce qu'il y a dans tete
 a=strtok(tmp,"\t" );  // On prends le nom (jusqu'a la premiere tabulation) ==> error 4 : Lvalue required
 if(a==rch)
 {
  printf("\nvoici les infos demandes:\n %c",tmp);
  getch();
  menu();
 }
 else
 {
  printf("\nle nom n'existe pas" );
  getch();
  menu();
 }
   }
  }
 }
}
 
void menu() ==> error 3 : Type mismatch in redeclaration of 'menu'
{
 char a;
 printf("   RECHERCHE D'UN NOM\n" );
 printf("\n" );
 printf("\nvoulez-vous faire une recherche??? (tapez o)" );
 printf("\nvoulez-vous arr?ter la recherche??? (tapez n)\n" );
 scanf("%c",&a);
 if(a=='n')
 {
  getch();
  exit(-1);
 }
 else
 {
  recherche();
  getch();
 }
}
 
void main()
{
 printf("   GESTION D'UN ANNUAIRE PAR HACHAGE" );
 getch();
 nitialisation();
 trie();
 getch();
 menu();
 getch();
}
 

[#ff0e00][/#ff0e00][b][/b][g]


Message édité par cloud@rider le 17-06-2004 à 18:29:18
Reply

Marsh Posté le 17-06-2004 à 17:12:00   

Reply

Marsh Posté le 17-06-2004 à 17:20:02    

elle est ou la question o_O ?

Reply

Marsh Posté le 17-06-2004 à 17:24:08    

l'erreur est à la ligne 56

Reply

Marsh Posté le 17-06-2004 à 17:29:36    

Je te débogue ça pour demain matin.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 17-06-2004 à 17:31:29    

moi je comprends le mélange de getch et de getchar, déjà ça peut que foirer
 
 
et la majorité des scanfs sont foirés

Reply

Marsh Posté le 17-06-2004 à 17:42:31    

merci HelloWorld

Reply

Marsh Posté le 17-06-2004 à 18:48:09    

:pt1cable:   :lol:

Reply

Marsh Posté le 17-06-2004 à 18:48:33    

je regarde ça et je repasse demain


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 17-06-2004 à 18:58:31    

sont vraiment gentil ici :whistle:


---------------
Découvre le HFRcoin ✈ - smilies
Reply

Marsh Posté le 17-06-2004 à 19:05:32    

avec les balises [cpp] ça serait plus clair :jap:


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 17-06-2004 à 19:05:32   

Reply

Marsh Posté le 17-06-2004 à 19:34:43    

merci aussi a toi Harkonnen

Reply

Marsh Posté le 17-06-2004 à 23:32:45    

HelloWorld a écrit :

Je te débogue ça pour demain matin.


Bon ben on compte sur toi et sur Harkonnen, hein ? [:itm]
Surtout ne nous décevez pas. :D


Message édité par el muchacho le 17-06-2004 à 23:33:07
Reply

Marsh Posté le 17-06-2004 à 23:40:38    

roh les michants  :love:

Reply

Marsh Posté le 18-06-2004 à 08:19:37    

Bon ben y va être l'heure là ..  :whistle:

Reply

Marsh Posté le 18-06-2004 à 08:54:55    

c'est pas 3615 DEBUG_A_DISTANCE ici


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 18-06-2004 à 09:46:40    

> #define Malloc(int) (int*)malloc(sizeof(int))  
Beurk et inutile.
 
> #define maxi 255  
La pratique courante en C, c'est de noter les constantes preprocesseur avec des majuscules. Bon tu fais comme tu veux, mais ca ne facilite pas la relecture.
 

Citation :

typedef liste_chainee table[25];  
void initialisation()  
{  
int i=0;  
table Tab;  
for(i=0;i<=25; i++)  
{  
 Tab[i]=NULL;  
}  
}


Vas falloir que tu relises ton cours...
 

Citation :

char val[254];  
haching(n,val);  
liste_chainee haching(int n, char v) ==> error 1 : Type mismatch in redeclaration of 'haching'


 
etc etc.
A+,


Message édité par gilou le 18-06-2004 à 09:51:35

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 18-06-2004 à 10:33:17    

cloud@rider a écrit :

merci HelloWorld


Je blaguais... [:gowser]


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 18-06-2004 à 12:11:42    

cloud@rider a écrit :

[citation=767832,0,1][nom]cloud@rider a écrit[/nom]Bonjour, nous avons un programme à rendre demain après midi, et nous sommes bloqués.
But : On doit faire une table de hachage (annuaire) et pouvoir aller chercher des infos dans cette table à l'aide d'une clef de hachage (Pour nous ordre alphabétique)
On récupère la première lettre tapée par l'utilsateur, on soustrait 65 à la valeur de cette lettre ce qui nous donne un numero de case.
La table de hachage est composée d'un tableau (26 cases), chaque case du tableau contient une liste chainée avec dans chaque maillon une structure comportant les informations suivantes (nom, prénom, adresse, n° tel).
Tout ceci est trié à partir d'un fichier texte de ce type :  
TEST michel 512 rue des grottes 0238569326
 
Chaque séparation est faite à l'aide de tabulation.
 
Merci de votre aide.
 


 
de rien:jap:


Message édité par fodger le 21-06-2004 à 15:25:24
Reply

Marsh Posté le 18-06-2004 à 12:47:41    

Fodger >> zélé


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 18-06-2004 à 13:35:50    

Bon, ben y a pu qu'à attendre la solution d'arko, en ASM ...  :pt1cable:   :D

Reply

Marsh Posté le 18-06-2004 à 13:36:48    

faut coder en C correctement, ça suffira


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 18-06-2004 à 18:38:04    

Citation :

La table de hachage est composé d'un tableau


[:meganne]


Message édité par HelloWorld le 18-06-2004 à 18:38:17

---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed