Showing posts with label C Program. Show all posts
Showing posts with label C Program. Show all posts

Monday, 3 November 2014

C Program to perform all base conversions in Binary, Decimal, Hexadecimal & Octal number systems

#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<ctype.h>
#include<math.h>
void func1(int);
void func2(int);
void func3(int);
void func4(int);
void func5(int);
void func6(int);
void func7(char ar[],int);
void func8(char ar[],int);
void func9(char ar[],int);
void func10(int);
void func11(int);
void func12(int);
int a,c,sum=0,i,u,l;
main()
{     int ch,k,g=0;
      char cho='Y';
      printf("Welcome!!\n\a");
      while(toupper(cho)=='Y')
      {
      printf("\a\nPress->\n\n1:Binary to Decimal\n2:Decimal to Binary\n3:Octal to Decimal\n4:Decimal to Octal\n5:Octal to Binary\n6:Binary to Octal\n7:Hexadecimal to Decimal\n8:Hexadecimal to Binary\n9:Hexadecimal to Octal\n10:Binary to Hexadecimal\n11:Decimal to Hexadecimal\n12:Octal to Hexadecimal\n\n");
      printf("You pressed : ");
      scanf("%d",&ch);
      printf("\a");
      switch(ch)
      {
                case 1:{
                     printf("Enter Binary Number:");
                     scanf("%d",&a);
                     k=a;
                     while(k!=0)
                     {
                     if(k!=0)
                     {
                     if((k%10)!=0 && (k%10)!=1)
                     {
                     printf("\n\nYou entered a non Binary number!\n\a\a\a");
                     l=1;
                     break;
                     }
                     k/=10;
                     }
                     }
                     if(l!=1)
                     {
                     printf("\a");
                     func1(a);
                     }
                     }
                break;
                case 2:{
                     printf("Enter Decimal Number:");
                     scanf("%d",&a);
                     printf("\a");
                     func2(a);
                     }
                break;
                case 3:{
                     printf("Enter Octal Number:");
                     scanf("%d",&a);
                     k=a;
                     while(k!=0)
                     {
                     if(k!=0)
                     {
                     if((k%10)>7)
                     {
                     printf("\n\nYou entered a non Octal number!\n\a\a\a");
                     break;
                     }
                     k/=10;
                     }
                     else
                     {
                     printf("\a");
                     func3(a);
                     }
                     }
                     }
                break;
                case 4:{
                     printf("Enter Decimal Number:");
                     scanf("%d",&a);
                     printf("\a");
                     func4(a);
                     }
                break;
                case 5:{
                     printf("Enter Octal Number:");
                     scanf("%d",&a);
                     k=a;
                     while(k!=0)
                     {
                     if(k!=0)
                     {
                     if((k%10)>7)
                     {
                     printf("\n\nYou entered a non Octal number!\n\a\a\a");
                     break;
                     }
                     k/=10;
                     }
                     else
                     {
                     printf("\a");
                     func5(a);
                     }
                     }
                     }
                break;
                case 6:{
                     printf("Enter Binary Number:");
                     scanf("%d",&a);
                      k=a;
                     while(k!=0)
                     {
                     if(k!=0)
                     {
                     if((k%10)!=0 && (k%10)!=1)
                     {
                     printf("\n\nYou entered a non Binary number!\n\a\a\a");
                     l=1;
                     break;
                     }
                     k/=10;
                     }
                     }
                     if(l!=1)
                     {
                     printf("\a");
                     func6(a);
                     }
                     }
                break;
                case 7:{
                     char ar[5];
                     int n=0,j;
                     printf("Enter Hexadecimal Number:");
                     printf("\nEnter number of characters in Hexadecimal Number:");
                     scanf("%d",&n);
                     printf("\a");
                     fflush(stdin);
                     printf("\nEnter Hexadecimal characters separated with spaces:");
                     for(j=0;j<n;j++)
                     {
                     scanf("%s",&ar[j]);
                     printf("\a");
                     }
                     fflush(stdin);
                     u=-1;
                     while(ar[++u]!='\0')
                     {
                     if(toupper(ar[u])!='A' && toupper(ar[u])!='B' && toupper(ar[u])!='C' && toupper(ar[u])!='D' && toupper(ar[u])!='E' && toupper(ar[u])!='F' && ar[u]!='0' && ar[u]!='1' && ar[u]!='2' && ar[u]!='3' && ar[u]!='4' && ar[u]!='5' && ar[u]!='6' && ar[u]!='7' && ar[u]!='8' && ar[u]!='9')
                     {
                     printf("\n\nYou entered a non Hexadecimal number!\nProgram will now EXIT...\a\a\a");
                     getch();
                     return 0;
                     }
                     }
                     printf("\a");
                     func7(ar,n);
                     }
                break;
                case 8:{
                     char ar[5];
                     int n=0,j;
                     printf("Enter Hexadecimal Number:");
                     printf("\nEnter number of characters in Hexadecimal Number:");
                     scanf("%d",&n);
                     printf("\a");
                     printf("\nEnter Hexadecimal characters separated with spaces:");
                     for(j=0;j<n;j++)
                     {
                     scanf("%s",&ar[j]);
                     }
                     fflush(stdin);
                     u=-1;
                     while(ar[++u]!='\0')
                     {
                     if(toupper(ar[u])!='A' && toupper(ar[u])!='B' && toupper(ar[u])!='C' && toupper(ar[u])!='D' && toupper(ar[u])!='E' && toupper(ar[u])!='F' && ar[u]!='0' && ar[u]!='1' && ar[u]!='2' && ar[u]!='3' && ar[u]!='4' && ar[u]!='5' && ar[u]!='6' && ar[u]!='7' && ar[u]!='8' && ar[u]!='9')
                     {
                     printf("\n\nYou entered a non Hexadecimal number!\nProgram will now EXIT...\a\a\a");
                     getch();
                     return 0;
                     }
                     }
                     printf("\a");
                     func8(ar,n);
                     }
                break;
                case 9:{
                     char ar[5];
                     int n=0,j;
                     printf("Enter Hexadecimal Number:");
                     printf("\nEnter number of characters in Hexadecimal Number:");
                     scanf("%d",&n);
                     printf("\a");
                     printf("\nEnter Hexadecimal characters separated with spaces:");
                     for(j=0;j<n;j++)
                     {
                     scanf("%s",&ar[j]);
                     }
                     u=-1;
                     while(ar[++u]!='\0')
                     {
                     if(toupper(ar[u])!='A' && toupper(ar[u])!='B' && toupper(ar[u])!='C' && toupper(ar[u])!='D' && toupper(ar[u])!='E' && toupper(ar[u])!='F' && ar[u]!='0' && ar[u]!='1' && ar[u]!='2' && ar[u]!='3' && ar[u]!='4' && ar[u]!='5' && ar[u]!='6' && ar[u]!='7' && ar[u]!='8' && ar[u]!='9')
                     {
                     printf("\n\nYou entered a non Hexadecimal number!\nProgram will now EXIT...\a\a\a");
                     getch();
                     return 0;
                     }
                     }
                     printf("\a");
                     func9(ar,n);
                     }
                break;
                case 10:{
                     printf("Enter Binary Number:");
                     scanf("%d",&a);
                     k=a;
                      k=a;
                     while(k!=0)
                     {
                     if(k!=0)
                     {
                     if((k%10)!=0 && (k%10)!=1)
                     {
                     printf("\n\nYou entered a non Binary number!\n\a\a\a");
                     l=1;
                     break;
                     }
                     k/=10;
                     }
                     }
                     if(l!=1)
                     {
                     printf("\a");
                     func10(a);
                     }
                     }
                break;
                case 11:{
                     printf("Enter Decimal Number:");
                     scanf("%d",&a);
                     printf("\a");
                     func11(a);
                     }
                break;
                case 12:{
                     printf("Enter Octal Number:");
                     scanf("%d",&a);
                     k=a;
                     while(k!=0)
                     {
                     if((k%10)>7)
                     {
                     printf("\n\nYou entered a non Octal number!\n\a\a\a");
                     l++;
                     break;
                     }
                     k/=10;
                     }
                     if(l==0)
                     {
                     printf("\a");
                     func12(a);
                     }
                     }
                break;
                default:printf("\nYou Enetred A Wrong Choice!");
                }

               printf("\n\n\aWant to perform more conversions?(Y/N):");
               scanf("%s",&cho);
               printf("\a");
               system("cls");
               }
               return 0;
      }

void func1(a)
{
     while(a!=0)
     {
     sum+=pow(2,c++)*(a%10);
     a/=10;
     }
     printf("Decimal Equivalent is:%d",sum);
     }

void func2(a)
{
     int b[15],i,c=0;
     printf("Binary Equivalent:");
     while(a!=1)
     {
                b[c++]=a%2;
                a/=2;
                }
                b[c]=1;
                for(i=c;i>-1;i--)
                printf("%d",b[i]);
                }
void func3(a)
{
     while(a!=0)
     {
     sum+=pow(8,c++)*(a%10);
     a/=10;
     }
     printf("Decimal Equivalent is:%d",sum);
     }

void func4(a)
{
     int b[15],i,c=0;
     printf("Octal Equivalent:");
     while(a>7)
     {
                b[c++]=a%8;
                a/=8;
                }
                b[c]=a;
                for(i=c;i>-1;i--)
                printf("%d",b[i]);
                }

void func5(a)
{    int b[15],i;
     while(a!=0)
     {
     sum+=pow(8,c++)*(a%10);
     a/=10;
     }
     func2(sum);
     }

void func6(a)
{
     while(a!=0)
     {
     sum+=pow(2,c++)*(a%10);
     a/=10;
     }
    func4(sum);
     }

void func7(char ar[],int nr)
{    int i=0,sum=0;
     int c=-1;
     for(i=nr-1;i>-1;i--)
     {c++;
     if(toupper(ar[i])=='A')
     sum+=pow(16,c)*10;
     else if(toupper(ar[i])=='B')
     sum=pow(16,c)*11;
     else if(toupper(ar[i])=='C')
     sum=pow(16,c)*12;
     else if(toupper(ar[i])=='D')
     sum=pow(16,c)*13;
     else if(toupper(ar[i])=='E')
     sum=pow(16,c)*14;
     else if(toupper(ar[i])=='F')
     sum=pow(16,c)*15;
     else if(ar[i]=='1')
     sum+=pow(16,c)*1;
     else if(ar[i]=='2')
     sum+=pow(16,c)*2;
     else if(ar[i]=='3')
     sum+=pow(16,c)*3;
     else if(ar[i]=='4')
     sum+=pow(16,c)*4;
     else if(ar[i]=='5')
     sum+=pow(16,c)*5;
     else if(ar[i]=='6')
     sum+=pow(16,c)*6;
     else if(ar[i]=='7')
     sum+=pow(16,c)*7;
     else if(ar[i]=='8')
     sum+=pow(16,c)*8;
     else if(ar[i]=='9')
     sum+=pow(16,c)*9;
     }
     printf("Decimal Equivalent is:%d",sum);
     }

void func8(char ar[],int nr)
{    int i=0,sum=0;
     int c=-1;
     for(i=nr-1;i>-1;i--)
     {c++;
     if(toupper(ar[i])=='A')
     sum+=pow(16,c)*10;
     else if(toupper(ar[i])=='B')
     sum=pow(16,c)*11;
     else if(toupper(ar[i])=='C')
     sum=pow(16,c)*12;
     else if(toupper(ar[i])=='D')
     sum=pow(16,c)*13;
     else if(toupper(ar[i])=='E')
     sum=pow(16,c)*14;
     else if(toupper(ar[i])=='F')
     sum=pow(16,c)*15;
     else if(ar[i]=='1')
     sum+=pow(16,c)*1;
     else if(ar[i]=='2')
     sum+=pow(16,c)*2;
     else if(ar[i]=='3')
     sum+=pow(16,c)*3;
     else if(ar[i]=='4')
     sum+=pow(16,c)*4;
     else if(ar[i]=='5')
     sum+=pow(16,c)*5;
     else if(ar[i]=='6')
     sum+=pow(16,c)*6;
     else if(ar[i]=='7')
     sum+=pow(16,c)*7;
     else if(ar[i]=='8')
     sum+=pow(16,c)*8;
     else if(ar[i]=='9')
     sum+=pow(16,c)*9;
     }
     func2(sum);
     }

