cn internals
cn internals
Week-2
CRC
#include <stdio.h>
int data[10], gen[10], temp[10];
int dl, gl, c;
// Left shift function
void left_shift() {
for (int i = 0; i < gl - 1; i++) {
temp[i] = temp[i + 1];
}
temp[gl - 1] = (c < dl) ? data[c] : 0; // Add new bit or 0
}
// XOR operation function
void xor_operation() {
for (int i = 0; i < gl; i++) {
temp[i] = (gen[i] == temp[i]) ? 0 : 1;
}
}
int main() {
printf("1. Generate CRC\n2. Check CRC\nEnter choice: ");
int choice;
scanf("%d", &choice);
printf("Enter length of data: ");
scanf("%d", &dl);
printf("Enter data: ");
for (int i = 0; i < dl; i++)
scanf("%d", &data[i]);
printf("Enter length of generator: ");
scanf("%d", &gl);
printf("Enter generator: ");
for (int i = 0; i < gl; i++)
scanf("%d", &gen[i]);
for (int i = 0; i < gl; i++)
temp[i] = data[i];
if (choice == 1) {
for (c = 0; c < dl; c++) {
xor_operation();
left_shift();
}
printf("CRC: ");
for (int i = 0; i < gl - 1; i++)
printf("%d", temp[i]);
printf("\n");
}
return 0;
}
Week-3
sliding window protocol
#include <stdio.h>
int main() {
int w, f, i;
printf("Enter window size: ");
scanf("%d", &w);
printf("Enter number of frames to transmit: ");
scanf("%d", &f);
int frames[f]; // Declare the array after reading f
printf("Enter %d frames: ", f);
for(i = 0; i < f; i++) {
scanf("%d", &frames[i]);
}
printf("\nTransmitting frames:\n");
for(i = 0; i < f; i++) {
printf("%d ", frames[i]);
if((i + 1) % w == 0 || i == f - 1) {
printf("\nAcknowledgement received\n");
}
}
return 0;
}
Week-4
#include <stdio.h>
#include <limits.h>
#define V 5
int minDistance(int dist[], int sptSet[]) {
int min = INT_MAX, min_index;
for (int v = 0; v < V; v++)
if (!sptSet[v] && dist[v] <= min) min = dist[v],
min_index = v;
return min_index;
}
void dijkstra(int graph[V][V], int src) {
int dist[V], sptSet[V] = {0};
for (int i = 0; i < V; i++) dist[i] = INT_MAX;
dist[src] = 0;
for (int count = 0; count < V - 1; count++) {
int u = minDistance(dist, sptSet);
sptSet[u] = 1;
for (int v = 0; v < V; v++)
if (!sptSet[v] && graph[u][v] && dist[u] != INT_MAX && dist[u] +
graph[u][v] < dist[v])
dist[v] = dist[u] + graph[u][v];
}
printf("Vertex \t Distance from Source\n");
for (int i = 0; i < V; i++) printf("%d \t %d\n", i, dist[i]);
}
int main() {
int graph[V][V];
int src;
printf("Enter the adjacency matrix for the graph (%dx%d):\n", V, V);
for (int i = 0; i < V; i++) {
for (int j = 0; j < V; j++) {
scanf("%d", &graph[i][j]);
}
}
printf("Enter the source vertex (0 to %d): ", V - 1);
scanf("%d", &src);
if (src < 0 || src >= V) {
printf("Invalid source vertex!\n");
return 1;
}
dijkstra(graph, src);
return 0;
}
Week-5
#include <stdio.h>
int a[10][10], n;
void printAdj(int root) {
printf("Adjacent nodes of %d:\n", root);
for (int j = 1; j <= n; j++)
if (a[root][j]) printf("%d\t", j);
printf("\n");
}
int main() {
printf("Enter number of nodes: ");
scanf("%d", &n);
printf("Enter adjacency matrix:\n");
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
scanf("%d", &a[i][j]);
int root;
printf("Enter root node: ");
scanf("%d", &root);
printAdj(root);
return 0;
}
Week-6
#include<stdio.h>
struct node
{ unsigned dist[20], from[20];
}rt[10];
int main()
{
int dmat[20][20];
int n,i,j,k,count=0;
printf("\nEnter the number of nodes : ");
scanf("%d",&n);
printf("\nEnter the cost matrix :\n");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
scanf("%d",&dmat[i][j]);
dmat[i][i]=0;
rt[i].dist[j]=dmat[i][j];
rt[i].from[j]=j;
}
do
{
count=0;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
for(k=0;k<n;k++)
if(rt[i].dist[j]>dmat[i][k]+rt[k].dist[j])
{ rt[i].dist[j]=rt[i].dist[k]+rt[k].dist[j];
rt[i].from[j]=k;
count++;
}
}while(count!=0);
for(i=0;i<n;i++)
{
printf("\n\nState value for router %d is \n",i+1);
for(j=0;j<n;j++) {
printf("\t\nnode %d via %d Distance%d",j+1,rt[i].from[j]+1,rt[i].dist[j]);
}
}
printf("\n\n");
}
Week-7
#include <stdio.h>
#include <string.h>
void transform(char *text, int shift) {
for (int i = 0; text[i]; i++) {
char ch = text[i];
if (ch >= 'a' && ch <= 'z') text[i] = (ch - 'a' + shift) % 26 + 'a';
else if (ch >= 'A' && ch <= 'Z') text[i] = (ch - 'A' + shift) % 26 + 'A';
}
}
int main() {
char text[100];
int shift;
printf("Enter text: ");
fgets(text, sizeof(text), stdin);
text[strcspn(text, "\n")] = 0;
printf("Enter shift value (1-25): ");
scanf("%d", &shift);
transform(text, shift);
printf("Encrypted text: %s\n", text);
transform(text, 26 - shift);
printf("Decrypted text: %s\n", text);
return 0;
}
Week-8
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#define MAX_PACKETS 5
int main() {
int p[MAX_PACKETS], i, b, r = 0, o;
for (i = 0; i < MAX_PACKETS; i++)
p[i] = rand() % 10 + 1;
printf("Enter output rate and bucket size: ");
scanf("%d %d", &o, &b);
for (i = 0; i < MAX_PACKETS; i++) {
int s = p[i];
if (r + s > b)
printf("Packet %d exceeds bucket capacity\n", s);
else {
r += s;
printf("Incoming packet: %d, Remaining: %d\n", s, r);
for (int t = 0; t < 3; t++) { // Simulate 3 seconds
sleep(1);
if (r > 0) {
int x = (r < o) ? r : o;
r -= x;
printf("Transmitted %d bytes, Remaining: %d bytes\n", x, r);
} else
printf("No packets to transmit\n");
}
}
}
return 0;
}
Week-9
#include <stdio.h>
#include <stdlib.h>
#define MAX 10
struct Frame {
int seq;
char info[20];
};
struct Frame f[MAX];
int n;
void sort() {
for (int i = 0; i < n - 1; i++)
for (int j = 0; j < n - i - 1; j++)
if (f[j].seq > f[j + 1].seq) {
struct Frame temp = f[j];
f[j] = f[j + 1];
f[j + 1] = temp;
}
}
int main() {
printf("Enter number of frames (max %d): ", MAX);
scanf("%d", &n);
for (int i = 0; i < n; i++) {
f[i].seq = rand() % 50;
printf("Enter data for seq %d: ", f[i].seq);
scanf("%s", f[i].info);
}
sort();
printf("\nSorted frames:\n");
for (int i = 0; i < n; i++)
printf("%d\t%s\n", f[i].seq, f[i].info);
return 0;
}