Ask Question, Ask an Expert

+61-413 786 465

info@mywordsolution.com

Ask C/C++ Expert


Home >> C/C++

ASSIGNMENT

Write a Linux program in C++ to do the following:

Set up pipe:

1) Call fork() to create a parent/child setup.

2) Set up a pipe between parent and child so that the parent is the producer and the child is the consumer.

3) The interlacing of messages printed by different processes will depend on the timing of your program and does not have to match the sample output. However, individual messages should not be broken up. Prevent this using the same method as in HW2:

a) Issue the cout << unitbuf command at the beginning of your program.
b) Use only use one extraction operator ("<<") to print each message, using stringstream to build the message before printing and using \n instead of endl to avoid using a second extraction operator.

Parent processing:

1) Read input file from the file specified a the command line parameter. If no parameter is given, use as a default ~t90rkf1/d480/dhw4/resv.txt.

2) For each record do the following:

a) Write the length of the entry to the pipe as a three-digit alpha field (i.e., no terminator).
b) Write the data to the pipe as a C-string (i.e., with a terminator).
c) Print the data and its length (not including the terminator).

3) At the end of the file, print a count of the number of input records read.

You will find it helpful to log your I/O on standard output, e.g.:

Parent: Reading: 09JUN2014/WN123/MDW/BWI/etc.

Writing: __ bytes: 09JUN2014 etc.

(blank line)

Reading: (etc.)

Child processing:

1) Read each entry as follows:

a) Read the length from the pipe and convert it to a number.
b) Read the specified number of bytes. Add 1 to include the terminator.
c) Break the entry into fixed-length fields and save the fields in a vector of pointers to objects, just as in HW1.

2) Use C++ string functions (not C string functions or subscript use) or regular expressions to break the input record into individual entries. Build keys with fixed-length fields.

3) Use a sort function to sort the entries by date, flight number, city pair, last name and first name. A city pair consists of an origin and destination city. Date, flight number and city pair determine a flight leg. For debugging purposes, it is always a good idea to use a sequence-preserving sort so that the same input will always produce the same output. For a vector, that is the stable_sort function. The record locator (=airline lingo for reservation ID) is printed but is not a sort key, since it doesn't matter to anyone but the passenger.

4) Print the entries with subtotals by flight leg, flight number, date, year/month, and grand total. For example:

2014 September 26 WN 123 MDW-BWI ABC478 Kelly, Gary
WN 123 MDW-BWI ABC456 Kelly, Mary
2014 September 26 WN 123 MDW-BWI 2 * Passengers this leg

2014 September 26 WN 123 BWI-FLL ABC499 Mouse, Mickey
2014 September 26 WN 123 BWI-FLL 1 * Passengers this leg

2014 September 26 WN 123 3 ** Passengers all legs

2014 September 26 3 *** Date total

2014 September 27 WN 123 FLL-MSY ABC499 Mouse, Mickey 2014 September 27 WN 123 FLL-MSY 1 * Passengers this leg

2014 September 27 WN 123 1 ** Passengers all legs

2014 September 27 1 *** Date total

2014 September 4 **** Month total

2014 October 1 WN 123 FLL-MSY ABC487 Mouse, Mickey 2014 October 1 WN 123 FLL-MSY 1 * Passengers this leg

2014 October 1 WN 123 1 ** Passengers all legs

2014 October 1 1 *** Date total

2014 October 1 **** Month total

5 ***** Grand total

Leave a space before each total line except the flight leg total.

Make sure that all of your columns line up and that you print suitable information on each total line.

Your TA may use a different file to test your program.

Hints:

Use the man command to learn the usage of the following system calls and user functions.

pipe( ) read( ) write( ) atoi( )

The following files were used in class to demonstrate binary I/O.

