Saturday, April 26, 2014

#include<stdio.h>
#include<conio.h>
void main()
{
int i,j,k,no,flag=0;
printf("Program for prime factors.");
printf("\nEnter your number:- ");
scanf("%d",&no);
k=no;
for(i=0;i<no;i++)
{
for(j=2;j<no;j++)
{
if(k%j==0)
{
printf("%d ",j);
k=k/j;
flag=1;
break;
}
}
}
if(flag!=1)
printf("%d",k);
printf("\n");
getch();
}

#include<conio.h>
#include<stdio.h>

void quick(int [],int,int,int);
void accept_arr(int [],int);
void disp_arr(int [],int);
void partition(int [],int,int,int);
void merge(int [],int,int,int,int );

void main()
{
int a[30],n,i,op;
char ch;
do
{
printf("\n\t \t**MENU** \n \t \t 1.Quick Sort \n\t \t2.Merge Sort");
printf("\n \t Enter choice =  \t ");
scanf("%d",&op);
switch(op)
{
case 1:
printf("\nEnter no of elements = \t ");
scanf("%d",&n);
accept_arr(a,n);
quick(a,n,0,n-1);
printf("\nSORTED ARRAY IS =  ");
disp_arr(a,n);
break;

case 2:
printf("\nEnter no of elements = \t ");
scanf("%d",&n);
accept_arr(a,n);
partition(a,n,0,n-1);
printf("\nSORTED ARRAY IS :: ");
disp_arr(a,n);
break;

default:
printf("\n \t Wrong choice...!");

}
printf("\nWant to continue ?(y/n) ");
scanf("%c",&ch);
}while(ch=='y'||ch=='Y');
getch();
}

//function to accept array
void accept_arr(int a[],int n)
{
int i;
printf("\nENTER ARRAY ELEMENTS :: ");
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
}

//function to display array
void disp_arr(int a[], int n)
{
int i;
printf("\n");
for(i=0;i<n;i++)
{
printf("%d ",a[i]);
}
}

//quick sort function
void quick(int a[], int n, int l, int h)
{
int down,up,t,pivot;
pivot=a[l];down=l+1;up=h;
while(down<=up)
{
while(a[down]<=pivot && down<=up)
down++;
while(a[up]>pivot)
up--;
if(down<=up)
{
t=a[down];
a[down]=a[up];
a[up]=t;
down++;up--;
}
}
a[l]=a[up];
a[up]=pivot;
printf("\nPIVOT %d :",pivot);
disp_arr(a,n);
if(l<up-1)
{
quick(a,n,l,up-1);
}
if(down<h)
{
quick(a,n,down,h);
}
}


//function to partition
void partition(int a[], int n, int s, int e)
{
int m;
if(s<e)
{
m=(s+e)/2;
partition(a,n,s,m);
partition(a,n,m+1,e);
merge(a,n,s,m,e);
}
}

//merge sort function
void merge(int a[], int n, int s, int m, int e)
{
int b[30],i,j,k;
i=s;j=m+1;k=s;
while(i<=m && j<=e)
{
if(a[i]<=a[j])
{
b[k]=a[i];
i++;k++;
}
else
{
b[k]=a[j];
j++;k++;
}
}
while(j<=e)
{
b[k]=a[j];
j++;k++;
}
while(i<=m)
{
b[k]=a[i];
i++;k++;
}
for(i=s;i<=e;i++)
{
a[i]=b[i];
}
}

/*
perform string operations w/o using library functions
*/
#include<stdio.h>
#include<conio.h>

int strn_len(char *);
void strn_cpy(char *,char *);
char *strn_rev(char *);
int strn_cmp(char *,char *);
int palin(char *);
char* strn_cat(char *,char *);
int strn_sub(char *,char *);

