Help au plus vite [C] - C - Programmation
Marsh Posté le 17-06-2004 à 17:29:36
ReplyMarsh 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
Marsh Posté le 17-06-2004 à 18:48:33
je regarde ça et je repasse demain
Marsh Posté le 17-06-2004 à 18:58:31
ReplyMarsh Posté le 17-06-2004 à 19:05:32
avec les balises [cpp] ça serait plus clair
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 ?
Surtout ne nous décevez pas.
Marsh Posté le 18-06-2004 à 08:54:55
c'est pas 3615 DEBUG_A_DISTANCE ici
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]; |
Vas falloir que tu relises ton cours...
Citation : char val[254]; |
etc etc.
A+,
Marsh Posté le 18-06-2004 à 10:33:17
cloud@rider a écrit : merci HelloWorld |
Je blaguais...
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. |
de rien:jap:
Marsh Posté le 18-06-2004 à 12:47:41
Fodger >> zélé
Marsh Posté le 18-06-2004 à 13:35:50
Bon, ben y a pu qu'à attendre la solution d'arko, en ASM ...
Marsh Posté le 18-06-2004 à 13:36:48
faut coder en C correctement, ça suffira
Marsh Posté le 18-06-2004 à 18:38:04
Citation : La table de hachage est composé d'un tableau |
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.
#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