Concatenation : contenu d'un element dela lis
stroumpf
Messages postés
292
Statut
Membre
-
kazouu Messages postés 466 Statut Membre -
kazouu Messages postés 466 Statut Membre -
Bonjour à tous les developpeurs ici presents,
jai une fonction qui boucle sur tte une liste chaine en affichant le contenu , le probleme c'est que je sais pas comment faire pour concatener le contenu et une chaine de caractere (espace) lors de l'aafichage
merci
je compte sur vous
jai une fonction qui boucle sur tte une liste chaine en affichant le contenu , le probleme c'est que je sais pas comment faire pour concatener le contenu et une chaine de caractere (espace) lors de l'aafichage
merci
je compte sur vous
Configuration: Windows XP Internet Explorer 7.0
A voir également:
- Concatenation : contenu d'un element dela lis
- Concaténation pdf - Guide
- Concaténation excel - Guide
- [C++]Concaténation/sprintf ✓ - Forum C++
- Faire une concaténation avec des #N/A? ✓ - Forum Excel
- Parenthèse avec concaténation access - Forum Programmation
21 réponses
- 1
- 2
Suivant
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
la fonction concatener est une fonction qui regroupe deux chaines de caractéres
tu veux regrouper quelles chaines?
tu veux regrouper quelles chaines?
tu n'as pas compris ta chaine concat est la chaine ou il y aura tout tes mot si tu veux rajouter un espace tu fais
void AfficherListe(Liste *L){
Liste *p;
for(p=L;p!=NULL;p=p->suivant){
strcat(concat,p->mot);
strcat(concat,' ');
AfficheMot(p->mot);
AfficherCoordonnees(p->c);
}
}
void AfficherListe(Liste *L){
Liste *p;
for(p=L;p!=NULL;p=p->suivant){
strcat(concat,p->mot);
strcat(concat,' ');
AfficheMot(p->mot);
AfficherCoordonnees(p->c);
}
}
ok :) merci
table-hachage.h
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include "table_hash.h"
#define TAILLEHASH 307
int main()
{
FILE *F;
char mot[100];
int i;
unsigned int cle,pt;
int nl, pos;
nl=pos=1;
char c;
int seuil;
Liste **L;
Liste **TableHash;
TableHash = (Liste **) malloc (TAILLEHASH * sizeof(Liste *));
for(i=0;i<TAILLEHASH;++i)
TableHash[i] = NULL;
pt=hash_cle(".");
//printf("%d",pt);
printf("debut du programme \n----------------------------------\n");
F=fopen("C:\\Documents and Settings\\siril\\Bureau\\projetcyrine\\text.txt","r");
while(fscanf(F,"%s",mot)==1){
cle = hash_cle(mot);
if ((cle!=pt ) && (! ChercherMotDansTableHash(TableHash,mot)))
TableHash[cle] = InsertionEnTete(TableHash[cle],mot);
}
fclose(F );
F=fopen("C:\\Documents and Settings\\siril\\Bureau\\projetcyrine\\text.txt","r");
PosLigne(F,TableHash);
//filtrage
printf("\nla liste filtre :\n----------------------------------\n");
FiltreListe(TableHash,2);
AfficherTableHash(TableHash);
//géneration des 2seq
Liste *seq=NULL;
Generer2seq(TableHash, 2, &seq);
printf("\nla liste des 2seq :\n----------------------------------\n");
AfficherListe(seq);
//printf("Chercher mot : ");
//scanf("%s",mot);
//if(cle = ChercherMotDansTableHash(TableHash,mot))
// printf("%s existant dans le conteneur %u\n",mot,hash_cle(mot));
//else
// printf("%s inexistant dans la table de hash\n");
scanf("%c",c);
return 0;
}
void ParcourirElementTableHash(Liste **TableHash,char *mot){
int cle;
Liste *p;
cle = hash_cle(mot);
for(p=TableHash[cle];p!=NULL;p=p->suivant)
if(strcmp(mot,p->mot) == 0){
printf("%s : ",mot);
AfficherCoordonnees(p->c);
}
}
Liste *InsertionEnTete(Liste *L,char *mot){
Liste *nouveau;
nouveau = (Liste *) malloc (sizeof(Liste));
strcpy(nouveau->mot,mot);
nouveau->suivant = L;
nouveau->c = NULL;
return nouveau;
}
Coordonnees *InsertionEnTeteCoordonnee(Coordonnees *C,int nl ,int pos){
Coordonnees *nouveau;
nouveau = (Coordonnees *) malloc (sizeof(Coordonnees));
nouveau->pos = pos;
nouveau->nl = nl;
nouveau->suivant = C;
return nouveau;
}
void AfficherListe(Liste *L){
Liste *p;
for(p=L;p!=NULL;p=p->suivant){
AfficheMot(p->mot);
AfficherCoordonnees(p->c);
}
}
void AfficherCoordonnees(Coordonnees *C){
Coordonnees *p;
for(p=C;p!=NULL;p=p->suivant)
printf(" (%d,%d) ",p->nl,p->pos);
printf("\n");
}
void AfficheMot(char *mot){
char *espace;
espace =" ";
printf("%s",mot );
printf("%s",espace);
}
unsigned int hash_cle(char *mot){
unsigned int val = 0;
for(;*mot!='\0';++mot)
val = *mot + 31 * val;
return val % TAILLEHASH;
}
void AfficherTableHash(Liste **TableHash){
int i;
for(i=0;i<TAILLEHASH;++i)
if(TableHash[i] != NULL){
printf("Conteneur %d \n",i);
AfficherListe(TableHash[i]);
printf("----------------------------------\n");
}
}
unsigned int ChercherMotDansTableHash(Liste **TableHash,char *mot){
Liste *p;
unsigned int cle;
cle = hash_cle(mot);
for(p=TableHash[cle];p!=NULL;p=p->suivant)
if(strcmp(p->mot,mot)==0)
return 1;
return 0;
}
void FiltreListe(Liste **TableHash, int seuil){
Liste *p ,*last;
Coordonnees *c;
int i,supp=0,nb=0;
for(i=0;i<TAILLEHASH;++i)
if(TableHash[i] != NULL){
nb=0;
last=TableHash[i];
for(p=TableHash[i];p!=NULL;p=p->suivant){
supp=0;
nb++;
for(c=p->c;c!=NULL;c=c->suivant)
supp++;
if( supp <seuil){ // mot n'est pas frequent
if (last==p) // cas du première mot
{
TableHash[i]=p->suivant;
last=p->suivant;
}
else
last->suivant=p->suivant;
nb--;
}else
last=p;
}
if (nb==0)
TableHash[i] = NULL;
}
}
void Generer2seq(Liste **TableHash, int seuil, Liste **seq){
Liste *p1, *p2, *ss,*t;
Coordonnees *c1,*c2;
int i,j,supp1=0,supp2=0,nb=0;
char s1[50], s2[50],*t1,*t2;
ss=*seq;
printf("\nconstruction des 2seq \n---------------\n");
for(i=0;i<TAILLEHASH;++i)
if(TableHash[i] != NULL)
for(p1=TableHash[i];p1!=NULL;p1=p1->suivant)
for(j=i;j<TAILLEHASH;++j)
if(TableHash[j] != NULL){
if (j==i)
t=p1;
else
t=TableHash[j];
for(p2=t;p2!=NULL;p2=p2->suivant){
if (strcmp(p1->mot,p2->mot)!=0){ // si 2 mots differents trouvés
Liste *tmp1=NULL, *tmp2=NULL;
strcpy(s1,p1->mot);
strcpy(s2,p2->mot);
t1=strcat(s1,p2->mot);
t2=strcat(s2,p1->mot);
tmp1=InsertionEnTete(tmp1,s1);
tmp2=InsertionEnTete(tmp2,s2);
printf("creation TMP1 et TMP2 : %s ,%s\n",s1,s2);
supp1=0;supp2=0;
for(c1=p1->c;c1!=NULL;c1=c1->suivant) // calcule de supp
for(c2=p2->c;c2!=NULL;c2=c2->suivant){
if (c1->nl == c2->nl){
if(c1->pos < c2->pos){
tmp1->c=InsertionEnTeteCoordonnee(tmp1->c,c1->nl ,c2->pos);
supp1++;
}
else{
tmp2->c=InsertionEnTeteCoordonnee(tmp2->c,c1->nl ,c1->pos);
supp2++;
}
}
} // fin calcul supp
if(supp1>=seuil){
//printf("%d ",supp1);
if (*seq==NULL)
*seq=tmp1;
else
ss->suivant=tmp1;
ss=tmp1;
//printf("%s : OK1\n",tmp1->mot);
}
if(supp2>=seuil){
//printf("%d ",supp2);
if (*seq==NULL)
*seq=tmp2;
else
ss->suivant=tmp2;
ss=tmp2;
//printf("%s : OK2\n",tmp2->mot);
}
} // fin de traitement des mot
//printf("fin");
}
}
printf("////fin calcule 2seq\n");
}
void PosLigne(FILE *F,Liste **TableHash){
char s[50];
int nl,pos,i;
Liste *p;
nl=pos=1;
while(fscanf(F,"%s",s)==1){
for(i=0;i<TAILLEHASH;++i)
if(TableHash[i]!=NULL)
for(p=TableHash[i];p!=NULL;p=p->suivant)
if(strcmp(p->mot,s)==0)
p->c=InsertionEnTeteCoordonnee(p->c,nl ,pos);
if(fgetc(F)=='\n'){
++nl;
pos=0;
}
++pos;
}
printf("\n");
}
table-hachage.h
#ifndef TABLE_HASH
#define TABLE_HASH
typedef struct c{
int pos;
int nl;
struct c *suivant;
}Coordonnees;
typedef struct L{
char mot[50];
Coordonnees *c;
struct L *suivant;
}Liste;
Liste *InsertionEnTete(Liste *L,char *mot);
Coordonnees *InsertionEnTeteCoordonnee(Coordonnees *C,int nl,int pos);
void AfficherListe(Liste *L);
void AfficherCoordonnees(Coordonnees *C);
void AfficheMot(char *mot);
unsigned int hash_cle(char *mot);
void AfficherTableHash(Liste **TableHash);
unsigned int ChercherMotDansTableHash(Liste **TableHash,char *mot);
void PosLigne(FILE *F,Liste **TableHash);
void frequent( Liste **TableHash , int mc);
void ParcourirElementTableHash(Liste **TableHash,char *mot);
void FiltreListe(Liste **L, int seuil);
void Generer2seq(Liste **TableHash, int seuil, Liste **seq);
#endif
- 1
- 2
Suivant
voila la fonction d'affichage
void AfficherListe(Liste *L){ Liste *p; for(p=L;p!=NULL;p=p->suivant){ AfficheMot(p->mot); AfficherCoordonnees(p->c); } } void AfficheMot(char *mot){ printf("%s ",mot," " ); }