void main()
{
int n;
char a[50],b[50],tmp[50],sub[10],y;
do
{
clrscr();
printf("Enter a String A: ");
fflush(stdin);
gets(a);
printf("Enter a String B: ");
gets(b);

printf("Select An Operation");
printf("\n1. Copy B to A\n2. Length\n3. Reverse String\n4. Palindrome");
printf("\n5. Concatenation\n6.Find Occurence of Substring\nChoice: ");
scanf("%d",&n);

switch(n)
{
case 1:
strn_cpy(a,b);
printf("B has been copied to A: %s",a);
break;

case 2:
printf("Which string to find length (a/b): ");
y=getche();
if(y=='a'||y=='A')
printf("\nLength of string is: %d",strn_len(a));
else if(y=='B'||y=='b')
printf("\nLength of string is: %d",strn_len(b));
    else
printf("\nInvalid String Name");

break;

case 3:
      printf("Which string to reserse (a/b): ");
      y=getche();
if(y=='a'||y=='A')
printf("\nReversed string is: %s",strn_rev(a));
else if(y=='B'||y=='b')
printf("\nReserved string is: %s",strn_rev(b));
    else
printf("\nInvalid String Name");
break;

case 4:
printf("Which string to check for palindrome (a/b): ");
y=getche();
if(y=='A'||y=='a')
{
if(palin(a)==1)
printf("\nString %c is a palindrome",y);
else
printf("\nString %c is NOT a palindrome",y);
}
else
{
if(y=='B'||y=='b')
{
if(palin(b)==1)
printf("\nString %c is a palindrome",y);
else
printf("\nString %c is NOT a palindrome",y);
}
}
break;

case 5:
printf("\nString A & B have been joined: %s",strn_cat(a,b));
break;

case 6:
printf("\nEnter substring To Search: ");
fflush(stdin);
gets(sub);
if(strn_sub(a,sub)==0)
{ if(strn_sub(b,sub)==0)
printf("\nSubstring is neither in A nor in B");
}
else
{
if(strn_sub(a,sub)==1)
printf("\nSubstring is Present in String A");
else
{
if(strn_sub(b,sub)==1)
printf("\nSubstring is Present in String B");
}
}
break;
}
printf("\n\nDo u Want to continue (y/n): ");
fflush(stdin);

}while(getche()=='y');

}

int strn_len(char *a)
{
int i;
for(i=0;a[i]!='\0';i++);
return i;
}

void strn_cpy(char *a,char *b)
{
int i;
for(i=0;i<strn_len(b);i++)
a[i]=b[i];
a[i]='\0';
}

char *strn_rev(char *a)
{
char tmp[50];
int i,b;
b=(strn_len(a)-1);

for(i=0;i<strn_len(a);i++,b--)
tmp[b]=a[i];
for(i=0;i<strn_len(a);i++)
a[i]=tmp[i];

return a;
}

int strn_cmp(char *a,char *b)
{
int i,flag;
flag=0;

if(strn_len(a)!=strn_len(b))
flag=1;
else if(strn_len(a)==strn_len(b))
    {
for(i=0;i<strn_len(a);i++)
if(a[i]!=b[i])
flag=1;
    }
    else
flag= 0;
return flag;
}



int palin(char *a)
{       char tmp[50];
strn_cpy(tmp,a);
strn_rev(tmp);
if(strn_cmp(tmp,a)==0)
return 1;
else
return 0;
}

char* strn_cat(char *a,char *b)
{
int i,A;
A=strn_len(a);
for(i=0;i<=strlen(b);i++,A++)
a[A]=b[i];
return a;
}

int strn_sub(char *a,char *sub)
{
int i,j;
for(i=0;i<strn_len(sub);i++)
{
for(j=0;j<strn_len(a);j++)
{
if(sub[i]==a[j])
break;
}
if(j==strn_len(a))
break;
}
if(i==strn_len(sub))
return 1;
else
return 0;
}

