Adsız
Assignment 71
(300 Points)
PART I
Question 1
In this question, you will read words from a file and place them into an a
ay of type
string.
1- Make a data text file “words.txt” – that contains one word on each line. Use at
least 20 words.
2- Now write a program that reads the words in the file into an a
ay of strings
(a repeated word should not be inserted into the a
ay – your program
should not allow that and you should make sure your data file has duplicate
words to test this functionality). Make your a
ay size enough to hold 1000
words. To read the words into the a
ay, you should make a function that
takes a string a
ay, a data size integer (dsize) by reference and an ifstream –
please look at the example we did in class.
3- Declare your a
ay and file streams in main and call the function that reads
the data into the a
ay.
4- Write a printA
ay function that takes a string a
ay, the dsize and an
ostream object so that you could print to the console or to an output file.
5- Print your a
ay from main by calling the printA
ay function – once to the
console and once to a file “wordsoutput.txt”.
6- Use the selectionSort Algorithm that we covered in class to sort the a
ay.
7- Repeat #5 and make sure the a
ay is sorted.
8- Find the maximum string and the minimum string in the a
ay (remember
a
ays are compared based on the ASCII value).
9- Write a function that takes a string and converts every character of it to
uppercase. Now call that function from a function that you pass the a
ay and
dsize to, to uppercase all words in the a
ay (convert all words in the a
ay to
uppercase letter) and call that from main passing your a
ay to that function.
Print the a
ay.
Question 2
A. In this question, you will read two data files that include integers into two
different a
ays – the same way we did in class (but we are doing to a
ays
here). Duplicates are ok.
1- After you read the data into the a
ay (use one function that takes an int
a
ay and a dsize by reference just like we did in class, and call that from
main to fill both a
ays).
1 All numbers in this assignment should be formatted to 2 decimal points.
2- Include a printA
ay function so that you could print the two a
ays. Use
a
ay size 1000.
3- Use a sort algorithm to sort both a
ays.
4- Now write a compareOrder function that takes two a
ays and their data
sizes. If the data size is the same and every element in the first a
ay is equal
to element in the same co
esponding position in the second a
ay (both
sorted) – then the a
ays are equal (return 0). If the very first element that is
different is larger in one a
ay than the other a
ay then the first a
ay is
larger (return 1) otherwise (return -1). If the dsizes are different, the longer
a
ay is larger (return 1 if a
ay1 is larger than a
ay 2 and -1 otherwise).
5- Call the compareOrder function from main passing your two a
ays and their
co
esponding dsizes and give appropriate messages. (Please see Hint -
equired).
6- Now write a compareSum to compare the two a
ays based on the sum of
their elements – follow the same theme of returning 0,1 or -1 – and call from
main with appropriate messaging (please see Hint - required).
B. Make a new program. Copy all your code and it change it so that it uses a
vector instead of an a
ay. You don’t have to use a preset size for the vector.
Hint: Instead of calling compareOrder and CompareSum and including logic code for
messaging in main (ugly), write a void wrapper function compare that would take a
compare type, the a
ays and their dsizes and will call the appropriate compare
function with the a
ays and the dsizes and produce the appropriate messaging).
Part II
Your task is to read a file that consists of credit card accounts, calculate interest
charges, update the balance and write the information to a new file.
Tasks
A. Open a text file and type at least ten records (each full record of an account
should be on a separate line) 2 . Each record will consist of the following items
separated by spaces:
1- Credit Card (16 digits – no dashes or spaces – you should consider these as
characters because you will not do any arithmetic operations on credit card
numbers). You should use a string variable for credit card number.
2- First Name.
3- Last Name.
4- Interest Rate (between 11.4% and 24.9%)
2 Please don’t use TextEdit on the Mac to create your text data. Download Sublime
and use that as your text editor – otherwise, you may have problems.
5- Balance from Previous statement.
6- Cu
ent charges.
Save the file as “balances.txt”3.
B. Now write a C++ program that would read each record, calculate the interest
charges on the previous balance for the cu
ent period (one month), add the cu
ent
charges, calculate the new balance and write out the same record format with the
newly calculated balance (and 0 cu
ent charges of course). Name the file
“newbalance.txt”. You should use a function that returns a double to make the
calculation of the new balance. Your function should take parameters of (interest
ate, previous balance, and cu
ent charges) and return new balance. Please don’t
forget to divide the interest rate by 12 to get the monthly rate.
C. Run your program. Paste your code into a word document, take screen shots (no
phone pictures) of the output. Please upload the word document along with your
“balance.txt” and “newbalance.txt” files to BB.
Part III
1- Write a struct or a class PersonType which will have
firstName, lastName, eID (as an int), salary, and title
2- Write a struct or a class CompanyType that will have an cID,
Name, City, State and Employee as an a
ay of PersonType –
let us limit our exercise to companies of size 1000 or less –
and the number of employees as members.
3- Hide all variables for EmployeeType and CompanyType –
except the a
ay in CompamyType.
4- Write parameterized constructors for each struct/class – a
person can be instantiated by all its attributes except salary
and title. A company can be instantiated by ID, name and
cu
ent number of employees (start with 0 at the time of
instantiation).
5- Write appropriate getters and setters for each. To return a
list of the employees of the company, you obviously can’t
eturn an a
ay. But if you use a vector you could. Ignore that
particular getter – and I will do that part with you on
3 Please make sure your cursor is at the end of the last record not at the beginning of
a new line.
Thursday.
6- Add a void method hire to CompanyType that takes as
parameter a PersonType, salary, title. The method should
add an employee to the a
ay of employees of that company,
and set the salary and title of that Person.
7- Add a method to Employee called giveRaise with a
percentage.
8- In main() –
a. Make a data file that includes employees, and another
one that includes companies, load them in, and
Instantiate a the Companies and Persons – making
sure that an employee works for an existing company
in the company file – if an employee works for a
company that does not exist in the company file, you
need to add the company – your logic should be able
to do this.
. Declare a an a
ay or a vector of CompanyType and
add all companies to the a
ay or vector.
c. Loop through companies and print each company
followed by the employees working in the company.
d. Print the avg salary per company.
e. Print the total avg salary across companies.
f. Assume each company will give a raise that ranges
etween 3%-5%. Assign such a raise to each company
andomly and then give its employees a raise, and
edo parts d and e.
g. Sort all employees of all companies by salary
h. Sort all companies by the avg of their salaries.
i. Write a method or methods to have an employee
move from one company to another.
Submission
1- Submit your cpp files pasted in a word document. Paste the code not an
image.
2- Submit the data files you used separately as files not pasted in the word
document.
3- Include a screenshot of every output for each case. No screenshots =
ZERO. You must paste the screenshot with the appropriate question in
the word document – I will not accept image files. You need to follow
instructions of how to submit.
4- For Question 2 of Part I, please make different sets of two data files to
test your code for all cases.