void func9(char ar[],int nr)
{    int i=0,sum=0;
     int c=-1;
     for(i=nr-1;i>-1;i--)
     {c++;
     if(toupper(ar[i])=='A')
     sum+=pow(16,c)*10;
     else if(toupper(ar[i])=='B')
     sum=pow(16,c)*11;
     else if(toupper(ar[i])=='C')
     sum=pow(16,c)*12;
     else if(toupper(ar[i])=='D')
     sum=pow(16,c)*13;
     else if(toupper(ar[i])=='E')
     sum=pow(16,c)*14;
     else if(toupper(ar[i])=='F')
     sum=pow(16,c)*15;
     else if(ar[i]=='1')
     sum+=pow(16,c)*1;
     else if(ar[i]=='2')
     sum+=pow(16,c)*2;
     else if(ar[i]=='3')
     sum+=pow(16,c)*3;
     else if(ar[i]=='4')
     sum+=pow(16,c)*4;
     else if(ar[i]=='5')
     sum+=pow(16,c)*5;
     else if(ar[i]=='6')
     sum+=pow(16,c)*6;
     else if(ar[i]=='7')
     sum+=pow(16,c)*7;
     else if(ar[i]=='8')
     sum+=pow(16,c)*8;
     else if(ar[i]=='9')
     sum+=pow(16,c)*9;
     }
     func4(sum);
     }
void func10(a)
{    char b[10];
     int k,i=0,c=0;
     while(a!=0)
     {
     k=a%10000;
     if(k==0)
     b[i++]='0';
     else if(k==1)
     b[i++]='1';
     else if(k==10)
     b[i++]='2';
     else if(k==11)
     b[i++]='3';
     else if(k==100)
     b[i++]='4';
     else if(k==101)
     b[i++]='5';
     else if(k==110)
     b[i++]='6';
     else if(k==111)
     b[i++]='7';
     else if(k==1000)
     b[i++]='8';
     else if(k==1001)
     b[i++]='9';
     else if(k==1010)
     b[i++]='A';
     else if(k==1011)
     b[i++]='B';
     else if(k==1100)
     b[i++]='C';
     else if(k==1101)
     b[i++]='D';
     else if(k==1110)
     b[i++]='E';
     else if(k==1111)
     b[i++]='F';
     a/=10000;
     }
     printf("Hexadecimal Equivalent:");
     for(i=i-1;i>-1;i--)
     {
     printf("\a");
     printf("%c",b[i]);
     }
     }

void func11(a)
{
     int b[15],i,c=0;
     while(a!=1)
     {
                b[c++]=a%2;
                a/=2;
                }
                b[c]=1;
                for(i=c;i>-1;i--)
                sum=sum*10+b[i];
                func10(sum);
                }

void func12(a)
{
     int b[15],m[15],i,c=0,sum=0,sum1=0;
     {
     while(a!=0)
     {
     sum+=pow(8,c++)*(a%10);
     a/=10;
     }
                c=0;
                while(sum!=1)
                {
                m[c++]=sum%2;
                sum/=2;
                }
                m[c]=1;
                for(i=c;i>-1;i--)
                sum1=(sum1*10)+m[i];
                func10(sum1);
                }

                }

Thursday, 2 October 2014

Banker's Algoithm - C Program