/*
Case 1:
Enter a String A: hello
Enter a String B: howzthat
Select An Operation
1. Copy B to A
2. Length
3. Reverse String
4. Palindrome
5. Concatenation
6.Find Occurence of Substring
Choice: 1
B has been copied to A: howzthat

Do u Want to continue (y/n):y

Case 2
Enter a String A: Hello
Enter a String B: howzthat
Select An Operation
1. Copy B to A
2. Length
3. Reverse String
4. Palindrome
5. Concatenation
6.Find Occurence of Substring
Choice: 2
Which string to find length (a/b): a
Length of string is: 5

Do u Want to continue (y/n):y

Case 3:
Enter a String A: hello
Enter a String B: howzthat
Select An Operation
1. Copy B to A
2. Length
3. Reverse String
4. Palindrome
5. Concatenation
6.Find Occurence of Substring
Choice: 3
Which string to reserse (a/b): b
Reserved string is: tahtzwoh

Do u Want to continue (y/n):y

Case 4:
Enter a String A: madam
Enter a String B: hi
Select An Operation
1. Copy B to A
2. Length
3. Reverse String
4. Palindrome
5. Concatenation
6.Find Occurence of Substring
Choice: 4
Which string to check for palindrome (a/b): a
String a is a palindrome

Do u Want to continue (y/n):y

Case 5:
Enter a String A: hello
Enter a String B: howzthat
Select An Operation
1. Copy B to A
2. Length
3. Reverse String
4. Palindrome
5. Concatenation
6.Find Occurence of Substring
Choice: 6

Enter substring To Search: ell

Substring is Present in String A

Do u Want to continue (y/n):n
*/

/****************************************************************
To perform operations on database such as add, delete, modify, search, sort
******************************************************************/

/* 
 * File:   main.c
 * Author: Gaurav
 *OS:Linux with KDE
 * Created on August 7, 2012, 8:14 PM
 */

#include <stdio.h>
#include <stdlib.h>
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#include <stdio.h>
#include <stdlib.h>

typedef struct emp
{ char name[50],dept[50];
int id,sal;

}e;

void acc_emp(e *, int *);

int main(void)
{
e e[20];
int c=0;
char n;
do
{

printf("Menu\n\n");
printf("1.Add\n2.Delete\n3.Modify\n4.Search\n5.Sort\n6.Display\n7.Exit\nChoice: ");

scanf("%c",&n);
switch(n)
{
case '1':
acc_emp(e,&c);
break;


default:
printf("\nEnter Correct choice");
break;
}

if(n!='7')
{
printf("\nDo u want to continue(y/n): ");
scanf("%d",&n);
}
}while(n=='y');



  

  return 0;
}

void acc_emp(e *e, int *c)
{

printf("\nEnter Name: ");
scanf("%s",e[*c].name);
printf("Enter Department: ");
scanf("%s",e[*c].dept);
printf("Enter Id: ");
scanf("%s",e[*c].id);
printf("Enter Salary: ");
scanf("%s",e[*c].sal);
*c++;
}

void disp_emp(e *e, int *c)
{
printf("\nID\tName\tDepartment\tSalary\n");
printf("%d\t%s\t%s\t%d\n",e[*c].id,e[*c].name,e[*c].dept,e[*c].sal);
}




/* Write a program to perform the following opertations:Addition,multiplication,transpose,magic square & saddle point.*/


#include<stdio.h>
#include<conio.h>
void scan_mat(int (*)[10], int *, int *);
void disp_mat(int (*)[10], int *, int *);
void add_mat(int (*)[10], int (*)[10], int (*)[10], int *, int *);
void mul_mat(int (*)[10], int (*)[10], int (*)[10], int *, int *);
void trans_mat(int (*)[10], int (*)[10], int *, int *);
void saddle_mat(int (*)[10], int *, int *);

