Objective1 to give students practice in calling and writing

Assignment Help C/C++ Programming
Reference no: EM13350365

Objective

1. To give students practice in calling and writing their own functions.

2. To give students practice in implementing and planning complex programs.

Introduction: Programmers for a Better Tomorrow

Programmers for a Better Tomorrow is an organization dedicated to helping medical societies, charities, and scholarship organizations manage several tasks so that they can focus on making the world a better place!  They have asked you and your classmates to assist them develop some new programs to benefit their organizations.

Problem: Charity Ball (charityball.c)

Many charities support good causes, but one of the difficulties each of them has is organizing their fundraising events. After nearly a semester of C programming, you've decided that you'd like to show your skills to create a program that organizes the typical activities at a fund-raising gala. In particular, your program will help manage the subsequent task:

1) Ticket sales

2) Silent Auction

3) Raffle

4) Drink sales

Your program will log the number of tickets sold both in advance and at the event, a silent auction for donated items, a raffle for other donated items and the number of drinks sold.

This is a very difficult program.  It is highly recommended that you approach it in a modular fashion:

1. Read the instructions carefully

2. Check data structures that you will need to use (structures, arrays, counters, etc.)

3. Check major tasks to be completed

a. Separate tasks into functions where appropriate

4. Complete each task and test carefully before moving on

There are varying levels of difficulty in the program.  There is no shame in not completing this assignment. The important part is that you answer at least some parts of it. Try to add features to your program to solve each test case given, in order:

                TICKETS

                RAFFLE

                DRINKS

                AUCTION

 

To facilitate grading, add in your header comment which portions of the assignment you have implemented. Your choices are as follows:

(1) Ticket Sales and Total Revenue, Only

(2) Ticket Sales, Award Raffle, Raffle Ticket Sales, and Total Revenue Only

(3) Ticket Sales, Drink Ticket Sales, Raffle Ticket Sales, Award Raffle, and Total Revenue Only

(4) All options in plus Auction Ticket Sales, Award Auction and Award Person

Program Details

Ticket Sales Details

You will sell tickets in advance and at the door. Prices for buying in advance and at the door may be given. Also, the total number of tickets sold in advance will be given. Every guest will have a unique number. If there are ntickets sold in advance, then these guests will be numbered 0 through n-1. As the event starts, requests to buy tickets at the door may be made and these guests will be numbered sequentially, starting at the lowest unassigned number. The maximum number of guests will be 1000.

Silent Auction Details

The silent auction will have upto 1000 items, each with a given "market" value. At any time, users can bid on any item, so long as the bid exceeds the previous bid by the minimum increase value, which will be given. At the point in time when the auction is closed, the items with at least one bid are given to the users who have placed the last counted bid on that item. Your program must always keep track of all of the best bids on items so that no matter when the auction closes, you'll have all the data for who has won all of the items. Any item without a bid goes to no one. The market value of the item will be used to calculate each user's net "loss" or "gain".

Raffle Details

There will be a given number for the total number of raffle tickets sold, that will be 100000 or fewer. Guests can buy raffle tickets for a set price (this will be given). There will be a number of prizes awarded from the raffle (not to exceed 100) after the raffle has finished. For each of these prizes you will be given its "market" value. For each raffle ticket, you'll have to keep track of which guest has it. The raffle tickets will be numbered starting at 0 through the number of tickets minus one. After the raffle finishes, you will be given the raffle numbers pulled for the winners of each prize. You will be guaranteed that these numbers correspond to numbers that were previously handed out during the raffle. You must determine who wins each prize.

Drink Sales

There will be 10 kinds of drinks labeled 0 through 9. For each type of drink, you will be given an initial inventory and the cost of a single drink of that type. (You might be told that there are 100 of drink 0 each costing $5.00, 50 of drink 1 each costing $7,99, etc.) Guests may come up at any time and order any quantity of a particular drink. They will receive the number they request if that quantity is in inventory. Otherwise, they'll just receive what is left. If none of that particular type of drink is left, then they will receive no drinks. You will simply have to keep track of the total amount of money collected from drink sales, as well as the remaining inventory at the end of the night.

You should write several functions to help you handle these cases.

You should also consider creating and using structures to organize your data.  Bonus points are available for correctly defining and using structures in your program.

In order to test your program thoroughly, you will be asked to take in input from a file and produce output for each event that occurs, in time.

Input Specification

The first line of the file contains the subsequent three values, separated by spaces:

Cost of the presales tickets (in dollars), Cost of the tickets at the door (in dollars), and the number of presale tickets. The first two values will be positive real numbers to two decimal places and the last will be a positive integer.

The second line of the file will contain one positive integer representing the number of auction items followed by a positive real value to two decimal places (at most) representing the minimum bid increment, in dollars. The first value is guaranteed to be 1000 or less and the second will be in between 1 and 50, inclusive.

The third line of the file will contain all the prices of the auction items, in dollars, separated by spaces, in order. Thus, the first price is the price of item 0, the next price is the price of item 1, and so on. These values will be real numbers represented to upto 2 decimal places.