#include<stdio.h>
int main()
{

    int n,p,i,j,complete=0,c,cnt=0,mx[10][3],all[10][3],need[10][3],av[3],done[10];
    char safe[10],name[10];
    printf("\nEnter the num of process:");
    scanf("%d",&n);
    printf("\nEnter the num of resources:");
    scanf("%d",&p);
    for(i=0;i<n;i++)
    {
        printf("\nEnter the name of process:");
        fflush(stdin);
        scanf("%c",&name[i]);
        done[i]=0;
        printf("\nEnter details of process %d",i+1);
     for(j=0;j<p;j++)
    {
        printf("\nEnter max resource %c:",65+j);
        scanf("%d",&mx[i][j]);
        printf("\nEnter allocated resource %c:",65+j);
        scanf("%d",&all[i][j]);
        need[i][j]=mx[i][j]-all[i][j];
    }
    }

    for(i=0;i<p;i++)
    {
      printf("\nEnter the available resource %c:",65+i);
      scanf("%d",&av[i]);
    }

    while(complete!=n && cnt!=n)
    {
        for(i=0;i<n;i++)
        {
            cnt++;
            if(done[i]!=2)
            {
            c=0;
            for(j=0;j<p;j++)
            {
              if(need[i][j]<=av[j])
              {c++;}
            }
              if(c==p)
              {
                  for(j=0;j<p;j++)
                  av[j]+=all[i][j];
                  safe[complete]=name[i];
                  complete++;
                  done[i]=2;
              }
            }
        }
    }

    if(cnt!=n)
    {
    printf("\n\nSafe Sequence-->> ");
    for(i=0;i<n;i++)
    printf("| %c |",safe[i]);
    }
    else
    {
        printf("\nNo safe sequence!!");
    }
    return 0;


}

Disk Scheduling Algorithm [FCFS,SSTF,SCAN,LOOK] - C Program

#include<stdio.h>

