Showing posts with label Computer Science. Show all posts
Showing posts with label Computer Science. Show all posts

Wednesday 3 August 2016

Lab Program 5b Tower of Hanoi 15CSL38 Data Structures in C Lab

Lab Program 5b:

5b. Solving Tower of Hanoi problem with n disks 
(using recursion)


#include<stdio.h>
#include<math.h>
void tower(int n, char from_peg,  char aux_peg, char to_peg);

void main()
{
                int n;
                printf("\nEnter the number of disks: ");
                scanf("%d", &n);
                tower(n, 'A', 'B', 'C');                                         // A-> from_peg B->aux_peg C->to_peg
    printf("\nTotal number of moves = %0.0f", pow(2,n)-1 );
}

void tower(int n, char from_peg,  char aux_peg, char to_peg)    
// A-> from_peg B->aux_peg C->to_peg
{
                if(n == 1)
                {
                                printf("\nMove disk %d from %c peg to %c peg", n,  from_peg,  to_peg);
                                return;
                }

                // move n-1 disks from A(from_peg) to B(to_peg) using C(aux_peg) as auxiliary
                tower(n-1, from_peg,  to_peg,  aux_peg); 

                printf("\nMove disk %d from peg %c to %c peg", n, from_peg,  to_peg);

                // move n-1 disks from B(aux_peg) to C(to_peg) using A(from_peg) as auxiliary
                tower(n-1, aux_peg, from_peg, to_peg);
}

Output:
Enter the number of disks: 3
Move disk 1 from A peg to C peg
Move disk 2 from peg A to B peg

Move disk 1 from C peg to B peg
Move disk 3 from peg A to C peg
Move disk 1 from B peg to A peg
Move disk 2 from peg B to C peg
Move disk 1 from A peg to C peg
Total number of moves  = 7


Also Credits to: 
Manoj Taleka  (manoj89biet@gmail.com)

Yashaswini Jogi (jogi.yash@gmail.com)

Lab Program 1 Array 15CSL38 Data Structures in C Lab

Lab Program 1:   



Design, Develop and Implement a menu driven Program in C for the following Array operations
a. Creating an Array of N Integer Elements
b. Display of Array Elements with Suitable Headings
c. Inserting an Element (ELEM) at a given valid Position (POS)
d. Deleting an Element at a given valid Position(POS)
e. Exit.
Support the program with functions for each of the above operations.


#include<stdio.h>
#include<stdlib.h>
#define MAX 5

int a[MAX], pos, elem;
int n = 0;

void create();
void display();
void insert();
void delete();

void main()
{
            int choice;
            while(1)
            {
                        printf("\n\n~~~~MENU~~~~");
                        printf("\n=>1. Create an array of N integers");
                        printf("\n=>2. Display of array elements");
                        printf("\n=>3. Insert ELEM at a given POS");
                         printf("\n=>4. Delete an element at a given POS");
                         printf("\n=>5. Exit");
                         printf("\nEnter your choice: ");
                        scanf("%d", &choice);
                        switch(choice)
                        {
                                    case 1:             create();
                                                            break;
                                    case 2:             display();
                                                            break;
                                    case 3:             insert();
                                                            break;
                                    case 4:             delete();
                                                            break;
                                    case 5:             exit(1);
                                                            break;
                                    default:            printf("\nPlease enter a valid choice:");
                        }
            }
}

void create()
{
            int i;
            printf("\nEnter the number of elements: ");
            scanf("%d", &n);
            printf("\nEnter the elements: ");
            for(i=0; i<n; i++)
            {
                        scanf("%d", &a[i]);
            }
}

void display()
{
            int i;
            if(n == 0)
            {
                        printf("\nNo elements to display");
                        return;
            }
            printf("\nArray elements are: ");
            for(i=0; i<n;i++)
                        printf("%d\t ", a[i]);
}

void insert()
{
            int i;

            if(n == MAX)
            {
                        printf("\nArray is full. Insertion is not possible");
                        return;
            }

            do
            {
                        printf("\nEnter a valid position where element to be inserted:    ");
                        scanf("%d", &pos);
            }while(pos > n);

            printf("\nEnter the value to be inserted:   ");
            scanf("%d", &elem);

            for(i=n-1; i>=pos ; i--)
            {
                        a[i+1] = a[i];
            }
            a[pos] = elem;
            n = n+1;
            display();
}
void delete()
{
            int i;
           
            if(n == 0)
            {
                        printf("\nArray is empty and no elements to delete");
                        return;
            }

            do
            {
                        printf("\nEnter a valid position from where element to be deleted:    ");
                        scanf("%d", &pos);
            }while(pos>=n);

            elem = a[pos];

            printf("\nDeleted element is : %d \n", elem);
            for( i = pos; i< n-1; i++)
            {
                        a[i] = a[i+1];
            }
            n = n-1;
            display();
}