The fourth line of the file will contain the three following positive integers pertaining to the raffle: the number of raffle tickets available, the cost of a raffle ticket in dollars, and the number of raffle prizes. (It's strange to have raffle tickets that don't cost a whole number of dollars.)

The fifth line of the file will contain each of the values of the raffle items, in dollars, separated by spaces, in order. Thus, the first price is the price if item 0, the next price is the price of item 1, and so on. These values will be real numbers with upto 2 decimal places.

The sixth line of the file will contain ten positive integers representing the number of each of the drinks 0 through 9, in order, that are in stock.

The seventh line of the file will contain ten positive real numbers with upto 2 decimal places representing the price of each of the drinks 0 through 9, in order.

The eighth line of the file will contain a single positive integer, numEvents, representing the number of events that occur at the charity ball. These events are split into two groups: actions by guests at the ball and awards given (raffle, auction, person, totalrevenue). All of the actions precede all of the awards.

The following numEventslines will contain information about each event that occurs, with one event or award described for each line.

You will produce exactly one line of output for each event described. Here are the formats of each event that could occur:

If a patron buys a ticket at the door, a command will be on a line by itself:

BUY TICKET k

where k is a positive integer indicating the number of tickets bought at the door. These guests will be numbered as previously mentioned. You are guaranteed that the total number of tickets bought, including presales, will not exceed 1000.

If a patron makes a bid in the silent auction, a command of the following form will be issued:

BIDITEM k p d

where k represents the item number for which the bid is being placed, p represents the number of the person placing the bid, and d represents the dollar amount the person has bid. This last value is a positive real number to two decimal places while the others are non-negative integers within the appropriate ranges.

The following command closes the auction. Any bids made after this command is executed are ignored.

CLOSEAUCTION

If a guest desires to buy raffle tickets, a command with the following format will be used:

BUY RAFFLE k p

This command lets person p buy exactly k raffle tickets. The raffle tickets are numbered as previously described, so long as the tickets are still available. If they aren't available, the person gets whatever tickets remain. If a guest desires to buy drinks, a command with the following format will be used:

BUY DRINK k n

where k is the quantity of drinks being bought and n is the number of the drink, in between 0 and 9, inclusive, so long as that particular drink is in stock the sale is made. If fewer than k drinks are in stock, the remaining drinks are sold.

The last several commands in the file will deal with awarding prizes, and checking on the status of individuals. These commands will take the following forms.

A query about a raffle item will be of the following form:

AWARD RAFFLE i t

wherei is the raffle item being given out and t is the number of the winning ticket of that raffle item. Your program will have to respond with the winner of this item. You will be guaranteed that this query will appear EXACTLY once for each raffle prize and that all queries of this form will appear AFTER the last raffle ticket is sold. Furthermore, you are guaranteed that the raffle ticket number was purchased by an individual and that the raffle prize number is valid. Finally, a single raffle ticket will correspond to at most one raffle prize.

A status query about a silent auction item will be of the following form:

AWARD AUCTION i

wherei represents the silent auction item being queried. Your program will have to respond with the winner of this item (you are guaranteed that all queries will be about items that have at least one bid, and hence, a winner) and the amount they paid for it. You will receive exactly one query on each silent auction item that received one or more bids.

A status query about an individual will be of the following form:

AWARD PERSON i

For this query, you'll simply have to determine person i's net gain or loss at the event. Their total gain is the sum of the values of raffle items and silent auction items they have been awarded. Their total cost is the price of the ticket they bought for the event (you can determine if it was an advance ticket or not), the cost of all the raffle tickets they bought, and the amount they spent on each item they won in the silent auction. Note that drink costs are not factored in here because it's assumed that the value of the drink is equal to its cost. A person's net gain/loss is their total gain minus their total cost.

The final status query in the file will be the following line:

TOTAL REVENUE

Output Specification

For the input command of the form:

BUY TICKET k

output a single line of the form:

SOLD TICKETS a - b

where a is the starting number of the tickets sold and b is the ending number (inclusive) of the tickets sold. If k is 1, then a and b will be equal. (Note: For the very first command of this type, the value of a will equal the number of presole tickets, since the presale tickets are numbered from 0 to the total number of presale tickets minus 1.)

For the input command of the form:

BIDITEM k p d

output a single line with one of the following forms:

BIDITEM k ACCEPTED for PERSON p at d DOLLARS

BIDITEM k REJECTED for PERSON p at d DOLLARS

The two reasons to reject a bid are if the raise of the bid isn't equal to or more than the minimum required or if the auction has been closed already. For an initial bid, it must be equal or more than the minimum raise of the bid. Thus, we assume that without any bids, the first price of the item is $0.

For the CLOSEAUCTION command, simply print a single line with the exact same output.

For the input command

BUY RAFFLE k p

output a single line of one of the two following forms:

RAFFLE TICKETS a - b given to PERSON p

NO RAFFLE TICKETS given to PERSON p

where a represents the first raffle ticket number issued and b represents the last raffle ticket number issued to person p. If there are no more raffle tickets left with the command is issued, the latter format is used. Note that the former format may be used if the person asks for a certain number of raffle tickets, but gets fewer since she bought all that were left.

