Challenge

Project 1 - Creation of user defined data type to implement the user interfaces for working with ‘Set’ (Mathematical Set theory) using Linked List

#include

#include

#define MAX_SIZE 100

// Structure to hold a set

typedef struct {

int elements[MAX_SIZE];

int size;

} Set;

// Function prototypes

Set unionSet(const Set *set1, const Set *set2);

Set intersectSet(const Set *set1, const Set *set2);

void inputSet(Set *set);

void printSet(const Set *set);

int main() {

Set set1, set2, unionSetResult, intersectSetResult;

printf("Enter elements of first set (enter -1 to stop):\n");

inputSet(&set1);

printf("Enter elements of second set (enter -1 to stop):\n");

inputSet(&set2);

unionSetResult = unionSet(&set1, &set2);

intersectSetResult = intersectSet(&set1, &set2);

printf("\nUnion of the two sets:\n");

printSet(&unionSetResult);

printf("\nIntersection of the two sets:\n");

printSet(&intersectSetResult);

return 0;

}

// Function to compute the union of two sets

Set unionSet(const Set *set1, const Set *set2) {

Set resultSet = {{0}, 0};

int i;

for (i = 0; i < set1->size; ++i) {

resultSet.elements[i] = set1->elements[i];

resultSet.size++;

}

for (i = 0; i < set2->size; ++i) {

int exists = 0, j;

for (j = 0; j < resultSet.size; ++j) {

if (set2->elements[i] == resultSet.elements[j]) {

exists = 1;

break;

}

}

if (!exists) {

resultSet.elements[resultSet.size] = set2->elements[i];

resultSet.size++;

}

}

return resultSet;

}

// Function to compute the intersection of two sets

Set intersectSet(const Set *set1, const Set *set2) {

Set resultSet = {{0}, 0};

int i, j;

for (i = 0; i < set1->size; ++i) {

for (j = 0; j < set2->size; ++j) {

if (set1->elements[i] == set2->elements[j]) {

resultSet.elements[resultSet.size] = set1->elements[i];

resultSet.size++;

break;

}

}

}

return resultSet;

}

// Function to take input for a set from user

void inputSet(Set *set) {

set->size = 0;

int element;

do {

scanf("%d", &element);

if (element != -1) {

set->elements[set->size] = element;

set->size++;

}

} while (element != -1 && set->size < MAX_SIZE);

}

// Function to print elements of a set

void printSet(const Set *set) {

if (set->size == 0) {

printf("Empty set\n");

} else {

int i;

printf("{ ");

for (i = 0; i < set->size; ++i) {

printf("%d ", set->elements[i]);

}

printf("}\n");

}

}

Your portfolio, next

Ship work like this
in your own course.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.