Question

In: Computer Science

Implement a dictionary application using C++ with the following features: Load a dictionary file. Given a...

Implement a dictionary application using C++ with the following features:

  • Load a dictionary file.

  • Given a prefix string that the user specifies, print the first word or all words in the dictionary with that string as their prefix.

  • Given two strings A and B that the user specifies, replace all occurrences of A in the dictionary file with B.

  • Spawning a new editor (e.g., vim) to allow the user to modify the dictionary file. Save the dictionary file afterwards.

All your source code must be put within one (1) file and your program should not have any extra library dependencies.

Please provide the coding in C and should compile with "$ gcc dict.c -g -O1 -o dict"

Good example of the file running is "./dict -d dict.txt"

Solutions

Expert Solution

PROGRAM :

SHORT AND EASY WAY TO IMPLEMENT DICT. USING C LANGUAGE :

Step 1:
Create a structure with two char arrays

Key
Value
This structure will act as a dictionary which can store key and value pair.
To make it simple I have considered key and value to be text data

Step 2:
Create a dynamic linked list with the structure created.
i.e. When ever a new key and value is added, add a node with the structure.
When ever the key and value is removed, delete the node.

Step 3:
Create functions for reading, searching based on key and value.
And even sorting the dictionary if required

ALGO USED :

Create a dict
Lets add foo, and bar to the dict
and print their values
Lets delete them
see, their gone, there NULL
add them again to proof it works

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/ Comment this line out to compile without a main function (used when including into another application). /
#define TEST TRUE

typedef struct dict_t_struct {
char *key;
void *value;
struct dict_t_struct *next;
} dict_t;

dict_t **dictAlloc(void) {
return malloc(sizeof(dict_t));
}

void dictDealloc(dict_t **dict) {
free(dict);
}

void getItem(dict_t dict, char *key) {
dict_t *ptr;
for (ptr = dict; ptr != NULL; ptr = ptr->next) {
if (strcmp(ptr->key, key) == 0) {
return ptr->value;
}
}

return NULL;
}

void delItem(dict_t *dict, char key) {
dict_t ptr, prev;
for (ptr = *dict, prev = NULL; ptr != NULL; prev = ptr, ptr = ptr->next) {
if (strcmp(ptr->key, key) == 0) {
if (ptr->next != NULL) {
if (prev == NULL) {
*dict = ptr->next;
} else {
prev->next = ptr->next;
}
} else if (prev != NULL) {
prev->next = NULL;
} else {
*dict = NULL;
}

free(ptr->key);
free(ptr);

return;
}
}
}

void addItem(dict_t *dict, char key, void *value) {
delItem(dict, key);
dict_t *d = malloc(sizeof(struct dict_t_struct));
d->key = malloc(strlen(key)+1);
strcpy(d->key, key);
d->value = value;
d->next = *dict;
*dict = d;
}

#ifdef TEST

int main(int argc, char **argv) {

dict_t **dict = dictAlloc();

addItem(dict, "foo", "bar");
addItem(dict, "bar", "foo");

printf("%s %s\n", (char )getItem(*dict, "foo"), (char )getItem(*dict, "bar"));

delItem(dict, "foo");
delItem(dict, "bar");

printf("%s %s\n", (char )getItem(*dict, "foo"), (char )getItem(*dict, "bar"));

addItem(dict, "foo", "bar");
addItem(dict, "bar", "foo");
addItem(dict, "bar", "pan");

printf("%s %s\n", (char )getItem(*dict, "foo"), (char )getItem(*dict, "bar"));

delItem(dict, "foo");
delItem(dict, "bar");

dictDealloc(dict);

return 0;
}

#endif


Related Solutions

Implement a dictionary application using C++ with the following features: Load a dictionary file. Given a...
Implement a dictionary application using C++ with the following features: Load a dictionary file. Given a prefix string that the user specifies, print the first word or all words in the dictionary with that string as their prefix. Given two strings A and B that the user specifies, replace all occurrences of A in the dictionary file with B. Spawning a new editor (e.g., vim) to allow the user to modify the dictionary file. Save the dictionary file afterwards. You...
Implement an application that will read data from an input file, interpret the data, and generate...
Implement an application that will read data from an input file, interpret the data, and generate the output to the screen. - The application will have two classes, Rectangle and Lab2ADriver. - Name your Eclipse project, Lab2A. Implement the Rectangle class with the following description. Rectangle Data fields -numRows: int -numCols: int -filled: Boolean Store the number of rows in the Rectangle Store the number of columns in the Rectangle Will define either a filled or unfilled rectangle True =...
The course is Data Structures and am using Javascript and Atom... QUESTION 1. Implement the dictionary...
The course is Data Structures and am using Javascript and Atom... QUESTION 1. Implement the dictionary data structure using the prototype. Run some tests that show that your code works. 2. Implement the hash table data structure using the prototypeRun some tests that show that your code works. 3. The book discusses linear probing, but their approach has a serious problem. What is the issue? 4. Complete the method below that adds all key-value pairs from one dictionary into another....
How would I create a nested dictionary given a csv file in Python? Say I want...
How would I create a nested dictionary given a csv file in Python? Say I want to make a dictionary that read {'country':{'China':'Fit', 'China':'Overweight', 'USA': 'Overweight', 'USA': 'Fit', 'England':'Fit'...}, 'category':{'Asian':'Fit', 'Caucasian': 'Overweight', 'Caucasian':'Overweight', 'Asian': 'Fit', 'Middle Eastern': 'Fit'...}} given a file that had country category Weight China Asian Fit China Caucasian Overweight USA Caucasian Overweight USA Asian Fit England Middle Eastern Fit... ... And so on in the file.
A, B:   Design and Implement a C# windows form application to ask the user for 10...
A, B:   Design and Implement a C# windows form application to ask the user for 10 integer numbers, sort them in ascending order and display the sorted list. Use bubble sort technique to sort the array elements and do not use any built-in sort method to sort the array elements.                                                        [02] C:    Test and evaluate your program by inputting variety of values.
A, B:    Design and Implement a C# windows form application to encrypt and decrypt text....
A, B:    Design and Implement a C# windows form application to encrypt and decrypt text. The application use to receive a string and display another encrypted string. The application also decrypt the encrypted string. The approach for encryption/decryption is simple one i.e. to encrypt we will add 1 to each character, so that "hello" would become "ifmmp", and to decrypt we would subtract 1 from each character.    C:   Test and evaluate application by applying different strings.      ...
Implement RPC mechanism for a file transfer across a network in ‘C’. **********run the program and...
Implement RPC mechanism for a file transfer across a network in ‘C’. **********run the program and screenshot************
WRITE A C++ PROGRAM TO IMPLEMENT THE CONCEPT OF INDEX (Create index in text file)
WRITE A C++ PROGRAM TO IMPLEMENT THE CONCEPT OF INDEX (Create index in text file)
How to make an application for windows using c# ?
How to make an application for windows using c# ?
Using C#, modify the codes below to do the following: Develop a polymorphic banking application using...
Using C#, modify the codes below to do the following: Develop a polymorphic banking application using the Account hierarchy created in the codes below. Create an array of Account references to SavingsAccount and CheckingAccount objects. For each Account in the array, allow the user to specify an amount of money to withdraw from the Account using method Debit and an amount of money to deposit into the Account using method Credit. As you process each Account, determine its type. If...
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT