fork download
  1.  
  2. #include <iostream>
  3. #include <stdlib.h>
  4. #include <cmath>
  5. #include <cstdlib>
  6. #include <ctime>
  7.  
  8. using namespace std;
  9.  
  10. const int N = 10;
  11. const int M = 20;
  12. const int WAIT = 1;
  13. const int RECEIVED = 2;
  14. const int SENDING = 3;
  15. const int DONE = 4;
  16.  
  17. void initialse(int nodes[][N]){
  18. /*
  19.   This function sets all values in nodes to WAIT; then it randomly choses
  20.   an entry an initialises it to RECEIVED.
  21.   */
  22. for(int i=0;i<N;i++){
  23. for(int j=0;j<N;j++){
  24. nodes[i][j]=WAIT;
  25. }
  26. }
  27. int a, b;
  28. srand(time(0));
  29. a = rand()%N;
  30. b = rand()%N;
  31. nodes[a][b] = RECEIVED;
  32. }
  33.  
  34. void display(int nodes[][N]){
  35. /*
  36.   This function prints the values of nodes to screen, row by row,
  37.   and column by column as a matrix.
  38.   */
  39. for(int a=0;a<N;a++){
  40. for(int b=0;b<N;b++){
  41. cout<<nodes[a][b];
  42. }
  43. cout << endl;
  44. }
  45.  
  46. }
  47.  
  48.  
  49. bool neigbour_sends(int nodes[][N],int i,int j){
  50. /*
  51.   This function checks if on of the neighbors is sending. If there is
  52.   it will return true.
  53.   */
  54.  
  55.  
  56. if(i-1>=0 && nodes[i-1][j]==SENDING){
  57. //Exercise 6: Add comment here
  58. return true;
  59. }
  60. else if(j-1>=0 && nodes[i][j-1]==SENDING){
  61. //Exercise 6: Add comment here
  62. return true;
  63. }
  64. else if(i+1<N && nodes[i+1][j]==SENDING){
  65. //Exercise 6: Add comment here
  66. return true;
  67. }
  68. else if(j+1<N && nodes[i][j+1]==SENDING){
  69. //Exercise 6: Add comment here
  70. return true;
  71. }
  72. else {
  73. //Exercise 6: Add comment here
  74. return false;
  75. }
  76.  
  77. }
  78.  
  79. void sent2done(int nodes[][N]){
  80. /*
  81.   This function sets all nodes with the value SENDING to value DONE.
  82.   */
  83. //Exercise 6: Please implement this function.
  84. for(int i=0;i<N;i++){
  85. for(int j=0;j<N;j++){
  86. nodes [i][j] = DONE;
  87. }
  88. }
  89.  
  90. }
  91. void received2sending(int nodes[][N]){
  92. /*
  93.   This function sets all nodes with the value RECEIVED to value SENDING.
  94.   */
  95. //Exercise 6: Please implement this function.
  96. for(int i=0;i<N;i++){
  97. for(int j=0;j<N;j++){
  98. nodes[i][j] = SENDING;
  99.  
  100. }
  101. }
  102. }
  103.  
  104. void wait2received(int nodes[][N]){
  105. /*
  106.   This function sets all nodes with the value WAIT to value RECEIVED, if they
  107.   have a neighbor that has value SENDING.
  108.   */
  109.  
  110. for(int i=0;i<N;i++){
  111. for(int j=0;j<N;j++){
  112. if(i+1 == SENDING || i-1 == SENDING || j+1 == SENDING || j-1 == SENDING)
  113. {
  114. nodes[i][j] = RECEIVED;
  115. }
  116. }
  117. }
  118. }
  119.  
  120. int main() {
  121. /*
  122.   This main function intialises nodes, and displays it
  123.   */
  124. srand(time(0));
  125. int nodes[N][N];
  126.  
  127. initialse(nodes);
  128. display(nodes);
  129. cout << "\nInitial network state \n\n ";
  130. system("pause");
  131.  
  132.  
  133. for(int i=0;i<M;i++){
  134. sent2done(nodes);
  135. received2sending(nodes);
  136. wait2received(nodes);
  137. display(nodes);
  138. cout <<"\n\nIteration:\t"<< i << "\n\n";
  139. system("pause");
  140.  
  141. }
  142.  
  143.  
  144. return 0;
  145.  
  146. }
  147.  
Success #stdin #stdout 0.07s 5268KB
stdin
Standard input is empty
stdout
1111111111
1111111111
1111111121
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111

Initial network state 

 3323233333
3323233333
2222222222
3323233333
2222222222
3323233333
3323233333
3323233333
3323233333
3323233333


Iteration:	0

3323233333
3323233333
2222222222
3323233333
2222222222
3323233333
3323233333
3323233333
3323233333
3323233333


Iteration:	1

3323233333
3323233333
2222222222
3323233333
2222222222
3323233333
3323233333
3323233333
3323233333
3323233333


Iteration:	2

3323233333
3323233333
2222222222
3323233333
2222222222
3323233333
3323233333
3323233333
3323233333
3323233333


Iteration:	3

3323233333
3323233333
2222222222
3323233333
2222222222
3323233333
3323233333
3323233333
3323233333
3323233333


Iteration:	4

3323233333
3323233333
2222222222
3323233333
2222222222
3323233333
3323233333
3323233333
3323233333
3323233333


Iteration:	5

3323233333
3323233333
2222222222
3323233333
2222222222
3323233333
3323233333
3323233333
3323233333
3323233333


Iteration:	6

3323233333
3323233333
2222222222
3323233333
2222222222
3323233333
3323233333
3323233333
3323233333
3323233333


Iteration:	7

3323233333
3323233333
2222222222
3323233333
2222222222
3323233333
3323233333
3323233333
3323233333
3323233333


Iteration:	8

3323233333
3323233333
2222222222
3323233333
2222222222
3323233333
3323233333
3323233333
3323233333
3323233333


Iteration:	9

3323233333
3323233333
2222222222
3323233333
2222222222
3323233333
3323233333
3323233333
3323233333
3323233333


Iteration:	10

3323233333
3323233333
2222222222
3323233333
2222222222
3323233333
3323233333
3323233333
3323233333
3323233333


Iteration:	11

3323233333
3323233333
2222222222
3323233333
2222222222
3323233333
3323233333
3323233333
3323233333
3323233333


Iteration:	12

3323233333
3323233333
2222222222
3323233333
2222222222
3323233333
3323233333
3323233333
3323233333
3323233333


Iteration:	13

3323233333
3323233333
2222222222
3323233333
2222222222
3323233333
3323233333
3323233333
3323233333
3323233333


Iteration:	14

3323233333
3323233333
2222222222
3323233333
2222222222
3323233333
3323233333
3323233333
3323233333
3323233333


Iteration:	15

3323233333
3323233333
2222222222
3323233333
2222222222
3323233333
3323233333
3323233333
3323233333
3323233333


Iteration:	16

3323233333
3323233333
2222222222
3323233333
2222222222
3323233333
3323233333
3323233333
3323233333
3323233333


Iteration:	17

3323233333
3323233333
2222222222
3323233333
2222222222
3323233333
3323233333
3323233333
3323233333
3323233333


Iteration:	18

3323233333
3323233333
2222222222
3323233333
2222222222
3323233333
3323233333
3323233333
3323233333
3323233333


Iteration:	19