int main()
{
    int len,start,que[20],i,j,dist=0,k,l,temp[20],tque[20],cnt=0,ends,ch;

    printf("\nEnter the length of queue:");
    scanf("%d",&len);
    for(i=1;i<len+1;i++)
    {
        printf("\nEnter the cylinder block %d:",i);
        scanf("%d",&que[i]);
        tque[i]=que[i];
    }
    printf("\nEnter the starting block value:");
    scanf("%d",&que[0]);
    tque[0]=que[0];
    printf("\nEnter the ends of disc block value:");
    scanf("%d",&ends);
    printf("\nHow u want SCAN Algorithm to start from?\n1:Back from start block\n2:Front from start block\nYour choice:");
    scanf("%d",&ch);

    //FCFSFCFSFCFSFCFSFCFSFCFSFCFSFCFSFCFSFCFSFCFSFCFSFCFSFCFSFCFSFCFSFCFSFCFS
    printf("\n****************FCFS*************\n\n");
    printf("\nThe blocks visited are as follows->\n\n");

    for(i=0;i<len+1;i++)
    {
        printf("%d ->> ",que[i]);
        if(que[i+1]>que[i] && i+1!=len+1)
        dist+=que[i+1]-que[i];
        else if(tque[i+1]<=tque[i] && (i+1)!=k)
        dist+=que[i]-que[i+1];

    }
    printf("\n\nTotal head movement=%d\n",dist);
    //FCFSFCFSFCFSFCFSFCFSFCFSFCFSFCFSFCFSFCFSFCFSFCFSFCFSFCFSFCFSFCFSFCFSFCFS

    //SSTFSSTFSSTFSSTFSSTFSSTFSSTFSSTFSSTFSSTFSSTFSSTFSSTFSSTFSSTFSSTFSSTFSSTF
    dist=0;
    printf("\n****************SSTF*************\n\n");
    printf("\nThe blocks visited are as follows->\n\n");
    for(i=0;i<len+1;i++)
    {
        if(que[i]>que[0])
        temp[i]=que[i]-que[0];
        else
        temp[i]=que[0]-que[i];
    }
    //selection sort
    for(i=0;i<len+1;i++)
    {
        for(j=1;j<len+1-i;j++)
        if(temp[j-1]>temp[j])
        {
            k=temp[j-1];
            l=tque[j-1];
            temp[j-1]=temp[j];
            tque[j-1]=tque[j];
            temp[j]=k;
            tque[j]=l;
        }
    }
    //end of selection sort
     for(i=0;i<len+1;i++)
    {
        printf("%d ->> ",tque[i]);
        if(tque[i+1]>tque[i] && i+1!=len+1)
        dist+=tque[i+1]-tque[i];
        else if(i+1!=len+1)
        dist+=tque[i]-tque[i+1];
        temp[i]=0;

    }
    printf("\n\nTotal head movement=%d\n",dist);
    //SSTFSSTFSSTFSSTFSSTFSSTFSSTFSSTFSSTFSSTFSSTFSSTFSSTFSSTFSSTFSSTFSSTFSSTF

    //SCANSCANSCANSCANSCANSCANSCANSCANSCANSCANSCANSCANSCANSCANSCANSCANSCANSCAN
    dist=0;

    //restore value of tque
    for(i=0;i<len+1;i++)
    tque[i]=que[i];

    printf("\n****************SCAN*************\n\n");
    printf("\nThe blocks visited are as follows->\n\n");
    //selection sort
    for(i=0;i<len+1;i++)
    for(j=1;j<len+1-i;j++)
    {
       if(tque[j-1]>tque[j])
       {
         k=tque[j-1];
         tque[j-1]=tque[j];
         tque[j]=k;
       }
    }
    //end of selection sort
    //Reversing que before start block and merging in main tque
    for(i=0;i<len+1;i++)
    {if(tque[i]==que[0]) break;}
    tque[i]=tque[0];
    for(j=1;j<i;j++)
    {
       k=tque[i-j];
       tque[i-j]=tque[j];
       tque[j]=k;
    }
    tque[0]=que[0];
    k=i;
    //end of reverse process
    if(ch==1){
    for(i=0;i<len+1;i++)
    {
        printf("%d ->> ",tque[i]);
        if(tque[i+1]>tque[i] && i+1!=len+1)
        dist+=tque[i+1]-tque[i];
        else if(tque[i+1]<=tque[i] && (i+1)!=k)
        dist+=tque[i]-tque[i+1];
        if(k==i)
        {printf("0 ->> ");dist+=2*tque[i];}

    }
    }
    else
    {
       dist=0;
       printf("%d ->> ",tque[0]);
       dist+=tque[k+1]-tque[0];
       for(i=k+1;i<len+1;i++)
       {
        printf("%d ->> ",tque[i]);
        if(tque[i+1]>tque[i] && i+1!=len+1)
        dist+=tque[i+1]-tque[i];
        else if((i+1)!=len+1)
        dist+=tque[i]-tque[i+1];
       }
       printf("%d ->> ",ends);
       dist+=(ends-tque[len]);
       for(i=1;i<=k;i++)
       {
        dist+=ends-tque[i];
        printf("%d ->> ",tque[i]);
        if(tque[i+1]>tque[i] && (i+1)!=k+1)
        dist+=tque[i+1]-tque[i];
        else if(tque[i+1]<=tque[i] && (i+1)!=k)
        dist+=tque[i]-tque[i+1];
       }
    }
    printf("\n\nTotal head movement=%d\n",dist);
    //SCANSCANSCANSCANSCANSCANSCANSCANSCANSCANSCANSCANSCANSCANSCANSCANSCANSCAN

    //LOOKLOOKLOOKLOOKLOOKLOOKLOOKLOOKLOOKLOOKLOOKLOOKLOOKLOOKLOOKLOOKLOOKLOOK

    dist=0;
    printf("\n****************LOOK*************\n\n");
    printf("\nThe blocks visited are as follows->\n\n");
    for(i=0;i<len+1;i++)
    {
        printf("%d ->> ",tque[i]);
        if(tque[i+1]>tque[i] && i+1!=len+1)
        dist+=tque[i+1]-tque[i];
        else if(tque[i+1]<=tque[i] && (i+1)!=k)
        dist+=tque[i]-tque[i+1];

    }
    printf("\n\nTotal head movement=%d\n",dist);
    //LOOKLOOKLOOKLOOKLOOKLOOKLOOKLOOKLOOKLOOKLOOKLOOKLOOKLOOKLOOKLOOKLOOKLOOK
    return 0;


}