Skip to content

Instantly share code, notes, and snippets.

@tomrockdsouza
Last active December 27, 2024 13:40
Show Gist options
  • Save tomrockdsouza/abd1165be4e835d22f4e6ccdc6092aef to your computer and use it in GitHub Desktop.
Save tomrockdsouza/abd1165be4e835d22f4e6ccdc6092aef to your computer and use it in GitHub Desktop.
C Stimulation of Bully Algorithm
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int random_number(int min_num, int max_num) {
int result = 0, low_num = 0, hi_num = 0;
if (min_num < max_num) {
low_num = min_num;
hi_num = max_num + 1; // include max_num in output
} else {
low_num = max_num + 1; // include max_num in output
hi_num = min_num;
}
srand(time(NULL));
result = (rand() % (hi_num - low_num)) + low_num;
return result;
}
void main() {
int a[10], n, i, x, u, b[10], m = 0;
printf("Enter The number of nodes");
scanf("%d", & n);
for (i = 0; i < n; i++) {
printf("Enter state of node %d (0=dead/1=alive): ", i + 1);
scanf("%d", & a[i]);
}
printf("List of alive Nodes:");
for (i = 0; i < n; i++) {
if (a[i] > 0) {
b[m] = i;
printf("%d ", b[m] + 1);
m++;
}
}
printf("\nEnter the node that didn't get the reply from the above nodes:");
scanf("%d", & x);
for (i = 0; i < m; i++) {
if (x - 1 == b[i]) {
x = i;
break;
}
}
while (x != m - 1) {
printf("Broadcasting Election message from %d to: ", b[x] + 1);
for (i = b[x] + 2; i < n + 1; i++) {
printf("%d ", i);
}
x = random_number(x + 1, m - 1);
printf("\nNew node is %d with fastest response\"I'm alive\"\n", b[x] + 1);
}
printf("Broadcasting Election message from %d to: ", b[x] + 1);
for (i = b[x] + 2; i < n + 1; i++) {
printf("%d ", i);
}
printf("\nNo Message Returned\nNode %d is Declaring itself as the co-ordinator", b[x] + 1);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment