Preamble

Selecting a suitable mortgage deal from a wide range of available mortgage products on the market is an important decision to make for many property buyers. In this assignment, you are asked to develop a C program to select the suitable mortgage deals from a mortgage.txt database, according to the customer's requirements. You need to download mortgage.txt database from the Assessment area of the course Learn page, then save it into your assignment project folder. The database file contains many mortgage deals. Each row contains following mortgage information separated by a space:

Lender Duration of deal
(year)
Initial interest rate
(%)
Rate thereafter
(%)
Loan to value
(%)
Product fees
(Pound)

An example code below gives you an idea of how to read data from a txt file.

#include < stdio.h >
#define SSIZE 20 /* maximum SIZE of string, including NUL */
int main(void)
{
FILE *fin; /* define a file pointer */
int i; /* define variables to store data */
float f;
char string[SSIZE];
fin = fopen("data.txt", "r"); /* open data.txt file for read */
fscanf(fin, "%d %f %s", &i, &f, string);
/* read file and save data to variables */
printf("%d %f %sn", i, f, string);
/* print values of variables to screen */
fclose(fin); /* close file properly */
return 0;
}

Assessment Task

Design, construct and test your program to store data of one mortgage deal in a structure. Each structure should be an element of such a structure array. Prompt a single line of text containing the following requirements a customer can accept:

Minimum duration of deal
(year)
Maximum initial interest rate
(%)
Maximum rate thereafter
(%)
Minimum loan to value
(%)
Maximum product fees
(pound)

Remember to add an instruction fflush(stdout); after your printf( ); prompt. When running your program, type in a single line of data corresponding to the customer's mortgage deal requirements. In the requirements line, Minimum duration of deal, Minimum loan to value and Maximum product fees are given as integer values, but Maximum initial interest rate and Maximum rate thereafter are given as float values with two decimal points. Each value is separated from others by a space. An example requirements line is shown here:

2 2.50 4.50 60 1000

After read in such a line, your program should search through the structure array, to find and print the suitable mortgage deals, which can satisfy customer's requirements. If more than one mortgage deal can meet customers requirements, it is better to print them in the order of increasing Initial interest rate. If the mortgage deals have the same Initial interest rate, sort the deals in the order of increasing Product fees. If you cannot manage sorting, just print them following their default orders in the database.

Having processed one requirements line, your program should then prompt for another and repeat the searching and printing task. For any reason, if no matching deal can be found for a requirements line, your program will simply repeat the prompt for another requirements line. This process should continue until a character 'q' is input to terminate your program.

Your program should be able to handle a database of up to 50 mortgage deals, but it should be designed so that this limit can be changed by editing a single line in the program, then re-compiling it.

Observations on the Task

Before attempting a solution, you should carefully analyse this problem specification. Record your problem analysis and design process.

Proper use of functions, along with testing of each function individually before integration into the complete program, will assist in ensuring correct operation, as well as giving a readable and maintainable program with a clear modular structure. Such an approach will make it possible to create a simplified version of the program early on.

When testing your program, you should identify and test difficult or sensitive parts of the program, by designing test input and comparing the output of your program with the expected correct output. Keep your testing process in your lab book as well. You should comment on your code throughout to explain the meaning of the key instructions. You are expected to use as many knowledge taught in five C language sessions as possible, such as pointer.

Academic Honesty!
It is not our intention to break the school's academic policy. Posted solutions are meant to be used as a reference and should not be submitted as is. We are not held liable for any misuse of the solutions. Please see the frequently asked questions page for further questions and inquiries.
Kindly complete the form. Please provide a valid email address and we will get back to you within 24 hours. Payment is through PayPal, Buy me a Coffee or Cryptocurrency. We are a nonprofit organization however we need funds to keep this organization operating and to be able to complete our research and development projects.