Friday, December 22, 2023

OS- First Come First Serve - FCFS Scheduling

 #include <stdio.h>

int main()

{

    int pid[15];

    int bt[15];

    int n,i;

    printf("Enter the number of processes: ");

    scanf("%d",&n);

 

    printf("Enter process id of all the processes: ");

    for(i=0;i<n;i++)

    {

        scanf("%d",&pid[i]);

    }

 

    printf("Enter burst time of all the processes: ");

    for( i=0;i<n;i++)

    {

        scanf("%d",&bt[i]);

    }

 

    int wt[n];

    wt[0]=0;

 

    //for calculating waiting time of each process

    for(i=1; i<n; i++)

    {

        wt[i]= bt[i-1]+ wt[i-1];

    }

 

    printf("Process ID     Burst Time     Waiting Time     TurnAround Time\n");

    float twt=0.0;

    float tat= 0.0;

    for(i=0; i<n; i++)

    {

        printf("%d\t\t", pid[i]);

        printf("%d\t\t", bt[i]);

        printf("%d\t\t", wt[i]);

 

        //calculating and printing turnaround time of each process

        printf("%d\t\t", bt[i]+wt[i]);

        printf("\n");

 

        //for calculating total waiting time

        twt += wt[i];

 

        //for calculating total turnaround time

        tat += (wt[i]+bt[i]);

    }

    float att,awt;

 

    //for calculating average waiting time

    awt = twt/n;

 

    //for calculating average turnaround time

    att = tat/n;

    printf("Avg. waiting time= %f\n",awt);

    printf("Avg. turnaround time= %f",att);

}

Sunday, December 17, 2023

Program run command in Linux(Ubuntu)

 For Cpp

Create- gedit filename.cpp

Compile- g++ filename.cpp

Run- ./a.out


For C

Create- gedit filename.c

Compile- gcc filename.c

Run- ./a.out



For Java

Create- gedit filename.java

Compile- javac filename.java

Run- java filename



For python

Create- gedit filename.py

python3 filename.py  //only interpreter is used in python

Infix to prefix conversion

 ALGORITHM:

STEP 1:

Add " ( " at the beginning of the infix expression and then reverse.

STEP 2:

Push " ) " on to the stack.

STEP 3:

Scan every character and repeat step 4 to step 7 until " ( " is encountered.

STEP 4:

If input is operand add in the output.

STEP 5:

If input is " ) " push into the stack.

STEP 6:

If input is "(" pop all the operators from the stack and add in the output one by one until ")" is popped.

STEP 7:

If input is operator pop all the stack which is higher precedence than input operator .Push input operator into the stack.

STEP 8:

Reverse the output


EXAMPLE:



Infix to postfix conversion

 Step 1: Add " ) " to the end of the infix expression 

Step 2: Push " ( " on to the stack 

Step 3: Repeat until each character in the infix notation is scanned 

            - IF a " ( " is encountered, push it on the stack IF an operand (whether a digit or a character) is                      encountered, add it postfix expression. 

            - IF a " ) " is encountered, then 

                       a. Repeatedly pop from stack and add it to the postfix expression until a " ( " is                                             encountered. 

                       b. Discard the " ( " . That is, remove the " ( " from stack and do not add it to the postfix                              expression. 

           - IF an operator is encountered, then 

                      a. Repeatedly pop from stack and add each operator (popped from the stack) to the postfix expression which has the same precedence or a higher precedence than  0 .

                      b. Push the operator to the stack [END OF IF] 

Step 4: Repeatedly pop from the stack and add it to the postfix expression until the stack is empty 

Step 5: EXIT

Linked list push-pop

 #include<stdio.h>

#include<stdlib.h>


struct node {

    int data;

    struct node* link;

};


struct node* top = NULL;


void push() {

    struct node* temp = (struct node*) malloc(sizeof(struct node));

    printf("Enter a value: ");

    scanf("%d", &temp->data);

    temp->link = top;

    top = temp;

}


void pop() {

    if (top == NULL) {

        printf("Stack underflow\n");

    } else {

        struct node* temp = top;

        top = top->link;

        printf("Popped value = %d\n", temp->data);

        free(temp);

    }

}


void display() {

    if (top == NULL) {

        printf("Empty stack\n");

    } else {

        struct node* temp = top;

        while (temp != NULL) {

            printf("%d ", temp->data);

            temp = temp->link;

        }

        printf("\n");

    }

}


int main() {

    int choice;

    while (1) {

        printf("Enter 1 for push\n");

        printf("Enter 2 for pop\n");

        printf("Enter 3 for display\n");

        printf("Enter 4 for exit\n");

        printf("Enter your choice: ");

        scanf("%d", &choice);

        switch (choice) {

            case 1:

                push();

                break;

            case 2:

                pop();

                break;

            case 3:

                display();

                break;

            case 4:

                printf("Exiting the program\n");

                exit(0);

            default:

                printf("Wrong choice\n");

        }

    }

    return 0;

}

Array Insertion deletion

  #include<iostream>


using namespace std;




class array


