Csf101 Unit 03
Csf101 Unit 03
Csf101 Unit 03
Solving
Session: 2023-24
1 // data[2][4]
2 can be initialized like this also
int data[2][4]={{1,2,3,4},{5,6,7,8}};
Read(Scan) 2D Array Elements
Program
1 void main(){
2 int data[3][3],i,j;
3 for(i=0;i<3;i++)
4 {
5 for(j=0;j<3;j++)
Outpu
6 { t
7 printf("Enter array element="); Enter array element=1
8 scanf("%d",&data[i][j]); Enter array element=2
9 } Enter array element=3
10 } Enter array element=4
11 for(i=0;i<3;i++) Enter array element=5
12 { Enter array element=6
13 for(j=0;j<3;j++) Enter array element=7
14 { Enter array element=8
15 printf("%d",data[i][j]); Enter array element=9
16 } 123
17 printf("\n"); 456
18 } 789
19 }
Develop a program to count number of positive, negative
and zero elements from 3 X 3 matrix
Program
1 void main(){ Outpu
2 int data[3][3],i,j,pos=0,neg=0,zero=0; t
3 for(i=0;i<3;i++) Enter array element=9
4 { Enter array element=5
5 for(j=0;j<3;j++) Enter array element=6
6 { Enter array element=-3
7 printf("Enter array element="); Enter array element=-7
8 scanf("%d",&data[i][j]); Enter array element=0
9 if(data[i][j]>0) Enter array element=11
10 pos=pos+1; Enter array element=13
11 else if(data[i][j]<0) Enter array element=8
12 neg=neg+1; positive=6,negative=2,zero
13 else =1
14 zero=zero+1;
15 }
16 }
17 printf("positive=%d,negative=%d,zero=
18 %d",pos,neg,zero);
}
String
(Character Array)
Definition: String
• A String is a one-dimensional array of characters terminated
by a null('\0').
[0] [1] [2] … [9]
char name[10]
;
Syntax
void main()
{
// body part
}
• Why function ?
• Avoids rewriting the same code over and over.
• Using functions it becomes easier to write programs and keep track of what they
doing.
Types of Function
Function
void main()
{
....
func1(); Function call
}
void func1()
{
....
Function
//function body definition
....
}
Function Prototype
A function Prototype also know as function declaration.
A function declaration tells the compiler about a function name and how
to call the function.
It defines the function before it is being used or called.
A function prototype needs to be written at the beginning of the
program.
Syntax Example
return-type function-name (arg-1, arg 2, void addition(int, int);
…);
Function Definition
A function definition defines the functions header and body.
A function header part should be identical to the function prototype.
Function return type
Function name
List of parameters
A function body part defines function logic.
Function statements
Syntax Example
return-type function-name (arg-1, arg 2, void addition(int x, int y)
…) {
{ printf("Addition is=%d“,
//... Function body (x+y)); }
}
WAP to add two number using add(int, int) Function
Program Outpu
t
1 #include <stdio.h> Addition is = 11
2 void add(int, int); // function declaration
3
4 void main()
5 {
6 int a = 5, b = 6;
7 add(a, b); // function call
8 }
9
10 void add(int x, int y) // function definition
11 {
12 printf("Addition is = %d", x + y);
13 }
Actual parameters and Formal parameters
• Values that are passed to the called function from the main
function are known as Actual parameters.
• The variables declared in the function prototype or definition
are known as Formal parameters.
• When a method is called, the formal parameter is temporarily
"bound" to the actual parameter.
Actual paramete Formal
rs parameters
void main() void add(int x, int y) // x and y are
{ formal parameters.
int a = 5, b = 6; {
add(a, b); // a and b are the printf("Addition is = %d", x + y);
actual parameters in this
call. }
}
Return Statement
• If function is returning a value to calling function, it needs to
use the keyword return.
• The called function can only return one value per call.
Syntax
return;
Or
return (expression);
WAP to find maximum number from two number
Program Outpu
t
1 #include <stdio.h> Max value is : 200
2 int max(int a, int b);
3 void main()
4 {
5 int a = 100;
6 int b = 200;
7 int maxvalue;
8 maxvalue = max(a, b);
9 printf("Max value is : %d\n",
10 maxvalue);
11 }
12 int max(int a, int b)
13 {
14 if (a > b)
15 return a; // return a
16 else
17 return b; // return b
18 }
WAP to calculate the Power of a Number
Program Outpu
t
1 #include <stdio.h> Enter any number : 5
2 int power(int, int); Enter power of number : 3
3 void main()
4 {
5 int num, pow, res;
5's power 3 = 125
6 printf("Enter any number : ");
7 scanf("%d", &num);
8 printf("Enter power of number : ");
9 scanf("%d", &pow);
10 res = power(num, pow);
11 printf("%d's power %d = %d", num, pow, res);
12 }
13 int power(int n, int p)
14 { int r = 1;
15 while (p >= 1)
16 {
17 r = r * n;
18 p--;
19 }
20 return r;}
WAP to find Factorial of a Number
Program Outpu
t
1 #include <stdio.h> Enter the number :
2 int fact(int); 5
3 int main() factorial = 120
4 {
5 int n, f;
6 printf("Enter the number :\n");
7 scanf("%d", &n);
8 f = fact(n);
9 printf("factorial = %d", f);
10 }
11 int fact(int n)
12 {
13 int i, fact = 1;
14 for (i = 1; i <= n; i++)
15 fact = fact * i;
16 return fact;
17 }
WAP to check Number is Prime or not
Program
Program
contd.
1 #include <stdio.h> 14 int checkPrime(int n1)
2 int checkPrime(int); 15 {
3 void main() 16 int i = 2;
4 { while (i <= n1 / 2)
17
5 int n1, prime; {
6 printf("Enter the number :");
18 if (n1 % i == 0)
7 scanf("%d", &n1); 19 return 0;
8 prime = checkPrime(n1); 20 else
9 if (prime == 1) 21 i++;
10 printf("The number %d is a prime 22 }
number.\n", n1); 23 return 1;
11 else 24 }
12 printf("The number %d is not a
prime number.\n", n1);
13 }
Outpu
t
Enter the number :7
The number 7 is a prime number.
Category of Function
(1) Function with no argument and but no return value
No
void main() Input void fun1()
{ {
..... .....
No return .....
fun1();
value .....
.....
} }
return -1 i i
Step 1: Step 1:
i=1 i=3
2 9 3 1 8 2 9 3 1 8
i i
Element found at ith index, i=3
Binary Search
• If we have an array that is sorted, we can use a much more
efficient algorithm called a Binary Search.
• In binary search each time we divide array into two equal
half and compare middle element with search element.
• Searching Logic
• If middle element is equal to search element then we got that
element and return that index
• if middle element is less than search element we look right part
of array
• if middle element is greater than search element we look left
part of array.
Binary Search - Algorithm
# Input: Sorted Array A, integer key
# Output: first index of key in A,
# or -1 if not found
Algorithm: Binary_Search (A, left, right)
left = 0, right = n-1
while left < right
middle = index halfway between left, right
if A[middle] matches key
return middle
else if key less than A[middle]
right = middle -1
else
left = middle + 1
return -1
Binary Search - Algorithm
Search for 6 in given array
-1 5 6 18 19 25 46 78 10 11
Index 0 1 2 3 4 5 6 7 2
8 4
9
left right
Key=6, No of Elements = 10, so left = 0, right=9
Step 1: middle index = (left + right) /2 = (0+9)/2 = 4
middle element value = a[4] = 19
Key=6 is less than middle element = 19, so right = middle – 1 = 4 – 1 = 3, left = 0
-1 5 6 18 19 25 46 78 10 11
Index 0 1 2 3 4 5 6 7 2
8 4
9
left right
Binary Search - Algorithm
Step 2: middle index = (left + right) /2 = (0+3)/2 = 1
middle element value = a[1] = 5
Key=6 is greater than middle element = 5, so left = middle + 1 =1 + 1 = 2, right = 3
-1 5 6 18 19 25 46 78 10 11
Index 0 1 2 3 4 5 6 7 2
8 4
9
left right
Step 3: middle index = (left + right) /2 = (2+3)/2 = 2
middle element value = a[2] = 6
Key=6 is equals to middle element = 6, so element found
-1 5 6 18 19 25 46 78 10 11
Index 0 1 2 3 4 5 6 7 2
8 4
9
Element Found
Bubble Sort
• Two records are interchanged immediately upon discovering
that they are out of order
• During the first pass, R1 and R2 are compared and
interchanged in case of our of order, this process is
repeated for records R2 and R3, and so on.
• This method will cause records with a small key to move
“bubble up”,
• After the first pass, the record with the largest key will be in
the nth position.
• On each successive pass, the records with the next largest key
will be placed in positions n-1, n-2 ….., and 2, respectively.
Bubble Sort
Unsorted Array
45 34 56 23 12
swap
swap
swap
5
4
3 4 4 4 4 4
2 4
2 4
3
2 3
1 3
2
1
swap
swap
4
5 5 5
2 swap 5
2 5
2 5
3
2
4 3
4
1 3
4
1 4
2
1
3 2
3
swap
6
2 6
2 6
3
2
5 3
5
1 3
1 3
5
1 5
2
1
4 2
4 2
4 4
swap
3
1 3
1 3
6
1 6
2
1
5 2
5 2
5 2
5 5 5 5
2 2 2 2
6 6 6 6 6 6 6
Procedure: BUBBLE_SORT (K, N)
1. [Initialize]
LAST N
2. [Loop on pass index]
Repeat thru step 5 for PASS = 1, 2, 3, …. , N-1
3. [Initialize exchange counter for this pass]
EXCHS 0
4. [Perform pairwise comparisons on unsorted elements]
Repeat for I = 1, 2, ……….., LAST – 1
IF K[I] > K [I+1]
Then K[I] K[I+1]
EXCHS EXCHS + 1
5. [Any exchange made in this pass?]
IF EXCHS = 0
Then Return (Vector is sorted, early return)
ELSE LAST LAST - 1
6. [Finished]
Return
BUBBLE_SORT(K,N)
• Given a vector K of N elements
• This procedure rearrange the vector in ascending order
using Bubble Sort
• The variable PASS & LAST denotes the pass index and
position of the first element in the vector
• The variable EXCHS is used to count number of exchanges
made on any pass
• The variable I is used to index elements
Thank you