[PERL] la commande push et une table de hash
Résolu/Fermé
yannou15
Messages postés
2
Date d'inscription
dimanche 4 novembre 2007
Statut
Membre
Dernière intervention
5 novembre 2007
-
4 nov. 2007 à 15:14
nadjiboooo - 8 mars 2011 à 23:20
nadjiboooo - 8 mars 2011 à 23:20
A voir également:
- Perl push hash
- Denon perl pro test - Accueil - Audio
- Push power protector sony - Forum Enceintes / HiFi
- Push 2 film - Forum Cinéma / Télé
- Apple push windows 10 - Forum Windows 8 / 8.1
- Push common interface 5v only - Forum TV & Vidéo
3 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
4 nov. 2007 à 22:58
4 nov. 2007 à 22:58
Salut,
en fait tu ne sais pas accéder à ton hash
Voici un exemple, à toi d'adapter
en fait tu ne sais pas accéder à ton hash
Voici un exemple, à toi d'adapter
#!/usr/bin/perl use strict;use warnings; my (@tab, %h1, %h2); %h1 = ( cle1 => 'toto', cle2 => 'titi', ); %h2 = ( cle3 => 'tata', cle4 => 'tutu', ); push @tab,\%h1,\%h2; foreach (@tab){ foreach my $k(sort keys %{$_}){ print "$k => $_->{$k}\n"; } }
yannou15
Messages postés
2
Date d'inscription
dimanche 4 novembre 2007
Statut
Membre
Dernière intervention
5 novembre 2007
5 nov. 2007 à 01:05
5 nov. 2007 à 01:05
Merci,
en fait j'ai utilisé cette façon de faire, mais en faisant directement une table de hachage de tables de hachage, cela revient quasiment au même en fait.
en fait j'ai utilisé cette façon de faire, mais en faisant directement une table de hachage de tables de hachage, cela revient quasiment au même en fait.
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
5 nov. 2007 à 07:20
5 nov. 2007 à 07:20
Salut,
affiche ton code pour voir, ainsi qu'une partie de fichier que tu traites.
quelques explications pour comprendre ce que tu veux faire seront bienvenues.
affiche ton code pour voir, ainsi qu'une partie de fichier que tu traites.
quelques explications pour comprendre ce que tu veux faire seront bienvenues.
8 mars 2011 à 23:20
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct el
{
char cle[10];
struct el *suiv;
}m;
m *table[20]; char ch[10],ac[10]; int x;
int hash(void)
{
int d,h,j; h=0;
for(d=0;ch[d];d++)
{
j=ch[d];
h+=j;
}
h=(h*d)%20;
return(h);
}
m* recherche(int i)
{m *l;
for(l=table[i];l!=NULL&&strcmp(l->cle,ch)!=0;l=l->suiv);
return(l);
}
m* cree()
{m *l;
l=(m*)malloc(sizeof(m)); l->suiv=NULL; strcpy(l->cle,ch);
return(l);
}
int action()
{
int u,i; u=ac[0];i=u-48;
while(strlen(ac)!=1||i>3||i<0)
{
printf("\nrelire les remarques ci dessus et apres rentrer votre action :");scanf("%s",ac); u=ac[0];i=u-48;
}
return(i);
}
main()
{
m *r,*s;
int i,j,h,act;
for(i=0;i<20;i++)
table[i]=NULL;
printf("\n\n\n\ndes remarques sur les actions du programme : ");
printf("\n\n pour inserer une tel element taper 1 ");
printf("\n pour rechercher un tel element s'il existe taper 2 ");
printf("\n pour supprimer un tel element taper 3");
printf("\n pour sorter que le programme taper 0 ");
printf("\n\n choisir votre action : "); scanf("%s",ac); act=action();
while(act==1||act==2||act==3)
{
if(act==1)
{
printf("\nentre votre cle : ");scanf("%s",ch); h=hash();; r=recherche(h);
if(r!=NULL)printf("\ncette cle est existe deja !!");
else
{
s=cree();
s->suiv=table[h]; table[h]=s;
for(s=table[h];s!=NULL;s=s->suiv)printf("[%s]",s->cle);
}
}/*if(act==1)*/
if(act==2)
{
printf("\nentre la cle recherchee : "); scanf("%s",ch); h=hash(); r=recherche(h);
if(r!=NULL)printf("\nla cle '%s' ets existe ",r->cle);
else
{
printf("\ncette cle n'existe pas voullez vous l'inseree ?(oui=1/non=0) : "); scanf("%d",&i);
if(i==1)
{
s=cree();
s->suiv=table[h]; table[h]=s;
}
}
}/*if(act==2)*/
if(act==3)
{
printf("\nentre la cle que voulez supprimer : "); scanf("%s",ch); h=hash(); r=recherche(h);
if(r==NULL)printf("\ncette cle n'existe pas !!");
else
{
if(strcmp(table[h]->cle,ch)==0)
{
s=table[h]; table[h]=s->suiv; free(s);
}
else
{
for(s=table[h];s->suiv!=r;s=s->suiv);
s->suiv=r->suiv; free(r);
}
}
}/*if(act==3)*/
printf("\n\n choisir votre action : "); scanf("%s",ac); act=action();
}/*while(act==1||act==2)*/
}/*main*/
et pour plus d'information sur c++ (www.nadjiboooo@gmail.com)