~t90rkf1/d480/dio/dbinary/*.cpp

Note that each of these just reads or writes a single line. For this program, you will need to write a loop that reads multiple records from a binary file. The man page for read explains how to tell when end of file has been reached for a binary file.

The following files will be used in class to illustrate subtotal processing:

~t90rkf1/d480/sub3.cpp single-level subtotal processing
~t90rkf1/d480/msub1.cpp multi-level subtotal processing
~t90rkf1/d480/sub-pseudo.cpp pseudocode explanation of subtotal processing

Some examples of building a comparison function for a sort can be found here::

~t90rkf1/d480/dsort/*.cpp

Further detail about regular expression processing in C++ can be found in this example:

~t90rkf1/d480/regex1d.cpp

Testing suggestions:

Write your program in the following order. Make sure each part works correctly before you go on to the next. Your TA has been instructed not to discuss later sections with you until you have completed the earlier sections correctly.

1. First, make sure that you can read the input correctly and write it to a physical binary file.
2. Second, make sure that you can read your physical binary file correctly and print the detail lines.
3. Then combine your two pieces of code, replacing the physical file with a pipe.
4. Finally, add the total processing.

Style requirements:

Do not use printf, sprintf, character arrays or other features which belong to C style rather than C++. You can use a character array where required as the input to a system call.

Submission instructions:

Same rules as in previous assignments, including the following:

Whenever you issue a system call such, make sure to check for error and terminate, e.g., exit(-1), if the system call fails.

Submit a zip file containing hw4.cpp, the source file for your object (and any other source files you create) and a makefile.

Business case:

The purpose of the detail lines and the "passengers this leg" total is to allow the gate agents to track passenger loading and the passenger load.

The purpose of the "passengers all legs" field is to see how many people would be inconvenienced if the complete flight was cancelled.

The purpose of the date, month and grand totals are to track business, which is seasonal. Most airlines permit reservations 364 days in advance.

There is no need for a terminator on the length field since it is a fixed-length field. Technically, there is no need for a terminator on the data field either but it greatly simplifies debugging. You could save a couple of bytes by eliminating the terminator on the data field and using unsigned binary instead of characters for the length, but it makes the intermediate file a lot harder to visualize.

C/C++, Programming

  • Category:- C/C++
  • Reference No.:- M92267003

Have any Question?


Related Questions in C/C++

Project - space race part a console Project - Space Race Part A: Console Implementation

Project - Space Race Part A: Console Implementation INTRODUCTION This assignment aims to give you a real problem-solving experience, similar to what you might encounter in the workplace. You have been hired to complete a ...

Assignment word matchingwhats a six-letter word that has an

Assignment: Word Matching What's a six-letter word that has an e as its first, third, and fifth letter? Can you find an anagram of pine grave. Or how about a word that starts and ends with ant (other than ant itself, of ...

Question 1find the minimum and maximum of a list of numbers

Question: 1. Find the Minimum and Maximum of a List of Numbers: 10 points File: find_min_max.cpp Write a program that reads some number of integers from the user and finds the minimum and maximum numbers in this list. Th ...

1 implement the binary search tree bst in c using the node

1. Implement the Binary Search Tree (BST) in C++, using the Node class template provided below. Please read the provided helper methods in class BST, especially for deleteValue(), make sure you get a fully understanding ...

Assign ment - genetic algorithmin this assignment you will

ASSIGN MENT - GENETIC ALGORITHM In this assignment, you will use your C programming skills to build a simple Genetic Algorithm. DESCRIPTION OF THE PROGRAM - CORE REQUIREMENTS - REQ1: Command-line arguments The user of yo ...

What are the legal requirements with which websites must

What are the legal requirements with which websites must comply in order to meet the needs of persons with disabilities? Why is maximizing accessibility important to everyone?

Software development fundamentals assignment 1 -details amp

Software Development Fundamentals Assignment 1 - Details & Problems - In this assignment, you are required to answer the short questions, identify error in the code, give output of the code and develop three C# Console P ...

Why do researcher drop the ewaste and where does it end

Why do researcher drop the ewaste and where does it end up?

There are several ways to calculate the pulse width of a

There are several ways to calculate the pulse width of a digital input signal. One method is to directly read the input pin and another method (more efficient) is to use a timer and pin change interrupt. Function startTi ...

  • 4,153,160 Questions Asked
  • 13,132 Experts
  • 2,558,936 Questions Answered

Ask Experts for help!!

Looking for Assignment Help?

Start excelling in your Courses, Get help with Assignment

Write us your full requirement for evaluation and you will receive response within 20 minutes turnaround time.

Ask Now Help with Problems, Get a Best Answer

Why might a bank avoid the use of interest rate swaps even

Why might a bank avoid the use of interest rate swaps, even when the institution is exposed to significant interest rate

Describe the difference between zero coupon bonds and

Describe the difference between zero coupon bonds and coupon bonds. Under what conditions will a coupon bond sell at a p

Compute the present value of an annuity of 880 per year

Compute the present value of an annuity of $ 880 per year for 16 years, given a discount rate of 6 percent per annum. As

Compute the present value of an 1150 payment made in ten

Compute the present value of an $1,150 payment made in ten years when the discount rate is 12 percent. (Do not round int

Compute the present value of an annuity of 699 per year

Compute the present value of an annuity of $ 699 per year for 19 years, given a discount rate of 6 percent per annum. As