For the input command

BUY DRINK k n

output a single line of one of the two following forms:

SOLD k of DRINK n

NO DRINK n SOLD

where k represents the number of the drinks sold (a positive integer) and n represents the drink number, ranging from 0 through 9, inclusive. Note that for this line of output, the value of k may differ from the number of drinks requested by the guest, if the inventory runs out. If the drink requested is already sold out, the latter message should be printed.

For the input command

AWARD RAFFLE i t

output a single line of the following format:

RAFFLE i WON BY PERSON p

wherei is the raffle item in question (in the query) and p is the number of the guest who won the item.

For the input command

AWARD AUCTION i

output a single line of the following format:

AUCTION ITEM i WON BY PERSON p for $d.dd

wherei is the number of the auction item, p is the person who won the item and d.dd is the number of dollars he paid for it, to two decimal places.

For the input command

AWARD PERSON i

output a single line of one of the two following formats:

PERSON i is UP $d.dd

PERSON i is DOWN $d.dd

If the person is exactly even, you may use either format. Otherwise, pick the appropriate format based on whether or not they've gained or lost value from the event accordingly. You may not receive a query for each person who attended the auction.

For the input command

TOTALREVENUE

output a single line with the following format:

TOTALREVENUE is $d.dd

where d.dd is the total amount gained by the event via ticket sales, auction sales, raffle ticket sales and drink sales. (We are assuming that all items were donated so that there was no cost associated with the event.)

Sample Input/Output

Four sets of input and output are provided with the assignment, showing the different levels of difficulty.  You should try to complete auction01 first, then proceed to auction02, etc.

Each test file is labeled as auctionXX.txt for input and auctionXX.out for output.  Out files can be opened in notepad.

Reference no: EM13350365

Questions Cloud

Questionfive college seniors with main in accounting are : questionfive college seniors with main in accounting are discussing alter - native career plans. the first senior plans
Question1 the project is based upon you finishing the : question1 the project is based upon you finishing the bellwether garden supply bgs. this project will need to you to
Questionthe peachtree project is owed at the end of week 10 : questionthe peachtree project is owed at the end of week 10. the peachtree project is based up to you completing the
Learning objectives-use modern software tools to analyze a : learning objectives-use modern software tools to analyze a structural system of a building.-use the standard asce 7
Objective1 to give students practice in calling and writing : objective1. to give students practice in calling and writing their own functions.2. to give students practice in
You have to review vhhr and fill me in with suggestions : you have to review vhhr and fill me in with suggestions based on your views on the feedback and website based on
Question 1 companies and business planningfwpl acquired the : question 1 companies and business planningfwpl acquired the winery business in 1981 from francesca and angelo galli.
This paper is called a jury paper this is related to : this paper is called a jury paper. this is related to experimental psychology. this paper needs to be 8-10 pages
Part-11 exceptions and exception handlinggt create a java : part-11 exceptions and exception handlinggt create a java class called samearraysexception that extends the exception

Reviews

Write a Review

C/C++ Programming Questions & Answers

  Computes the final price for a sales transaction

Create a C program that contains a function that computes the final price for a sales transaction and return that value to a calling method.

  Implement the bounded stack with a concrete class

Using Eclipse, implement the bounded stack with a concrete class names

  Dealerships are awarded the rebate

Dealerships are awarded the rebate on a quarter-by-quarter basis, only for quarters where their actual sales exceeded expected volumes for that quarter. Expected sales volumes for each quarter are as follows:

  Catch clauses are listed is important

write a program that can be used to demonstrate that the order in which catch clauses are listed is important

  Write a function named sort3

Write a function named "sort3" that takes three floating point arguments, call them "x" , "y" , and "z" , and modifies their values, if necessary, in such a way as to make true the following inequalities: x y z .

  Repeat these questions by writing functions

Repeat these questions by writing functions that receive the arrays as constant reference parameters and return the appropriate values through the function name (via return statement). The function header could look like:

  Use structures to create c program to compute student record

Explain the following and give their suitable syntax. A pointer. Use structures to create C program to compute and store student records of class.

  Type two numbers from range 20-60

Ask the user to type two numbers from range 20-60. Keep on asking until he types in the range of 20-60. Display the numbers between those two numbers in ascending order.

  Write a program which accepts the total of food and drink

Write a program which accepts the total of food and drink purchased for a restaurant bill as input. The output should be adjusted bill with a sales tax of six percent 6% and a tip (gratuity) of 15%.

  Explain how to convert c program to mips program

Convert the following C program to MIPS program. Assuming that i, j, k, f, are stored in registers $s0, $s1, $s2, $s3 already.

  Write in c++. read an inputfile.txt

write in C++.  read an inputFile.txt which contains integers that are virutal addresses, and I am suppossed to translate that into physical addresses using a page table and a transition lookaside buffer

  Insert the missing code in the c program

You are to insert the missing code in the C program given for combinational equivalence checking. This program will interface with the CUDD package and will parse netlist files in ISCAS85 circuit format. Next, BDDs will be created for each circuit an..

Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd