Saturday, 1 May 2021

Head recursion in C

If a Recursive function calls itself and  that recursive call is not the last statement of the recursive function then the recursion is known as Head recursion.

 

Structure of Head recursion

int fun(int n)

{

    if (n > 0)

    {

        fun(n - 1);

        ...

        ...

    }

}

 

Note:-  Some statements are executed at return time. 

C program to calculate the factorial of nth number using head recursion.

#include <stdio.h>

 

int fun(int n)

{

    if (n == 0)

    {

        return 1;

    }

    else

    {

        return fun(n - 1) * n;

    }

}

 

int main()

{

    int x;



    printf("number ");

    scanf("%d", &x);

    printf("%d\n", fun(x));

    return 0;

}

Output:-





C program to find the square of any positive number using head recursion.

#include <stdio.h>

 

int fun(int n)

{

    static int x = 0;

    if (n > 0)

    {

        x++;

        return fun(n - 1) + x;

    }

    return 0;

}

int main()

{

    int b;

    printf("number ");

    scanf("%d", &b);

    printf("%d", fun(b));

    return 0;

}

Output:- 






 

Tuesday, 27 April 2021

Tail recursion in C

If a recursive function calls itself and that recursive call is the last statement in the function to execute then the recursion is known Tail recursion.

 

Structure of Tail recursion:-

int fun(int n)

{

    if( n >= 0)

    {

       ...

       ...

       fun(n-1);

    }

}

Note: All the statements in the function are executed before the recursive call.

 

Problem:-

C program to count number in descending order using Tail recursion.

 

#include <stdio.h>

 

int fun(int n)

{

    if (n > 0)

    {

        printf("%d\n", n);

        return fun(n - 1);

    }

}

int main()

{

    int a;

    printf("number");

    scanf("%d", &a);

    fun(a);

    return 0;

}

Output:-







Thursday, 22 April 2021

Recursion in C

Recursion is a process in which a function calls itself. In a programming language, if a program allows calling of a function inside the same function, then the function is termed as recursive function and this  process of calling itself is called Recursion.

There are two main requirements for a function to be recursive:

1. Terminating condition -  the function must return when the terminating condition is satisfied.

2. Recursive call - the function must call itself.

Example:-

int fun()

{

    ...

    ...

    fun();

    ...

    ...

}

Here we can see that, the function fun( ) calls itself.

 

C program:-

C program to calculate the the sum of the ‘nth’ number using recursion.

 

#include <stdio.h>

 

int fun(int n)

{

    if (n == 0)

        return 0;

    else

        return fun(n - 1) + n;

}

int main()

{

    int sum = 0, x;

    printf("number");

    scanf("%d", &x);

    sum = fun(x);

    printf("%d\n", sum);

    return 0;

}




Sunday, 11 April 2021

Sum of two number without using '+' operator

 

Idea 1:-

Half adder logic

A half adder has two inputs for the two bits to be added and two outputs one from the ‘sum’ and the other from the ‘carry’ into the higher adder position. A circuit is called a carrying  signal from the addition of the sum of the less significant bits from the X-OR gate the out from AND gate.




Truth table :-

A

B

SUM

CARRY

0

0

0

0

0

1

1

0

1

0

1

0

1

1

0

1

 

In the truth table.  you can see I have provided all possible combinations of  A and B. Now if you observe the truth table clearly,  the sum is nothing but A X-or  B. As we know in X-or two different bits give the output  1.

Carry is equal to A and B because we have like 1, 1 input combination the output is equal to one. Therefor

SUM = A  XOR  B

Carry = A  AND  B

C program

#include <stdio.h>

 

int main()

{

    int a, b, sum, carry;

    printf("a=");

    scanf("%d", &a);

    printf("b=");

    scanf("%d", &b);

 

    while (b != 0)

    {

        sum = a ^ b;

        carry = (a & b) << 1;

        a = sum;

        b = carry;

    }

    printf("sum = %d", sum);

    return 0;

}

Explanation of program

Step 1:  Declared two integer type variable a and b. sum and carry taken from to logic gate which is XOR and AND.

Step 2: Give the input in an integer type variable ‘a’ and ‘b’ by scanf() function.

Step 3: Use while loop check b is not equal to zero. the sum is equal to a^b then after carry is equal to a&b <<1 . and stored the value of sum in a. and stored the value of carry in b.

Step 4: Print the sum.

Output:-






Idea 2

Using while loop

C program

#include <stdio.h>

 

int main()

{

    int a, b;

    printf("a=");

    scanf("%d", &a);

    printf("b=");

    scanf("%d", &b);

 

    if (b > 0)

    {

        while (b != 0)

        {

            a++;

            b--;

        }

    }

    else if (b < 0)

    {

        while (b != 0)

        {

            a--;

            b++;

        }

    }

 

    printf("sum = %d\n", a);

    return 0;

}

Output:-





While loop in c