Output:

~~~~MENU~~~~
=>1. Create an array of N integers
=>2. Display of array elements
=>3. Insert ELEM at a given POS
=>4. Delete an element at a given POS
=>5. Exit
Enter your choice: 1

Enter the number of elements: 3
Enter the elements: 10 20 30

~~~~MENU~~~~
=>1. Create an array of N integers
=>2. Display of array elements
=>3. Insert ELEM at a given POS
=>4. Delete an element at a given POS
=>5. Exit
Enter your choice: 2

Array elements are: 10   20      30

~~~~MENU~~~~
=>1. Create an array of N integers
=>2. Display of array elements
=>3. Insert ELEM at a given POS
=>4. Delete an element at a given POS
=>5. Exit
Enter your choice: 3

Enter a valid position where element to be inserted:    5
Enter a valid position where element to be inserted:    4
Enter a valid position where element to be inserted:    3
Enter the value to be inserted:   40

Array elements are: 10   20      30      40

~~~~MENU~~~~
=>1. Create an array of N integers
=>2. Display of array elements
=>3. Insert ELEM at a given POS
=>4. Delete an element at a given POS
=>5. Exit
Enter your choice: 3

Enter a valid position where element to be inserted:    4
Enter the value to be inserted:   50

Array elements are: 10   20      30      40      50

~~~~MENU~~~~
=>1. Create an array of N integers
=>2. Display of array elements
=>3. Insert ELEM at a given POS
=>4. Delete an element at a given POS
=>5. Exit
Enter your choice: 3

Array is full. Insertion is not possible

~~~~MENU~~~~
=>1. Create an array of N integers
=>2. Display of array elements
=>3. Insert ELEM at a given POS
=>4. Delete an element at a given POS
=>5. Exit
Enter your choice: 4

Enter a valid position from where element to be deleted:    5
Enter a valid position from where element to be deleted:    6
Enter a valid position from where element to be deleted:    4
Deleted element is: 50

Array elements are: 10   20      30      40

~~~~MENU~~~~
=>1. Create an array of N integers
=>2. Display of array elements
=>3. Insert ELEM at a given POS
=>4. Delete an element at a given POS
=>5. Exit
Enter your choice: 4

Enter a valid position from where element to be deleted:    2
Deleted element is: 30

Array elements are: 10   20      40

~~~~MENU~~~~
=>1. Create an array of N integers
=>2. Display of array elements
=>3. Insert ELEM at a given POS
=>4. Delete an element at a given POS
=>5. Exit
Enter your choice: 4

Enter a valid position from where element to be deleted:    1
Deleted element is: 20

Array elements are: 10   40

~~~~MENU~~~~
=>1. Create an array of N integers
=>2. Display of array elements
=>3. Insert ELEM at a given POS
=>4. Delete an element at a given POS
=>5. Exit
Enter your choice: 4

Enter a valid position from where element to be deleted:    0
Deleted element is: 10

Array elements are: 40

~~~~MENU~~~~
=>1. Create an array of N integers
=>2. Display of array elements
=>3. Insert ELEM at a given POS
=>4. Delete an element at a given POS
=>5. Exit
Enter your choice: 4

Enter a valid position from where element to be deleted:    0
Deleted element is: 40

No elements to display
~~~~MENU~~~~
=>1. Create an array of N integers
=>2. Display of array elements
=>3. Insert ELEM at a given POS
=>4. Delete an element at a given POS
=>5. Exit
Enter your choice: 4

Array is empty and no elements to delete

~~~~MENU~~~~
=>1. Create an array of N integers
=>2. Display of array elements
=>3. Insert ELEM at a given POS
=>4. Delete an element at a given POS
=>5. Exit
Enter your choice: 5


Also Credits to: 
Manoj Taleka  (manoj89biet@gmail.com)

Yashaswini Jogi (jogi.yash@gmail.com)