Program to implement Distance Vector Routing
#include<stdio.h> #include<conio.h> void main() { int i = 0, a[5], b[5], c[5], d[5], e[5], ab[5]; int ac[5], ad[5], ao[5], ba[5], bc[5], be[5]; int bo[5], ca[5], cb[5], ce[5], co[5], da[5]; int ec[5], eb[5], eo[5], dop[5]; char node[5]={'A', 'B', 'C', 'D', 'E'}; clrscr(); printf(" *** DISTANCE VECTOR ROUTING *** \n\n\n"); printf("\n Enter values for 'a':\n"); for(i = 0; i < 5; i++) scanf("%d", &a[i]); printf("\n Enter the values for ‘b’:\n "); for(i = 0; i < 5; i++) scanf("%d", &b[i]); printf("\n Enter the values for ‘c’:\n "); for(i = 0; i < 5; i++) scanf("%d", &c[i]); printf("\n Enter the values for ‘d’:\n "); for(i = 0; i < 5; i++) scanf("%d", &d[i]); printf("\n Enter the values for ‘e’:\n "); for(i = 0; i < 5; i++) scanf("%d", &e[i]); printf("\n\n THE ROUTERS TABLE WITH OPTIMUM VALUES:\n"); printf(" \t ------------------------------------ \n"); printf("\t A \t B \t C \t D\t E\n"); printf(" \t ------------------------------------ \n"); printf("%c\t", node[0]); for(i = 0; i < 5; i++) { ab[i] = a[1] + b[i]; ac[i] = a[2] + c[i]; ad[i] = a[3] + d[i]; } for(i = 0; i < 5; i++) { if(a[i] < ab[i] && a[i] < ac[i] &&a[i] < ad[i]) ao[i] = a[i]; else if(ab[i] < ac[i] && ab[i] < ad[i]) ao[i] = ab[i]; else if(ac[i] < ad[i]) ao[i] = ac[i]; else ao[i] = ad[i]; printf("%d\t", ao[i]); } printf("\n %c \t ", node[1]); for(i = 0; i < 5; i++) { ba[i] = b[0] + ao[i]; bc[i] = b[2] + c[i]; be[i] = b[4] + e[i]; } for(i = 0; i < 5; i++) { if(b[i] < ba[i] && b[i] < bc[i] && b[i] < be[i]) bo[i] = b[i]; else if(ba[i] < bc[i] && ba[i] < be[i]) bo[i] = ba[i]; else if(bc[i] < be[i]) bo[i] = bc[i]; else bo[i] = be[i]; printf("%d\t", bo[i]); } printf("\n%c\t", node[2]); for(i = 0; i < 5; i++) { ca[i] = c[0] + ao[i]; cb[i] = c[1] + bo[i]; ce[i] = c[4] + e[i]; } for(i = 0; i < 5; i++) { if(c[i] < ca[i] && c[i] < cb[i] && c[i] < ce[i]) co[i] = c[i]; else if(ca[i] < cb[i] && ca[i] < ce[i]) co[i] = ca[i]; else if(cb[i] < ce[i]) co[i] = cb[i]; else co[i] = ce[i]; printf("%d\t", co[i]); } printf("\n %c \t", node[3]); for(i = 0; i < 5; i++) da[i] = d[0] + ao[i]; for(i = 0; i < 5; i++) { if(d[i] < da[i]) dop[i] = d[i]; else dop[i] = da[i]; printf("%d\t", dop[i]); } printf("\n%c\t", node[4]); for(i = 0; i < 5; i++) { ec[i] = e[2] + co[i]; eb[i] = e[1] + bo[i]; } for(i = 0; i < 5; i++) { if(e[i] < ec[i] && e[i] < eb[i]) eo[i] = e[i]; else if(ec[i] < eb[i]) eo[i] = ec[i]; else eo[i] = eb[i]; printf("%d\t", eo[i]); } printf("\n\t--------------------------- \n"); printf("\n OPTIMUM COST FROM ROUTER-A TO ROUTER-E:"); printf("%d", ao[4]); getch(); }
Output:
*** DISTANCE VECTOR ROUTING *** Enter the values for ‘a’: 0 5 2 3 6 Enter the values for ‘b’: 5 0 4 8 3 Enter the values for ‘c’: 2 4 0 5 4 Enter the values for ‘d’: 3 8 5 0 9 Enter the values for ‘e’: 6 3 4 9 0 THE ROUTERS TABLE WITH OPTIMUM VALUES ------------------------------ A B C D E ------------------------------ A 0 5 2 3 6 B 5 0 4 8 3 C 2 4 0 5 4 D 3 8 5 0 9 E 6 3 4 9 0 ------------------------------ THE OPTIMUM COST FROM ROUTER-A TO ROUTER-E: 6
-
UpdatedNov 05, 2014
-
Views4,639