Friday, November 30

Program To Find The Greatest Among Ten Numbers



Write a C program to find the greatest among ten numbers.

Program:

#include <stdio.h>
int main() 
{
int a[10];
int i;
int greatest;
printf("Enter ten values:");


for (i = 0; i < 10; i++)                                         //Store 10 numbers in an array
   {
      scanf("%d", &a[i]);
    }


greatest = a[0];                                                  //Assume that a[0] is greatest
for (i = 0; i < 10; i++) 
  {
if (a[i] > greatest) 
      {
           greatest = a[i];
       }
  }
printf("\nGreatest of ten numbers is %d", greatest);
return 0;
}


Output:
Enter ten values: 2  53  65  3  88  8  14  5  77  64 Greatest of ten numbers is 88

Explanation with example:
Entered values are 2, 53, 65, 3, 88, 8, 14, 5, 77, 64
They are stored in an array of size 10. let a[] be an array holding these values.
/* how the greatest among ten numbers is found */
Let us consider a variable 'greatest'. At the beginning of the loop, variable 'greatest' is assinged with the value of
first element in the array greatest=a[0]. Here variable 'greatest' is assigned 2 as a[0]=2.
Below loop is executed until end of the array 'a[]';.
for(i=0; i<10; i++)
{
if(a[i]>greatest)
{
greatest= a[i];
}
}
For each value of 'i', value of a[i] is compared with value of variable 'greatest'. If any value greater than the value
of 'greatest' is encountered, it would be replaced by a[i]. After completion of 'for' loop, the value of variable
'greatest' holds the greatest number in the array. In this case 88 is the greatest of all the numbers

Program To Find The Greatest Of Three Numbers



Write a C program to find the greatest of three numbers.

Program:

#include <stdio.h>
int main()
{
int a, b, c;
printf("Enter a,b,c: \n");
scanf("%d %d %d", &a, &b, &c);
if (a > b && a > c) 
      {
          printf("a is Greater than b and c");
      }
else if (b > a && b > c) 
     {
         printf("b is Greater than a and c");
      }
else if (c > a && c > b)
      {
         printf("c is Greater than a and b");
       }
else 
      {
        printf("all are equal or any two values are equal");
       }
return 0;
}

Output:
Enter a,b,c: 3 5 8
c is Greater than a and b

Explanation with examples:
Consider three numbers a=5,b=4,c=8
if(a>b && a>c) then a is greater than b and c
now check this condition for the three numbers 5,4,8 i.e.
if(5>4 && 5>8) /* 5>4 is true but 5>8 fails */
so the control shifts to else if condition
else if(b>a && b>c) then b is greater than a and c
now checking this condition for 5,4,8 i.e.
else if(4>5 && 4>8) /* both the conditions fail */
now the control shifts to the next else if condition
else if(c>a && c>b) then c is greater than a and b
now checking this condition for 5,4,8 i.e.
else if(8>5 && 8>4) /* both conditions are satisfied */
Thus c is greater than a and b.

Swap Two Numbers Using Bitwise Operators


Write a C program to swap two numbers using bitwise operators.

Program:

#include <stdio.h>
int main()
{
int i = 65;
int k = 120;
printf("\n value of i=%d k=%d before swapping", i, k);
i = i ^ k;
k = i ^ k;
i = i ^ k;
printf("\n value of i=%d k=%d after swapping", i, k);
return 0;
}

Explanation:
i = 65; binary equivalent of 65 is 0100 0001
k = 120; binary equivalent of 120 is 0111 1000
i = i^k;
i...0100 0001
k...0111 1000
---------
val of i = 0011 1001
---------
k = i^k
i...0011 1001
k...0111 1000
---------
val of k = 0100 0001 binary equivalent of this is 65
---------(that is the initial value of i)
i = i^k
i...0011 1001
k...0100 0001
---------
val of i = 0111 1000 binary equivalent of this is 120
--------- (that is the initial value of k)

C- Swap Two Numbers Without Using a Temporary Variable



Write a C program to swap two numbers without using a temporary variable.

Swapping interchanges the values of two given variables.

Logic:
step1: x=x+y;
step2: y=x-y;
step3: x=x-y;

Example:
if x=7 and y=4
step1: x=7+4=11;
step2: y=11-4=7;
step3: x=11-7=4;
Thus the values of the variables x and y are interchanged.

Program:

#include <stdio.h>
int main()
{
int a, b;
printf("Enter values of a and b: \n");
scanf("%d %d", &a, &b);
printf("Before swapping a=%d, b=%d\n", a,b);

a = a + b;
b = a - b;
a = a - b;
printf("After swapping a=%d b=%d\n", a, b);
return 0;
}

Output:
Enter values of a and b: 2 3
Before swapping a=2, b=3
The values after swapping are a=3 b=2

SQL- Having Clause



Having Clause

Having clause is used to filter records in result-set similar to where clause, But you can’t use aliases in Having clauses,you have to repeat the original expression. A Where clause must come before a Group By clause and a Having clause has to come after the Group By.The two clauses operate differently. A Where clause does not return unwanted rows, They are filtered out at source. A Having clause has to return the records so the grouping and aggregating can be done before they are filtered out. Where clause can't be used with aggregate functions thus Having clause is used.


Syntax:

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value        // acc. to result-set required,where is 

                                           used 
GROUP BY column_name
HAVING aggregate_function(column_name) operator value   
    //original aggregate
                                                              expression is used
                                                                                                        
Example:
Consider the following Item_order table
Now you want to check whether any customer has order Total_price less than 15000. By using the below query we can find that.

Query 1:
        SELECT Cust_Name,SUM(Price) as Total_Price FROM   Item_order
        GROUP BY Cust_Name
        HAVING Total_Price <15000


Result:Error,Invalid column name 'Total_Price'. Because you can’t use aliases in Having clauses,you have to repeat the original expression. Now see the corrected query.

Query 2:
        SELECT Cust_Name,SUM(Price) as Total_Price FROM Item_order
        GROUP BY Cust_Name
        HAVING SUM(Price) <15000


Result:
Now if you want to find the customers "John" or "Rahul" have a order Total_Price of more than 20000. Just add a where clause, See the below query.

Query 3:
       SELECT Cust_Name,SUM(Price) as Total_Price FROM  Item_order
       WHERE Cust_Name='John' OR Cust_Name='Rahul'
       
GROUP BY  Cust_Name
       
HAVING SUM(Price)>20000

Result:

Thursday, November 29

Swap Two numbers Using a Temporary Variable



Write a C program to swap two numbers using a temporary variable.
Swapping interchanges the values of two given variables.

Logic:
step1: temp=x;
step2: x=y;
step3: y=temp;

Example:
if x=5 and y=8, consider a temporary variable temp.
step1: temp=x=5;
step2: x=y=8;
step3: y=temp=5;
Thus the values of the variables x and y are interchanged.

Program:

#include <stdio.h>
int main() 
{
int a, b, temp;
printf("Enter the value of a and b: \n");
scanf("%d %d", &a, &b);
printf("Before swapping a=%d, b=%d \n", a, b);
temp = a;
a = b;
b = temp;
printf("After swapping a=%d, b=%d", a, b);
return 0;
}

Output:
Enter the values of a and b: 2 3
Before swapping a=2, b=3
After swapping a=3, b=2

To Check The Number Is Even Or Odd



Write a C program to check whether the given number is even or odd.

Program:

#include <stdio.h>
int main() 
{
int a;
printf("Enter a: \n");
scanf("%d", &a);

if (a % 2 == 0) 
   {
          printf("The given number is EVEN\n");
    }
else 
  {
          printf("The given number is ODD\n");
   }
return 0;
}


Output:

Enter a number : 2
The given number is EVEN

Explanation with examples:

