Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // main.c
- // TP2-ALGO4
- //
- // Created by Dayan Decamp on 19/02/2021.
- // Copyright © 2021 Dayan Decamp. All rights reserved.
- //
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- typedef char CharTwenty[20];
- typedef struct _word {
- CharTwenty FrenchWord;
- CharTwenty EnglishWord;
- struct _word *mr, *ml;
- } word, *dictionary;
- dictionary createWord (CharTwenty FrenchWord,CharTwenty EnglishWord) {
- dictionary dictio = NULL;
- dictio = (dictionary) malloc(sizeof(struct _word));
- strcpy(dictio->EnglishWord, EnglishWord);
- strcpy(dictio->FrenchWord, FrenchWord);
- dictio->ml=NULL;
- dictio->mr=NULL;
- return dictio;
- }
- dictionary addDico(dictionary dico,CharTwenty FrenchWord,CharTwenty EnglishWord) {
- if (dico == NULL) {
- return createWord(FrenchWord, EnglishWord);
- } else {
- if (FrenchWord[0] <= dico->FrenchWord[0]) {
- dico->ml = addDico(dico->ml, FrenchWord, EnglishWord);
- } else {
- dico->mr = addDico(dico->mr, FrenchWord, EnglishWord);
- }
- return dico;
- }
- }
- void displayDico(dictionary dico) {
- if (dico != NULL) {
- displayDico(dico->ml);
- printf("MOT FR : [%20s]-[%20s] : ENG MOT\n",dico->FrenchWord,dico->EnglishWord);
- displayDico(dico->mr);
- }
- }
- int searchWord(dictionary dico,CharTwenty searchWENG) {
- if (dico == NULL) {
- printf("Le mot %s est inconnu !",searchWENG);
- return 1;
- } else {
- if (searchWENG[0]== dico->FrenchWord[0]) {
- printf("La traduction de %s est %s\n",searchWENG,dico->EnglishWord);
- return 0;
- } else if (searchWENG[0] < dico->FrenchWord[0]) {
- return searchWord(dico->ml, searchWENG);
- } else {
- return searchWord(dico->mr, searchWENG);
- }
- }
- }
- void countWordFR (dictionary dico, int * count) {
- if (dico == NULL) {
- count=0;
- } else {
- int countL =0;
- countWordFR(dico->ml, &countL);
- int countR = 0;
- countWordFR(dico->mr, &countR);
- *count = countL + countR + 1;
- }
- }
- void searchMostLongWord(dictionary dico,CharTwenty * W) {
- if (dico != NULL) {
- if (strlen(dico->FrenchWord) > strlen(*W)) {
- strcpy(*W, dico->FrenchWord);
- searchMostLongWord(dico->mr, W);
- searchMostLongWord(dico->ml, W);
- } else {
- searchMostLongWord(dico->mr, W);
- searchMostLongWord(dico->ml, W);
- }
- }
- }
- void deleteWordFR(dictionary dico,dictionary *newDico,CharTwenty deleteWord) {
- CharTwenty newFR;
- CharTwenty newENG;
- if (dico != NULL) {
- deleteWordFR(dico->ml,newDico,deleteWord);
- strcpy(newFR, dico->EnglishWord);
- strcpy(newENG, dico->FrenchWord);
- if (strcmp(deleteWord, dico->FrenchWord)!=0) {
- *newDico = addDico(*newDico, newFR, newENG);
- }
- deleteWordFR(dico->mr,newDico,deleteWord);
- }
- }
- void copyDico(dictionary dico,dictionary *newDico) {
- CharTwenty newFR;
- CharTwenty newENG;
- if (dico != NULL) {
- copyDico(dico->ml,newDico);
- strcpy(newFR, dico->EnglishWord);
- strcpy(newENG, dico->FrenchWord);
- *newDico = addDico(*newDico, newFR, newENG);
- copyDico(dico->mr,newDico);
- }
- }
- int main(int argc, const char * argv[]) {
- // insert code here...
- dictionary dico = NULL;
- CharTwenty WFR;
- CharTwenty WENG;
- puts("------------------------- DISPLAY DICO -------------------------");
- strcpy(WFR, "Bonjour");
- strcpy(WENG, "Hello");
- dico = addDico(dico, WFR, WENG);
- strcpy(WFR, "Bouteille");
- strcpy(WENG, "Bottle");
- dico = addDico(dico, WFR, WENG);
- strcpy(WFR, "Carte");
- strcpy(WENG, "Card");
- dico = addDico(dico, WFR, WENG);
- strcpy(WFR, "Voiture");
- strcpy(WENG, "Car");
- dico = addDico(dico, WFR, WENG);
- strcpy(WFR, "Ecran");
- strcpy(WENG, "Screen");
- dico = addDico(dico, WFR, WENG);
- displayDico(dico);
- puts("----------------------------------------------------------------\n");
- displayDico(dico);
- puts("----------------------------------------------------------------\n");
- puts("-------------------------- COUNT DICO --------------------------");
- int countWord;
- countWordFR(dico, &countWord);
- printf("Il y a %d mots dans le dictionnaire\n",countWord);
- puts("----------------------------------------------------------------\n");
- puts("---------------------- MOST LONG WORD DICO ---------------------");
- CharTwenty longWord;
- strcpy(longWord, "");
- searchMostLongWord(dico, &longWord);
- printf("Il y a %s mots dans le dictionnaire\n",longWord);
- puts("----------------------------------------------------------------\n");
- puts("------------------------ DELETE WORD ---------------------------");
- displayDico(dico);
- dictionary newDicoDelete = NULL;
- deleteWordFR(dico,&newDicoDelete,"Voiture");
- puts("-------------------------- WITH DELETE -------------------------");
- displayDico(newDicoDelete);
- puts("----------------------------------------------------------------\n");
- puts("------------------------ COPY DICO -----------------------------");
- dictionary newDico = NULL;
- copyDico(dico,&newDico);
- displayDico(newDico);
- puts("-----------------------------------------------------------------\n");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement