Skip to content
Snippets Groups Projects
Commit 3e3c414e authored by Abdul-Malik Elmurzaev's avatar Abdul-Malik Elmurzaev
Browse files

Merge branch 'master' into 'main'

Master

See merge request !2
parents c61f8e9d 1c804456
Branches
1 merge request!2Master
......@@ -17,17 +17,54 @@ typedef enum{
CHEF, COLLEGUE, LOCATAIRE, TRAVAILLE, PROPRIETAIRE, SITUE, DECOUVERT
}rtype;
bool est_lien_parente(rtype id){
return false;
bool est_lien_parente(rtype id){
return (id == FRERE || id == COUSIN || id == PARENT || id == ONCLE);
}
bool est_lien_professionel(rtype id){
return false;
bool est_lien_professionel(rtype id){
return (id == CHEF || id == COLLEGUE);
}
bool est_lien_connaissance(rtype id){
return false;
return (id == EPOUX || id == AMI || id == CONNAIT || id == VIT);
}
typedef struct snoeud{
int type;
int val[3];
struct snoeuf* fils[4];
}arbre, *Arbre234;
typedef struct relations{
char* leurRelation[17];
}RelationsTable;
RelationsTable* newRelationsTable(){
RelationsTable* r = malloc(sizeof(RelationsTable));
r->leurRelation[0] = "NULL";
r->leurRelation[1] = "NULL";
return r;
}
RelationsTable* addRelationsTable(RelationsTable* r, char* name, int id){ // name of their relation
r->leurRelation[id] = name;
return r;
}
RelationsTable* completeTheRelationsTable(){
RelationsTable* r = newRelationsTable();
char* n2 = " frère ou soeur de "; char* n3 = "cousin ou cousine de "; char* n4 = "père ou mère ";
char* n5 = " oncle ou tante de "; char* n6 = "époux ou épouse de "; char* n7 = "ami de ";
char* n8 = " vit avec "; char* n9 = " connait "; char* n10 = " supérieur de ";
char* n11 = " collègue de "; char* n12 = " locataire de "; char* n13 = " travaille à ";
char* n14 = " propriétaire de "; char* n15 = " situé à "; char* n16 = " découvert à ";
char* table[15] = {n2, n3, n4, n5, n6, n7, n8, n9, n10, n11, n12, n13, n14, n15, n16};
for(int i=0; i<15; i++){
r = addRelationsTable(r, table[i], i+2);
}
return r;
}
char* toStringRelation(rtype id){
return "";
RelationsTable* r = completeTheRelationsTable();
return r->leurRelation[id];
}
////////////////////////////////////////
......@@ -42,28 +79,73 @@ listeg listegnouv(){
return NULL;
}
listeg adjtete(listeg lst, void *x){
return lst;
listeg new = malloc(sizeof(struct s_node));
new->val = x;
new->suiv = lst;
return new;
}
listeg adjqueue(listeg lst, void *x){
listeg new = malloc(sizeof(struct s_node));
new->val = x;
new->suiv = NULL;
if( lst != NULL ){
listeg copy = lst;
while(copy->suiv != NULL){
copy = copy->suiv;
}
copy->suiv = new;
}else{
return new;
}
return lst;
}
listeg suptete(listeg lst){
return lst;
listeg deuxieme = lst->suiv;
free(lst);
return deuxieme;
}
void *tete(listeg lst){
return NULL;
return lst->val;
}
int longueur(listeg lst){
return -1;
int res = 0;
if( lst == NULL )
return res;
res++;
listeg copy = lst;
while(copy->suiv != NULL){
copy = copy->suiv;
res++;
}
return res;
}
bool estvide(listeg lst){
return false;
return lst == NULL;
}
void detruire(listeg lst){
if( estvide(lst) )
return;
if(lst->suiv != NULL){
free(lst);
return;
}
listeg copy = lst;
while(copy != NULL){
listeg deathrowInmate = copy;
copy = copy->suiv;
free(lst);
}
}
listeg rech(listeg lst, void *x, int(*comp)(void *, void *)){
listeg copy = lst;
while(copy != NULL){
if( comp(x, copy->val) ){
return lst;
}else{
copy = copy->suiv;
}
}
return NULL;
}
......@@ -186,11 +268,43 @@ void affiche_degre_relations(Relations r, char *x){
int main(){
int i,j;
printf("test toStringRelation(16) == %s \n", toStringRelation(16));
printf("test est_lien_parente : %d %d %d \n",est_lien_parente(COUSIN),est_lien_parente(LOCATAIRE),
est_lien_parente(EPOUX));
printf("test est_lien_professionel : %d %d %d \n", est_lien_professionel(LOCATAIRE),
est_lien_professionel(CHEF), est_lien_professionel(COLLEGUE));
printf("test est_lien_connaissance : %d %d %d \n", est_lien_connaissance(AMI),
est_lien_connaissance(CONNAIT), est_lien_connaissance(COLLEGUE));
listeg liste = listegnouv();
int x5 = 5, x4 = 4, x19 = 19, x3 = 3, x33 = 33;
int *px5, *px4, *px19, *px3, *px33;
px5 = &x5; px4 = &x4; px19 = &x19; px3 = &x3; px33 = &x33;
int x0 = 0; int* px0 = &x0;
liste = adjqueue(liste, &px5);
liste = adjtete(liste, &px4);
liste = adjqueue(liste, &px19);
liste = adjtete(liste, &px3);
liste = adjqueue(liste, &px33);
liste = adjtete(liste, &px0);
liste = suptete(liste);
listeg copy = liste;
for(int i=0; i<4; i++){
printf("liste->val == %d \n", **(int**)copy->val);
copy = copy->suiv;
}
printf("tete(liste) == %d \n", **(int**)tete(liste));
detruire(liste);
return 0;
Relations r; relationInit(&r);
// ajouter les entites de l'exemple
char *tabe[] ={"KARL","LUDOVIC","CELINE","CHLOE","GILDAS","CEDRIC","SEVERINE",
"PEUGEOT 106" ,"1, RUE DE LA RUE","STRASBOURG" };
for (i = 0; i < 7; i++) adjEntite(r, tabe[i], PERSONNE);
for (i = 0; i < 7; i++)
adjEntite(r, tabe[i], PERSONNE);
adjEntite(r, tabe[7], OBJET);
adjEntite(r, tabe[8], ADRESSE);
adjEntite(r, tabe[9], VILLE);
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment