Solved-Homework 03- Solution

$30.00 $19.00

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…

You’ll get a: . zip file solution

 

 
Categorys:
Tags:

Description

5/5 – (2 votes)

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!