## 1. Discussion based on course subjects (40 minutes)

- Function declarations
- Examples of functions that return a value
- Examples of void functions
- Parameters passed by value
- Parameters passed by reference
- Local vs global vs formal variables

## 2. Exercises (60 minutes)

**Warning! For each of the following functions a test program will be created. Generate different and diverse input data for tests (minimum values, maximum values, values that have certain characteristics etc. ).**

**(0.20p)**Write an iterative function which for a number n, it returns the n’th number of a Fibonnaci sequence (*fib(0)=0,fib(1)=1,fib(n)=fib(n-1)+fib(n-2), for n>1*)

Ex:*fib(3) = fib(2) + fib(1) = fib(1) + fib(0) + 1 = 1 + 0 + 1 = 2*

*unsigned int fibonnaci_it(int index);***(0.20p)**Write a recursive function which for a number n, it returns the n’th number of a Fibonnaci sequence (*fib(0)=0,fib(1)=1,fib(n)=fib(n-1)+fib(n-2), for n>1*)

Ex:*fib(3) = fib(2) + fib(1) = fib(1) + fib(0) + 1 = 1 + 0 + 1 = 2*

*unsigned int fibonnaci_rec(int index);***(0.20p)**Write a function that tests if a year is leap.

*bool isLeapYear(unsigned short year);***(0.40p)**Write a function that verifies if a number is palindrome. A number is palindrome if read from left to right is equal with the number read from right to left. Ex: 13231 is palindrome but 12331 is not palindrome.

*bool isPalindrom(unsigned long long number);***(0.50p)**Write a function which for a day (year month day) it will return the week day’s number.

*unsigned char dayOfTheWeek(unsigned short year, unsigned char month,**unsigned char day);***(0.50p)**Write a function which, for a natural number, it computes the digit’s sum of its binary representation.*unsigned char sumBinaryFigure(unsigned long long number);***(0.50p)**We say that a natural number is perfect if it is equal to the sum of its divisors strictly lower than it. Write a function that returns the sum of the sum of the two largest perfect numbers smaller than a given number (number> = 30).

*unsigned long perfectNumbers(unsigned int number);***(0,50p)**Declare, then implement a function that calculates the control number for an ISBN-10 code. Hints at https://en.wikipedia.org/wiki/International_Standard_Book_Number**(0,50p)**Write an iterative function that computes the sum of the negative elements of an integer array.**(0.75p)**Write a function that for a given interval [left, right] returns the number of numbers having the maximum number of prime divisors.

Example: For [30, 45] the numbers with the maximum number of prime divisors = 30,42 (they have 3 prime divisors, no other number in the interval has more prime divisors) and the function returns 2.

*unsigned short primeDivisors(unsigned int left, unsigned int right);***(1,00p)**Two consecutive odd natural numbers and primes are called twin prime numbers. Write a function which determines the first*count*pair of twin prime numbers larger than a given*lowerBound.*

Example: For*count*= 1 and*lowerBound*= 2 the function will return a matrix with a row (one result) and 2 columns (pair of numbers – two numbers): 3 5

*matrix primeTwins(unsigned int count, unsigned int lowerBound);***(1,25p)**An array of*n*closed integer intervals is given. Two consecutive intervals in the array that have a nonempty intersection are merged and replaces with their reunion. The operation is repeated until there are no more consecutive intervals with their intersection nonempty.Write a function which determines how many intervals remained in the array after a sequence of operations are performed.**(1,50p)**The following declarations are given:*#define MAX_DNA 10*and*typedef char DNAarray[MAX_DNA];*A computer scientist discovered a new way of coding an integer number using Deoxyribonucleic acid (DNA), which contains A(adenine), C (cytosine), G (guanine) and T (thymine). Thus, in the calculations the numbering base 4 is used, but the numbers of A, C, G and T have the values A = 0, C = 1, G = 2, and T = -1. For example, integer 27 is represented by „GTT” using DNA. Similarly, integer -6 is represented by „TGG” and number 84 is represented by „CCCA”. Justification: GTT = Gx4^{2}+Tx4^{1}+Tx4^{0}= 2×16+(-1)x4+(-1)x1 = 32-4-1=27, TGG = Tx4^{2}+Gx4^{1}+Gx4^{0}= (-1)x16+2×4+2×1 = -16+8+2=-6, CCCA = Cx4^{3}+Cx4^{2}+Cx4^{1}+Ax4^{0}=1×64+1×16+1×4+0x1=84**(0,70p)**Write a void function*void codificationDNA(long integerNr, DNAarray,codeDNA)*which codifies an integer number*integerNr*in his DNA representation. For example, for*integerNr*=27, the function will set*DNAarray*to „GTT”.**(0,50p)**Write a void function*void decodificationDNA(char DNAarray[MAX_DNA], long& integerNr),*which decodifies a DNA array into an integer number*.*For example, for DNAarray=”GTT” the function will obtain*integerNr*=27.**(0,15p)**Write a function*void sumDNA(DNAarray firstArray, DNAarray secondArray, DNAarray sum)*, which sums up two DNA arrays, the result being the DNA representation of the sum of the two numbers, represented by*firstArray, secondArray.*For example, for*firstArray=*„GTT” and secondArray=”C”, the function will return sum=”GTA”.**(0,15p)**Write a function*void subtractDNA(DNAarray firstArray, DNAarray secondArray, DNAarray subtraction)*, which subtracts two DNA arrays, the result being the DNA representation of the subtraction of the two numbers*firstArray and secondArray.*For example , for*firstArray*=”GTA” and*secondArray*=”C”, the function will return subtraction=”GTT”*.*