Example 1: If entered number is an even number
Let value of 'a' entered is 4
if(a%2==0) then a is an even number, else odd.
i.e. if(4%2==0) then 4 is an even number, else odd.
To check whether 4 is even or odd, we need to calculate (4%2).
/* % (modulus) implies remainder value, Therefore if the remainder obtained when 4 is divided by 2 is 0, then 4 is even. */
4%2==0 is true
Thus 4 is an even number.

Example 2: If entered number is an odd number.
Let value of 'a' entered is 7
if(a%2==0) then a is an even number, else odd.
i.e. if(7%2==0) then 4 is an even number, else odd.
To check whether 7 is even or odd, we need to calculate (7%2).
7%2==0 is false
 /* 7%2==1 condition fails and else part is executed */
Thus 7 is an odd number.

Factorial Of a Number Using Recursion


      
      Write a C program to find factorial of the given number using recursion.

Recursion: A function is called 'recursive' if a statement within the body of a function calls the same function. It is also called 'circular definition'. Recursion is thus a process of defining something in terms of itself.

Program: 

#include <stdio.h>
int fact(int n);
int main() 
{
int x, i;
printf("Enter a value for x: \n");
scanf("%d", &x);
i = fact(x);
printf("\nFactorial of %d is %d", x, i);
return 0;
}
 int fact(int n) 
{

if (n <= 0)                                            // n=0 indicates a terminating condition 
     {
           return (1);
      } 
else
     {
        /* function calling itself */
         return (n * fact(n - 1));            // n*fact(n-1) is a recursive expression 
            
     }
}


Output:

Enter a value for x:
4
Factorial of 4 is 24


Explanation:

fact(n) = n * fact(n-1)
If n=4
fact(4) = 4 * fact(3) there is a call to fact(3)
fact(3) = 3 * fact(2)
fact(2) = 2 * fact(1)
fact(1) = 1 * fact(0)
fact(0) = 1
fact(1) = 1 * 1 = 1
fact(2) = 2 * 1 = 2
fact(3) = 3 * 2 = 6
Thus fact(4) = 4 * 6 = 24
Terminating condition(n <= 0 here;) is a must for a recursive program. Otherwise the program enters into an infinite loop.

SQL- User Defined Function For Date Format ( DD_Mon_YYYY )



Function for user defined date format ( DD_Mon_YYYY )
create function dbo.CustomDate_DD_MON_YYYY(@datee varchar(255))
returns varchar(255)
As
begin

SET @datee = (CONVERT(VARCHAR(11), GETDATE(), 106)

return @datee

end

**This function allows you to get result-set of date field in DD_Mon_YYYY format. 
i.e. 07 oct 2012

SQL- User Defined Function For Date Format ( Mon_DD_YYYY )


Function for user defined date format ( Mon_DD_YYYY )
create function dbo.CustomDate_Mon_DD_YYYY(@datee varchar(255))
returns varchar(255)
As
begin

SET @datee = CONVERT(VARCHAR(12), GETDATE(), 107)

return @datee
end

**This function allows you to get result-set of date field in Mon_DD_YYYY format. i.e. oct 07 2012

Wednesday, November 28

SQL- GROUP BY



Group By

The GROUP BY statement is used in conjunction with the aggregate functions to group the result-set by one or more columns. You can’t have a non-aggregated column and an aggregated column in a column list, unless you include a Group By clause.

Syntax:

  " SELECT column_name, aggregate_function(column_name)
    FROM table_name
    WHERE column_name operator value
    GROUP BY column_name "                // where clause can be

                                             used depending   
                                             on result need

Example:
See the below Item_Order table.
Now applying the below query.

   " SELECT Cust_Name,SUM(Price)as Total_Price FROM Item_Order
     GROUP BY Cust_Name "

Result:
If you execute the query with out Group By, It will throw an error message saying "Column 'Item_Order.Cust_Name' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause." 


Group By More Than One Column

Lets see the below query.


  " SELECT Cust_Name, Dat, SUM(Price)as Total_Price FROM   

    Item_Order
    GROUP BY Cust_Name, Dat "

Here Group By is applied on both columns Cust_Name and dat.

Result:




Note:If Rahul order 1 more item on 9/16/2012, Lets say for Price 2000. Then Total_Price will be 17000 for that date and Cust_name.

Click here to know more about Aggregate Functions

Tuesday, November 27

SQL- Order By



Order By
This is used to sort the result that is obtained, in ascending or descending order by using keyword Asc or Desc. It sorts the result-set by a specified column. By default it sorts in ascending order.

Syntax:
    " SELECT column_name(s)
      FROM table_name
      ORDER BY column_name(s) ASC | DESC "

Now see the examples below.
  •  " select FirstName, LastName from DimCustomer order by 
       FirstName  "
  •  " select FirstName, LastName from DimCustomer order by 
       FirstName asc "                                                                          
Both queries give same output, because by default order by clause sorts in ascending.

Result:


Order By Desc
This sorts the result-set in descending order, See the below query.

       " select FirstName, LastName from DimCustomer order by  
         FirstName desc "

Result:
Note: We can use where clause and order by clause with in same select statement depending on how we need result-set.





Monday, November 26

SQL- Where Clause Part(2)



Where And Or
Where clause using AND operator and OR operator together. And operator takes precedence over the Or operator. See the below queries and its results.

1)    " select FirstName, LastName, EnglishEducation, 

        EnglishOccupation from dimcustomer
        where englisheducation = 'Partial College'
        and englishoccupation = 'Clerical' or 
        englishoccupation = 'Manual' "

