Discrete Maths Programs
Discrete Maths Programs
Tower of Hanoi
#include<stdio.h>
void TOH(int n,char x,char y,char z) {
if(n>0) {
TOH(n-1,x,z,y);
printf("Move disk %d from rod %c to rod
%c\n",n,x,y);
TOH(n-1,z,y,x);
}
}
int main() {
int n=3;
TOH(n,'A','C','B');
return 0;
}
WAP to detect whether a number is even or odd using finite state machine
#include<iostream>
using namespace std;
bool isEven(int n)
{
return(!(n & 1));
}
int main()
{
int n;
cout<<"Enter a number"<<endl;
cin>>n;
isEven(n)?cout<<"Even ":
cout<<"Odd ";
return 0;
}
WAP to find the power set for a given number
#include<stdio.h>
#include<math.h>
#define ROW 8
#define COL 256
int main()
{
int i,j,k,num,temp,flag;
int table[COL][ROW]={0};
char set[ROW][20];
for(i=0;i<num;i++)
{
fflush(stdin);
gets(set[i]);
}
for(i=0;i<pow(2,num);i++)
{
temp=i;
for(j=0;j<num;j++)
{
table[i][j]=temp%2;
temp=temp/2;
}
}
if(flag==1)
printf(" %s ", set[j]);
else
printf(" %s ", set[j]);
}
}
printf(")");
}
return 0;
}
WAP to find GCD of two number using recursion
#include <stdio.h>
int main() {
int num1, num2;
printf("Enter two numbers: ");
scanf("%d %d", &num1, &num2);
int result = gcd(num1, num2);
printf("The GCD of %d and %d is %d\n", num1, num2,
result);
return 0;
}
Find Permutation and Combination result for a given pair of values n and r
#include<stdio.h>
// #include<conio.h>
long permutation(int n,int r);
long combination(int n,int r);
long factorial(int num);
int main(void)
{
int n,r;
// clrscr();
printf("Enter n:");
scanf("%d",&n);
printf("Enter r:");
scanf("%d",&r);
printf("permutation %d\n",permutation(n,r));
printf("Combination %d\n",combination(n,r));
// getch();
return 0;
}
long permutation(int n,int r)
{
return factorial(n)/factorial(n-r);
}
long combination(int n,int r)
{
return permutation(n,r)/factorial(r);
}
long factorial(int num)
{
long long fact=1;
while(num>0)
{
fact *=num;
num--;
}
return fact;
}
WAP to check a number is prime or not
#include<iostream>
// #include<conio.h>
using namespace std;
int main()
{
// clrscr();
int i,n,c=0;
cout<<"Enter a number:";
cin>>n;
for(i=1;i<=n;i++)
{
if(n%i==0)
{
++c;
}
}
if(c==2)
cout<<"Prime Number";
else
cout<<"Not Prime Number";
// getch();
return 0;
}
To find Binomial Coefficients
#include<stdio.h>
int BC(int n, int k);
int main()
{
int n,k;
printf("Enter n and k : ");
scanf("%d%d",&n,&k);
printf("Binomial coefficient: ",BC(n,k));
printf("%d\n",BC(n,k));
return 0;
}
int main()
{
int x1,y1,x2,y2;
int dist;
printf("Enter point(x1,y1)\n");
scanf("%d%d",&x1,&y1);
printf("Enter point(x2,y2)\n");
scanf("%d%d",&x2,&y2);
dist=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
return 0;
}
To find roots of the polynomials
#include<stdio.h>
#include<math.h>
// #include<conio.h>
int main()
{
double a,b,c,discriminant,root1,root2,realpart,imagepart;
// clrscr();
printf("Enter co-efficients a,b and c:");
scanf("%lf%lf%lf",&a,&b,&c);
discriminant=b*b-4*a*c;
if(discriminant>0)
{
root1=(-b+sqrt(discriminant))/(2*a);
root2=(-b-sqrt(discriminant))/(2*a);
printf("root1=%lf and root2=%lf",root1,root2);
}
else if(discriminant==0)
{
root1=root2=-b/(2*a);
printf("root1=root2=%lf",root1);
}
else
{
realpart=-b/(2-a);
imagepart=sqrt(-discriminant)/(2-a);
printf("root1=%lf+%lfi and root2=%f-
%ffi",realpart,imagepart,realpart,imagepart);
}
// getch();
return 0;
}
To find shortest path pair in a plane
#include <iostream>
#include <cstdlib>
#define max 10
#define infi 999
using namespace std;
int p[max][max];
// All Pairs Shortest Path using Floyd's Algorithm
allpairshort(a, 5);
findpath(a, 0, 4, 5);
return 0;
}