void main()
{
     char y;
     int a[10][10], b[10][10], ans[10][10], n, r1, r2, c1, c2;
     clrscr();
     printf("Enter row and column for matrix A: ");
     scanf("%d%d", &r1, &c1);
     printf("Enter elements of matrix A (%dx%d): ", r1, c1);
     scan_mat(a, &r1, &c1);
     printf("Enter row and column for matrix B: ");
     scanf("%d%d", &r2, &c2);
     printf("Enter elements of matrix B (%dx%d): ", r2, c2);
     scan_mat(b, &r2, &c2);
     do
     {
          clrscr();
          printf("Matrix A:\n");
          disp_mat(a, &r1, &c1);
          printf("Matrix B:\n");
          disp_mat(b, &r2, &c2);
          printf("\n\nEnter choice:\n1. Addition\n2. Multiplication");
          printf("\n3. Transpose\n4.Inverse\n5. Saddle Point\n6. Magic Square");
          printf("\nChoice: ");
          scanf("%d", &n);
          printf("\n");
          switch (n)
          {
          case 1:
               if (r1 == r2 && c1 == c2)
               {
                    add_mat(a, b, ans, &r1, &c2);
                    disp_mat(ans, &r1, &c2);
               }
               else
                    printf("\nMatrix Addition not possible");

               break;

          case 2:
               if (r1 == c2)
               {
                    mul_mat(a, b, ans, &r1, &c2);
                    disp_mat(ans, &r1, &c2);
               }
               else
                    printf("\nMatrix Multiplication not possible");

               break;

          case 3:
               printf("Which matrix transpose (a/b): ");
               fflush(stdin);
               y = getche();
               printf("\n");
               switch(y)
               {
               case 'a':
                    trans_mat(a, ans, &r1, &c1);
                    disp_mat(ans, &r1, &c1);
                    break;
               
               case 'b':
                    trans_mat(b, ans, &r2, &c2);
                    disp_mat(ans, &r2, &c2);
                    break;
               }
              
                  break;

          case 4:
               /*printf("Which matrix to inverse (a/b): ");
               fflush(stdin);
               y = getche();
               printf("\n");
               if (y == 'A' || y == 'a')
               {
                    inv_mat(a, ans);
                    disp_mat(ans, &r2, &c2);
               }
               else
                    if (y == 'B' || y == 'b')
               {
                    inv_mat(b, ans);
                    disp_mat(ans, &r2, &c2);
               }*/
               break;
               
          case 5:
              printf("Which matrix to find saddle point (a/b): ");
               fflush(stdin);
               y = getche();
               printf("\nSaddle point(s) for the matrix is/are: ");
               switch(y)
               {
               case 'a':
                    saddle_mat(a,&r1, &c1);
               break;
              
               case 'b':
                    saddle_mat(b,&r2, &c2);
                 break;
               }
              
                  break;

          }
          printf("\n Do U want to continue? (y/n): ");
          fflush(stdin);
          y = getche();
     }
     while (y == 'y');
}

void scan_mat(int (*a)[10], int *r, int *c)
{
     int i, j;
     for (i = 0; i<*r; i++)
          for (j = 0; j<*c; j++)
               scanf("%d", &a[i][j]);
}

void disp_mat(int (*a)[10], int *r, int *c)
{
     int i, j;
     for (i = 0; i<*r; i++)
     {
          for (j = 0; j<*c; j++)
               printf("%d\t", a[i][j]);
          printf("\n");
     }
}

void add_mat(int (*a)[10], int (*b)[10], int (*ans)[10], int *r, int *c)
{
     int i, j;
     for (i = 0; i<*r; i++)
          for (j = 0; j<*c; j++)
               ans[i][j] = a[i][j] + b[i][j];
}

void mul_mat(int (*a)[10], int (*b)[10], int (*ans)[10], int *r, int *c)
{
     int i, j, k;

     for (i = 0; i<*r; i++)
          for (j = 0; j<*c; j++)
          {
               ans[i][j] = 0;
               for (k = 0; k<*c; k++)
                    ans[i][j] += a[i][k] * b[k][j];
          }
}

