Description
Part 1 50pts
In this part you will deal with prime numbers and Goldbach conjecture. Goldbach conjecture claims that every even integer
that is greater than 2 can be written as a sum of two prime numbers. You will implement isPrime function that checks
whether given integer is a prime number or not and goldbach function which takes an integer and returns two prime
numbers whose sum is equal to given integer.
Please consider that each different approach may result in finding different prime numbers so that there will be multiple
correct solution for goldbach function.
Signature
int isPrime(int num);
int goldbach(int num, int *p1, int *p2);
Sample Usage
int num = 824, p1, p2;
if(goldbach(num,&p1,&p2))
printf(“%d = %d + %d”,num,p1,p2); /* may print 824 = 821 + 3 */
else
printf(“You should provide even number.”);
Return Value
isPrime – 1 if num is prime, 0 otherwise.
goldbach – 1 if num is even and two prime numbers found, 0 otherwise.
Part 2 30pts
Write a function that dispenses change. Function takes 8 parameters, first parameter is the paid amount, second parameter
is the due amount. Rest of the parameters are the number of Turkish lira coins that should be returned from this function.
Parameters are sorted in descending order. Your function should return 0 in case of error, 1 otherwise.
Signature
int dispenseChange(double paid, double due, int *tl1, int *krs50, int *krs25, int
*krs10, int *krs5, int *krs1);
Sample Usage
double paid = 5, due = 3.75;
int tl1,krs50,krs25,krs10,krs5,krs1;
if(dispenseChange(paid,due,tl1,&krs50, &krs25, &krs10, &krs5, &krs1)) /* returns 1 */
printf(“Change: 1TL:%d, Kurus-50:%d,25:%d,10:%d,5:%d,1:%d\n”,tl1,krs50,krs25,krs10,krs5,krs1);
else
printf(“Unable to dispense change.”);
Part 3 20pts
In the last part, you’re given a travelling card (IstanbulCard) automation. Every member has a balance(bakiye) and a
remaining monthly use (Aylık kullanım hakkı). There are 3 different card types: Normal, Student, and Teacher cards. Cards
are charged with different amounts: Normal cards are charged 2.30₺, student cards are charged 1.15₺, teacher cards are
charged 1.65₺. If user has a monthly subscription, you should decrease it by 1. If user has no subscription, you should
charge user according to his/her card type. If remaining monthly use is lower than 1, you should assume that user does not
have a monthly subscription.
You should not use if statements or ternary operator for determining user’s card types, you can only use switch statement.
Card types are represented with integers:
Normal Card : 1, Student Card : 2, Teacher Card : 3
Return values and error conditions:
– Insufficient balance or monthly use: return -1
– Invalid card type: return -2
– 0, if there is no error.
Signature
int charge(int cardType, int* monthlyUse, double* balance);
Sample Usage
int monthlyUse = 120;
double balance = 20.0;
if(!charge(1,&monthlyUse, &balance) < 0)
printf(“Remaining monthly use: %d – Remaining Balance: %.2f\n”,monthlyUse,balance);
else
printf(“Insufficient balance.”);
Good luck!