# Introduction to Programming in C Week 3

Session: JAN-APR 2024

Course Name: Introduction to Programming in C

#### These are Introduction to Programming in C Assignment 3 Answers

Question 1

Find moving average
In this question, you have to output the “two moving average” of a sequence of non-negative numbers.
The two moving average is the sequence of averages of the last 2 entries.
For the first number, no average is output.
For example, if the sequence of numbers is a1,a2,a3,a4,a5
The 2-moving average is (a1+a2)/2,(a2+a3)/2,(a3+a4)/2,(a4+a5)/2

Input
The input is a sequence of non-negative numbers, terminated by a -1.
There will be at least 3 numbers in the sequence.
Note: The -1 is not part of the sequence. It is just to indicate that the input has ended.
Output
You have to output the moving average of the sequence. The output should be printed correct to one digit after the decimal.
Hint: Use the format specifier “%.1f” inside printf.

Solution:

``````#include <stdio.h>

int main() {
double current, prev, twoMovingAverage;
scanf("%lf", &prev);
scanf("%lf", &current);

while (current != -1) {
twoMovingAverage = (prev + current) / 2.0;
printf("%.1f ", twoMovingAverage);

prev = current;
scanf("%lf", &current);
}
return 0;
}``````

These are Introduction to Programming in C Assignment 3 Answers

Question 2

Prime Checking
Complete the function int is_prime(int n) to check if a positive number n is prime or not.
The function returns 1 if n is prime, and 0 otherwise.
The function will be used in a program (code given) that prints the prime numbers in a given sequence.

Input
——-
The first line of input is a positive integer N.
The next line contains N positive integers ki for i=1 to N.
Output
———
The elements in the input list which are primes, in the original order.

Solution:

``````#include <stdio.h>

int is_prime(int n) {
if (n <= 1) {
return 0;
}
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
return 0;
}
}
return 1;
}

int main() {
int N;
scanf("%d", &N);

int sequence[N];
for (int i = 0; i < N; i++) {
scanf("%d", &sequence[i]);
}

for (int i = 0; i < N; i++) {
if (is_prime(sequence[i])) {
printf("%d ", sequence[i]);
}
}

return 0;
}``````

These are Introduction to Programming in C Assignment 3 Answers

Question 3

Find the kth Odd integer in sequence
Write a C function to find the kth occurrence of an odd integer in a sequence of non-negative integers.

Input
You are given the input in two lines:
The first line contains a positive integer k.
In the second line, you will be given a sequence of numbers terminated with a -1.
You have to find the kth occurrence of an odd integer in the sequence.
Note: The -1 is not part of the sequence.
Output
If there are k odd numbers in the sequence, then output the kth occurrence of an odd number in the sequence, if present. If there are less than k odd numbers in the sequence, output -1.

Solution:

``````#include <stdio.h>

int find_kth_odd(int k, int sequence[]) {
int countOdd = 0;

for (int i = 0; sequence[i] != -1; i++) {
if (sequence[i] % 2 != 0) {
countOdd++;

if (countOdd == k) {
return sequence[i];
}
}
}
return -1;
}
int main() {
int k;
scanf("%d", &k);

int sequence[100];
int num, i = 0;

while (1) {
scanf("%d", &num);
if (num == -1) {
break;
}
sequence[i++] = num;
}

int result = find_kth_odd(k, sequence);
printf("%d", result);

return 0;
}``````

These are Introduction to Programming in C Assignment 3 Answers

Session: JAN-APR 2023

Course Name: Introduction to programming in C

Question 1

#### Complete the function int find_factorial(int k) to find the factorial of the positive number k.The factorial of a positive integer k, denoted by k!, is the product of all positive integers less than or equal to k.k!=k×(k−1)×⋯×1.InputThe first line of input is a positive integer N.The next line contains N positive integers ki for i=1 to N.OutputFor each ki given as input, print factorial of ki.

Code:-

``````#include <stdio.h>

int find_factorial(int k){
int i,f = 1;
for(i=1;i<=k;i++)
f*=i;
return f;
}

int main(){
int n,k;
scanf("%d",&n);

for(int i=0;i<n;i++){
scanf("%d",&k);
printf("%d ", find_factorial(k));
}

return 0;
}
``````

These are Introduction to Programming in C Assignment 3 Answers

Question 2

Write a C function to find the kth occurrence of an odd integer in a sequence of non-negative integers, and then call your function from main.
Your function should be according to the following declaration:
int find_odd(int k);

Input
——–
You are given the input in two lines:
The first line contains a positive integer k.
In the second line, you will be given a sequence of numbers terminated with a -1.
You have to find the kth occurrence of an odd integer in the sequence.
Note:  The -1 is not part of the sequence.

Output
———-
If there are k odd numbers in the sequence, then output the kth occurrence of an odd number in the sequence, if present. If there are less than k odd numbers in the sequence, output -1.
Sample Input
——————
2
1 4 3 6 5 2 3 4 1 -1
Sample Output
——————–
3

These are Introduction to Programming in C Assignment 3 Answers

Code:-

``````#include <stdio.h>
int find_odd(int k){
int x0=1,cnt=0;
while(x0!=-1)
{
scanf("%d",&x0);
if(x0%2)
++cnt;
if(cnt==k)
{
return x0;
break;
}
}
return -1;
}
int main(){
int k;
scanf("%d",&k);
printf("%d",find_odd(k));
return 0;
}``````

These are Introduction to Programming in C Assignment 3 Answers

Question 3

The two moving average is the sequence of averages of the last 2 entries.
For the first number, no average is output.
For example, if the sequence of numbers is a1,a2,a3,a4,a5
The 2-moving average is (a1+a2)/2,(a2+a3)/2,(a3+a4)/2,(a4+a5)/2.

Code:-

``````#include <stdio.h>
int main()
{
int x0,x1;
scanf("%d",&x0);
while(1)
{
scanf("%d",&x1);
if(x1==-1)
break;
printf("%.1f ",((x0+x1)/2.0));

x0=x1;
}
return 0;
}``````

These are Introduction to Programming in C Assignment 3 Answers