2)   " select FirstName, LastName, EnglishEducation, 

       EnglishOccupation from dimcustomer
       where (englisheducation = 'Partial College'
       and englishoccupation = 'Clerical'or 
       englishoccupation = 'Manual' "

Result:

You could see that both queries returns the same result and Clerical is only with Partial College. This is because And operator takes precedence over the Or operator. Here both queries means the same, Only parentheses shows the precedence of the And operator over the Or operator. Now see the below query, Where the parentheses are placed at different position.


       " select FirstName, LastName, EnglishEducation,   
         EnglishOccupation from dimcustomer
         where englisheducation = 'Partial College'
         and (englishoccupation = 'Clerical' or 
         englishoccupation = 'Manual' )"


Result:
Here you could see that only 'Partial College' with englishoccupation as 'Clerical' or 'Manual' is returned.

Note: Same Where Clause conditions can be applied on numeric Columns.





Wildcards (using Like And Not Like)
SQL wildcards can be used for searching data in a database.


  •    % A substitute for zero or more characters
  •    _  A substitute for exactly one character
  • [charlist] Any single character in charlist
  • [^charlist] / [!charlist] Any single character not in charlist

See the below Queries and its results.

      " select FirstName from DimCustomer where  FirstName like 'C%' "

Result:



 You could see First_name starting with 'C' is returned. Same result can be obtained by using String functions, See the query below.

" select FirstName from DimCustomer where  LeftFirstName,1)='C' "


Now see the rest queries


    1)    " select FirstName from DimCustomer where  FirstName 

            like '%C%' "

    2)    " select FirstName from DimCustomer where  FirstName 
            like '%C' "

Results:

The First query will return First_name having 'C' either at starting or at end or in the middle. While the second query will return  First_name having 'C' at end.




Not Like

 " select FirstName from DimCustomer where  FirstName not like 'C%' "

Result:

This will display names which doesn't start with 'C '.



See the below query.


       " select FirstName from DimCustomer where  FirstName 

         like 'Mar_' "

Result:

You could see that name starting with mar and any one character at end is returned, Here mary and marc are returned. Now if we want to select the persons with a FirstName that starts with "m" or "c". Then see below query.

       "  select FirstName from DimCustomer where  FirstName 

          like '[mc]%'  "

Result:


Now if we want to select the persons with a FirstName that doesn't starts with "m" or "c". Then see below queries, both gives same result.

       " select FirstName from DimCustomer where  FirstName 
         like '[^mc]%' "
       " select FirstName from DimCustomer where  FirstName 
         like '[!mc]%' "

Result:




**Related topics