void trans_mat(int (*a)[10], int (*ans)[10], int *r, int *c)
{
     int i, j;
     for (i = 0; i<*r; i++)
          for (j = 0; j<*c; j++)
               ans[i][j] = a[j][i];
}

void saddle_mat(int (*a)[10], int *r, int *c)
{
     int i,j,k,col,min,max;
     for (i = 0; i < *r; i++)
     {
          min = a[i][0];
          for (j = 0; j < *c; j++)
               if (a[i][j] <= min)
               {
                    min = a[i][j];
                    col = j;
               }
          max = a[0][col];
          for (k = 0; k < *r; k++)
              if (a[k][col] >= max)
               {
                    max = a[k][col];
               }
         if (max == min)
               printf("%d ",a[i][col]);
         else
              printf("Not present");
     }
}
/*       Write a program to perform verious string operations such as copy,length,compare,reverse,substring,pallindrome and concatenation and to find occurrence substring etc.,with and without using library functions */

#include<stdio.h>
#include<conio.h>
#include<string.h>
void main()
{
int opt,l1,l2;
char str1[20],str2[20],*p;
clrscr();
printf("\n********************************************************************************\n\t1.Copy \n\t2.Length \n\t3.Compare \n\t4.Reverse \n\t5.Concatenation \n\t6.Substring \n\t7.Pallindrome \n\t8.Exit\n \n********************************************************************************\n");
printf("\n\tSelect the option :");
scanf("%d",&opt);
printf("\n\tEnter string1 :");
scanf("%s",str1);
printf("\n\tEnter string2 :");
scanf("%s",str2);
printf("\n\tstring1 is %s,",str1);
printf("\n\tstring2 is %s,",str2);
switch(opt)
{
case 1:strcpy(str2,str1);
printf("\n\tstring1 is %s,",str1);
printf("\n\tstring2 is %s,",str2);
break;
case 2:l1=strlen(str1);
       l2=strlen(str2);
       printf("\n\tLength of string1 is %d",l1);
       printf("\n\tLength of string2 is %d",l2);
break;
case 3:l1=strcmp(str1,str2);
if(l1==0)
printf("\n\tThe strings are equal");
else
printf("\n\tThe strings are not equal");
break;
case 4: strrev(str1);
printf("\n\tReversed string1 is %s",str1);
break;
case 5: strcat(str1,str2);
printf("\n\tConcatenated string is %s",str1);
printf("\n\tString 2 is %s",str2);
break;
case 6:p=strstr(str1,str2);
       if(p==NULL)
  printf("String2 is not substring of string1");
       else
 printf("\n\tString2 is substring of string1");
break;
case 7:
strcpy(str2,str1);
strrev(str2);
l1=strcmp(str1,str2);
if(l1==0)
printf("String1 is pallindrom");
else
printf("String1 is not pallindrom");
break;
case 8: exit();
break;
default:printf("\n\tInvalid switch option");
}
getch();
}
/*Write a C program to perform set operations - union,intersection,
difference,symmetric difference  */