{


int a[30], n;


public:


void input()


{


cout<<"Enter the length: ";


cin>>n;


cout<<"Enter a value for the array "<<endl;


for(int i=0; i<n; i++)


cin>>a[i];


}


void insert_begin()


{


int value;


cout<<"Enter a value for insertion at the front "<<endl;


cin>>value;


n=n+1;


for(int i=n-1; i>=1; i--)


{


a[i]=a[i-1];


}


a[0]=value;


}


void insert_end()


{


int value;


cout<<"Enter a value for insertion at the end "<<endl;


cin>>value;


n=n+1;


a[n-1]=value;


}


void insert_position()


{


int pos;


cout<<"Enter the position "<<endl;


cin>>pos;


int value;


cout<<"Enter the value "<<endl;


cin>>value;


for(int i=n-1; i>=pos; i--)


{


a[i]=a[i-1];


}


a[pos-1]=value;


}


void display()


{


cout<<"The value of array "<<endl;


for(int i=0; i<n; i++)


cout<<a[i]<<" ";


cout<<endl;


}


void delete_begin()


{


int value;


value=a[0];


cout<<"The deleted value is "<<value<<endl;


for(int i=1; i<=n-1; i++)


{


a[i-1]=a[i];


}


n=n-1;


}


void delete_end()


{


int value;


value=a[n-1];


cout<<"The deleted value is "<<value<<endl;


n=n-1;


}


void delete_position()


{


int value, pos;


cout<<"Enter position "<<endl;


cin>>pos;


value=a[pos-1];


cout<<"The deleted value is "<<value<<endl;


for(int i=pos; i<=n-1; i++)


{


a[i-1]=a[i];


}


n=n-1;


}



};




int main()


{


array ob;


ob.input();


while(1)


{


cout<<"Enter 1 for displaying array "<<endl;


cout<<"Enter 2 for inserting element at the front "<<endl;


cout<<"Enter 3 for inserting element at the end "<<endl;


cout<<"Enter 4 for inserting element at the given position "<<endl;


cout<<"Enter 5 for deleting element from the front "<<endl;


cout<<"Enter 6 for deleting element from the end "<<endl;


cout<<"Enter 7 for deleting element from a given position "<<endl;


cout<<"Enter 8 for exit "<<endl;



int choice;


cin>>choice;


switch(choice)


{


case 1: 


ob.display();


break;



case 2:


cout<<"\nValue before insertion\n";


ob.display();


ob.insert_begin();


cout<<"\nValue after insertion\n";


ob.display();


break;



case 3:


cout<<"\nValue before insertion\n";


ob.display();


ob.insert_end();


cout<<"\nValue after insertion\n";


ob.display();


break;



case 4:


cout<<"\nValue before insertion\n";


ob.display();


ob.insert_position();


cout<<"\nValue after insertion\n";


ob.display();


break;



case 5:


cout<<"\nValue before deletion\n";


ob.display();


ob.delete_begin();


cout<<"\nValue after deletion\n";


ob.display();


break;



case 6:


cout<<"\nValue before deletion\n";


ob.display();


ob.delete_end();


cout<<"\nValue after deletion\n";


ob.display();


break;



case 7:


cout<<"\nValue before deletion\n";


ob.display();


ob.delete_position();


cout<<"\nValue after deletion\n";


ob.display();


break;



case 8:


cout<<"Exit from program";


break;



default:


cout<<"Enter a valid choice\n";


}


if(choice==8)


break;


}


return 0;


}

 





Sparse Matrix

 #include<iostream>

using namespace std;


int main()

{

int a[10][10],row,col,count=0,i,j,k=1;

int s[10][3];

cout<<"total number of row";

cout<<"total number of column";

cin>>row;

cin>>col;

cout<<"enter value";

for(i=0;i<row;i++)

{

for(j=0;j<col;j++)

{

cin>>a[i][j];

}

}

cout<<"matrix element\n";

for(i=0;i<row;i++)

{

for(j=0;j<col;j++)

{

cout<<a[i][j]<<" ";

}

cout<<"\n";

}

//count total number of nonzero elements

for(i=0;i<row;i++)

{

for(j=0;j<col;j++)

{

if(a[i][j]!=0)

{

count++;

}

}

}

cout<<count;

s[0][0]=row;

s[0][1]=col;

s[0][2]=count;

for(i=0;i<row;i++)

{

for(j=0;j<col;j++)

{

if(a[i][j]!=0)

{

s[k][0]=i;

s[k][1]=j;

s[k][2]=a[i][j];

k++;

}

}

}

cout<<"\n output array \n";

for(i=0;i<count+1;i++)

{

for(j=0;j<3;j++)

{

  cout<<s[i][j]<<" ";

}

cout<<"\n";

}

}

A physicist confesses that the electron is round and that Jesus rose from the dead. (Bengali)

একজন পদার্থবিজ্ঞানী স্বীকার করেন যে ইলেকট্রন গোলাকার এবং যিশু মৃতদের মধ্য থেকে পুনরুত্থিত হয়েছিলেন। আমার নিজের বিশ্বাস প্রমাণ দ্বারা প্রভাব...