A while loop allows a part of the code to be executed multiple times depending upon a given Boolean condition. it called a pre-tested loop. Then the ‘While loop’ is mostly used in the case where the number of repetitions is no known in advance.

Syntax of while loop:-

          While(condition)

          {

               Statement;

               Increament/decreasement;

          }

Flowchart:-



Example:-

Problem 1

Write a C program to calculate the sum of two numbers without using the plus operator.

Algorithm

Step 1   a++;  b--;

Step 2   Repeat Step 1 until b becomes 0

Program of the above problem

#include <stdio.h>

 

int main()

{

    int a, b;

    printf("a=");

    scanf("%d", &a);

    printf("b=");

    scanf("%d", &b);

 

    while (b != 0)

    {

        a++;

        b--;

    }

    printf("sum = %d\n", a);

    return 0;

}

Output:-






Note:  This logic is design for only positive integers.

Problem 2

Write a C program to the counting of the number 1 to 10 using a while loop.

#include<stdio.h>

 

int main()

{

    int i=1;

 

    while(i<=10)

    {

        printf("%d\n", i);

        i++;

    }

    return 0;

 

}

Output:-









Problem 3

Write a C program to print the 2s table using a while loop.

#include <stdio.h>

 

int main()

{

    int a, n, i;

    printf("number");

    scanf("%d", &n);

    (i = 1);

    while (i<=n)

    {

        a = 2 * i;

        {

            printf("%d\n", a);

        }

        i++;

    }

}

Output:-




Friday, 9 April 2021

Some basic C programs using Conditional Operator

Conditional operator simply returns one value when the condition is true and returns another value if the condition is false. It also knows as a ternary operator.

Syntax of a ternary operator

  (condition) ? Expression: Expression;

Example

(a>0)?1:0; evaluates to true so 1.

Now understand the ternary operator with the help of some basic problem.

Problem 1

Write a C program to check the numbers are positive or negative.

#include <stdio.h>

 

int main()

{

    int a, c;

    printf("Enter the number ");

    scanf("%d", &a);

    c = (a>0) ? printf("positive number ") : printf("Negative number ");

    // (a > 0) ? printf("positive number") : printf("Negative number");

}

Understanding the above code:

    Declared two integer type variables which are a and c.

    Input is taken in variable ‘a’ by  ‘scanf( )’ function.

    Integer type variable c is used to store the decision based upon the condition by the compiler.

Output








Using this in the above code

 (a > 0) ? printf("positive number") : printf("Negative number");








With both the code output is similar. 


Problem 2

Write a C program to determine the greatest number between the three numbers.

#include <stdio.h>

 

int main()

{

    int a, b, c, big;

    printf("a=");

    scanf("%d", &a);

    printf("b=");

    scanf("%d", &b);

    printf("c=");

    scanf("%d", &c);

    big = a > b ? (a > c ? a : c) : (b > c ? b : c);

    printf("Greatest number %d\n", big);

}

Output






Wednesday, 7 April 2021

Conditional Operator in C

Conditional operator is a Ternary operator available in list of operators in the C language. It requires three operands. Conditional statements are used to make decision based upon condition. Ternary operator requires two special symbols (‘?’ and ‘:’) to express it.

The program execution of conditional operator is just like if-else conditional statement.

Syntax of conditional operator

Expression 1? Expression 2: Expression 3;

Working of Ternary Operator

As in Expression 1? Expression 2:  Expression3. Expression 1 is the Boolean expression. If Expression1 evaluates to 0 which is a Boolean expression then that simply means FALSE and if the Expression1 evaluates to 1 this simply means TRUE therefore Expression3 or Expression2 will get evaluated based on Expression1.

For example

#include<stdio.h>

int main ()

{

    int a, c;

    printf("Enter the number  ");

    scanf("%d", &a);

    c = (a>5) ? printf("True") : printf("False");

}

Output:



Tuesday, 30 March 2021

String Format in Python

Formatting string enables the capability to add dynamic content or string to it in an easy way. It allows to update contents in a string in simpler way.

String Format using format () method

Syntax: template_string.format(positional_args, keyword_args) 

The template string contains the replacement fields which can be replaced using the positional_args and keyword_args used in the method. The method returns the formatted string.

In the template string, the replacements fields are enclosed within curly braces “{  }”. Rest of the string content remains unchanged.

Using positional arguments

print('{0} {1} the {2} nicely'.format('This', 'formats', 'string'))

 


Here, <template_string> is '{0} {1} the {2} nicely'. The replacement fields are {0}, {1}, and {2} with zero-based positional arguments 'This', 'formats', 'string'. The replacements fields are replaced with the corresponding positional arguments by the format method.

 

Using keyword arguments

print('{name} is {age} years old'.format(name='Python', age= 30))

 


Here, the replacement fields are {name}, {age}and the corresponding keyword arguments with values. Each fields are replaced with corresponding keyword argument values.