#include<stdio.h>
#include<conio.h>
void readset(int a[],int size);
void displayset(int a[],int size);
int Uni(int a[],int s1,int b[],int s2,int c[]);
int Intersection(int a[],int s1, int b[],int s2, int c[]);
int Diffab(int a[],int s1,int b[],int s2,int c[]);
int Diffba(int a[],int s1,int b[],int s2,int d[]);
//int symdiff(int a[],int s1,int b[],int s2,int e[]);
void main()
{
int a[10],b[10],c[10],d[10],e[10],s1,s2,s3,s4,s5,opt;
clrscr();
do
{
printf("\n\n**********MATRIX OPERATIONS**********\n\n");
printf("\n\t1.Union\n\n\t2.Intersection\n\n\t3.Difference A-B\n\n\t4.Difference B-A\n\n\t5.Symmetric difference\n\n\t6.Exit\n\n");
printf("\n\nEnter your menu option: \t");
scanf("%d",&opt);
if(opt>0&&opt<6)
{
printf("\n\nEnter size of set A: \t");
scanf("%d",&s1);
printf("\n\nEnter size of set B: \t");
scanf("%d",&s2);
printf("\n\nEnter elements in set A: \t");
readset(a,s1);
printf("\n\nEnter elements in set B: \t");
readset(b,s2);
printf("\n\nContents of set A are: \t");
displayset(a,s1);
printf("\n\nContents of set B are: \t");
displayset(b,s2);
}

switch(opt)
{
case 1:
s3=Uni(a,s1,b,s2,c);
printf("\n\nUnion of set a and b is: \t");
displayset(c,s3);
break;
case 2:
s3=Intersection(a,s1,b,s2,c);
printf("\n\nIntersection of set a and b is: \t");
displayset(c,s3);
break;
case 3:
s3=Diffab(a,s1,b,s2,c);
printf("\n\nDiff A-B is: \t");
displayset(c,s3);
break;
case 4:
s4=Diffba(a,s1,b,s2,d);
printf("\n\nDiff B-A is: \t");
displayset(d,s4);
break;
case 5:
s3=Diffab(a,s1,b,s2,c);
s4=Diffba(a,s1,b,s2,d);
s5=Uni(c,s3,d,s4,e);
printf("\n\nSym Diff A+B is: \t");
displayset(e,s5);
break;
case 6:
exit(0);
break;
default:printf("\n\nInvalid option");
}
}while(opt!=6);
 getch();
}

void readset(int a[],int size)
{
int i;
for(i=0;i<size;i++)
scanf("%d",&a[i]);
}


void displayset(int a[],int size)
{
int i;
for(i=0;i<size;i++)
printf("%d\t",a[i]);
}

int Uni(int a[],int s1,int b[],int s2,int c[])
{
int s3,i,j,flag;
for(i=0;i<s1;i++)
{
c[i]=a[i];
}
s3=s1;
for(i=0;i<s2;i++)
{       flag=0;
for(j=0;j<s1;j++)
{
if(b[i]==a[i])
{
flag=1;
break;
}
}
if(flag==0)
{
c[s3]=b[i];
s3++;
}
}
return(s3);
}

int Intersection(int a[],int s1, int b[],int s2, int c[])
{
int s3,i,j;
s3=0;
for(i=0;i<s1;i++)
{
for(j=0;j<s2;j++)
{
if(a[i]==b[j])
{
c[s3]=a[i];
s3++;
break;
}
}
}return(s3);
}

int Diffab(int a[], int s1,int b[],int s2,int c[])
{
int s3=0,i,j,flag;
for(i=0;i<s1;i++)
{
flag=0;
for(j=0;j<s2;j++)
{
if(a[i]==b[j])
{
flag=1;
break;
}
}
if(flag==0)
{
c[s3]=a[i];
s3++;
}
}return(s3);
}

int Diffba(int a[], int s1,int b[],int s2,int d[])
{
int s4=0,i,j,flag;
for(i=0;i<s2;i++)
{
flag=0;
for(j=0;j<s1;j++)
{
if(b[i]==a[j])
{
flag=1;
break;
}
}
if(flag==0)
{
d[s4]=b[i];
s4++;
}
}
return(s4);
}

/*int symdiff(int a[],int s1,int b[],int s2,int e[])
{
int s3=0,i,j,flag,s4=0,c[10],d[10],s5=0;
for(i=0;i<s1;i++)
{
flag=0;
for(j=0;j<s2;j++)
{
if(a[i]==b[j])
{
flag=1;
break;
}
}
if(flag==0)
{
c[s3]=a[i];
s3++;
}
}

for(i=0;i<s2;i++)
{
flag=0;
for(j=0;j<s1;j++)
{
if(b[i]==a[j])
{
flag=1;
break;
}
}
if(flag==0)
{
d[s4]=b[i];
s4++;
}
}

s5=Uni(c,s3,d,s4,e);
return(s5);
} */