Write the sorted data to the specified output file

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

Your task for this assignment is to create, in C89, a stand-alone sorting program.

1 Documentation

You must thoroughly document your code using C comments (/*....*/).

For each function you define and each datatype you declare (e.g. using struct or typedef), place a comment immediately above it explaining its purpose, how it works, and how it relates to other functions and types. Collectively, these comments should explain your design. (They are worth substantial marks - see Section 7.)

2 Program Outline

Your program will deal with one input file: a .csv text file to sort (the "user file"). and a single output file containing the sorted text.
Your program must do the following:

a) Take two command-line parameters - the names of the input and output files. these can be in either order. so you will also need command line switches ( i and ,c,)

Examples:

sortingAssignment i infile o outfile

sortingAssignment o outfile i infile

Invalid command line arguments should cause the program to output a usage message, and exit.

b) Read the input file and store its contents in a (generic) linked list. The format of the input file is specified in section 2.1

c) Output a menu to the user requesting how the user would like the contents of the file sorted. The user must be able to sort on any of the columns. in ascending or descending order

d) Sort the rows of the input file using a generic insertion sort (in-place). Your insertion sort function MUST be generic - that is it must import a generic linked list and a compare function, export the sorted linked list, and return an integer specifying if anything went wrong 0 for success. or a negative value for any specific errors.
Note. Insertion sort is fully described in appendix a

e) Write the sorted data to the specified output file using the same format as the input file.

4 Testing (or "How to Actually Get Marks, part 2")

Your program must work on either:

 The lab machines in building 314, and/or One of the saeshell0Xp.curtin.edu.au machines (where "X" is 1. 2, 3 or 4).

To begin with, construct a small-scale test file containing only a few columns and lines. As you begin to fix bugs, try larger test files.
All user input must be "sanity" checked. Invalid user input should not cause the program to stop (other than invalid command line arguments).

Ensure there are no memory leaks - you must not rely on the program closing to free your memory. You will lose marks for any memory issues.

5 README.txt

Prepare a text file called README.txt (not using Word or any other word processor), that contains the following:
A list of all files you're submitting and their purpose.
A statement of how much of the assignment you completed; specifically:
- How much of the required functionality you attempted to get working, and
- How much actually does work, to the best of your knowledge.
A list of any bugs or defects you know about. if any.
A statement of which computer you tested your code on. This must be either
- One of the four saeshell0Xp machines, or
- One of the building-314 lab machines. In this case, specify the room number (e.g. 314.220) and the "Service Tag" - a unique 7-character ID found on a black sticker on the top of the each machine.

6 Submission

You must keep a copy of all required files in your $HOME/UCP/assignment directory, including files that you used for testing. These must not be touched after the due date and time for the assignment. You must also submit the following electronically, via the assignment area on Blackboard, inside a single .tar.gz file (not .rar or other formats):
- Your makefile and README.txt.
- All .c and .h files (everything needed for the make command to work).
- a completed "Declaration of Originality' (appendix b)

You are responsible for ensuring that your submission is correct and not corrupted (download and check it!). You may make multiple submissions. but only your newest submission will be marked. The late submission policy (see the Unit Outline) will be strictly enforced. A submission 1 second late, according to Blackboard, will be considered 1 day late. A submission 24 hours and 1 second late will be considered 2 days late. and so on.

2.1 The input file

The input file will be in .csv format, with the column names specified on the first line, and its data type (string or integer) specified after the name in brackets. There could be any number of columns, and any number of rows.

This is an example of a valid input file:
name (string) , age (integer) mark, 21, at home
jordan, 19, his place
etc
Sorted on age, ascending: address (string)

name (string), age (integer), address (string) jordan, 19, his place
mark, 21, at home
etc
and another
The (string), desc (string) , in (integer), long (integer) shark bay, nice and warm, 12593, 39216
esperance, cold and windy, 4287
etc
Sorted on loc, ascending:
lac (string), desc (string), lat (integer), long (integer) esperance, cold and windy, 9287
shark bay, nice and warm, 12593, 34216
etc

Note: You must state any valid assumptions you make about the input file.

If a value is missing from the file, the sorting algorithm must place it last in the sorted list.

If there is an unrecognised datatype name, or the file is otherwise not in the expected format, your program must issue an error message detailing the problem. When this happens, your program must not attempt to sort anything.

3 Makefile (or "How to Actually Get Marks, part 1")

You must create a makefile, and it must actually work. That is, the marker will type: (user@dirl$ make

This is the only way the marker will attempt to compile your code. If your makefile does not work, then. according to the marking guide, your code does not compile or run. (The marker will delete all existing .o files and executable files beforehand.)

Your Makefile must be written by you, and not automatically generated. It must be structured properly in accordance with the lecture notes.

Appendix a - insertion sort

Inspired from the idea of adding items to a list in sorted order. Every time a new item is added, insert it in sorted position.

Can also be applied to sorting an existing list.

Maintain a marker and insertion-sort the element at the marker into the items to the left of the marker.
ie: take the next item and insert it in sorted order into the sub-list that precedes the item.

Start the marker at the front of the list and move it up by one after each inserted item. Then items before marker will be sorted.

Searches for the insert position backwards so that we can take advantage of semi-sorted lists.

Pseudo-code for insertion sort using integers in an array.

METHOD InsertionSort IMPORT array EXPORT array

FOR nn < 1 TO array.length-1 DO                               < Start inserting at element 1 (0 is pointless)

ii <- nn                                                                                    <- Start from the last item and go backwards

temp e- array[ii]

WHILE (ii > 0) AND (array[ii-1] > temp) DO                 Insert into sub-array to left of nn

Use > to keep the sort stable

array[ii] < array[ii-1]                                              < Shuffle until correct location

ii<- - 1

ENDWHILE

array[ii] <- temp

ENDFOR

Note carefully - this algorithm is for integer arrays - you will need to convert it to sort LinkedLists of strings/integers. Remember that a LinkedList is of unknown length, so you should NOT use a for loop.

Reference no: EM131236021

Questions Cloud

Confidence interval estimate of mean red blood cell count : A simple random sample of 50 adults Is obtained and each person's red blood cell count is measured (in microliters).The sample mean is 4.23.The population standard deviation for red blood cell counts is .40.Construct a 99% confidence interval esti..
Describe the security problems that are created by employees : Describe the security problems that are created by employees. What are some special concerns about security with remote employees and employees who use wireless equipment?
What is the probability of more : A measuring device makes errors with a probability of 0.001 on each measurement. What is the probability of more than 20 errors in 10,000 measurements?
Percentage of scores falls between the mean : In a normal curve, what percentage of scores falls Between the mean and -2 SD's below the mean?
Write the sorted data to the specified output file : How the user would like the contents of the file sorted. The user must be able to sort on any of the columns. in ascending or descending order - Write the sorted data to the specified output file using the same format as the input file.
Necessary to estimate the proportion of interest : How large a sample is necessary to estimate the proportion of interest to within 2% in a 95% confidence interval?
What kinds of strategies did samsung use : What is Samsung's' approach toward managing the global environment? What kinds of strategies did Samsung use to become the global leader in the smartphone industry
Explain solid waste generation and management : Explain solid waste generation and management in a technological society. To what extent do you think we are equipped to handle solid waste issues in the future as the population continues to increase?
What is the probability that the satellite will function : On a rainy day each of the components independently functions with probability p1, whereas on a dry day they each independently function with probability p2. If the probability of rain tomorrow is α, what is the probability that the satellite will..

Reviews

len1236021

10/8/2016 6:28:59 AM

If you accept or copy code (or other material) from other people, websites, etc. and submit it, you are guilty of plagiarism, unless you correctly cite your source(s). Even if you extensively modify their code, it is still plagiarism. Exchanging assignment solutions, or parts thereof, with other students is collusion. Engaging in such activities may lead to a grade of ANN (Result Annulled Due to Academic Misconduct) being awarded for the unit, or other penalties. Serious or repeated offences may result in termination or expulsion. You are expected to understand this at all times, across all your university studies, with or without warnings like this.

len1236021

10/8/2016 6:28:27 AM

Every valid assignment will be initially awarded 100 marks. Marks will then be deducted for the following: up to -50% Commenting. You will not lose any marks if you have provided good. meaningful explanations of all the files, functions and data structures needed for your implementation. up to -50% Coding practices You will not lose any marks if you have followed good coding practices. and your code is well-structured, including being separated into various, appropriate .c and .h files. up to -100% functionality. - You have correctly implemented the required functionality. according to a visual inspection of your code by the marker.

Write a Review

 

C/C++ Programming Questions & Answers

  Write a program that uses a function for swapping

Write a program that uses a function for swapping a two numbers. Note: The program requires the user to enter the numbers via the keyboard and determine and display whether a number is odd or even.

  User that will be asked to input the time

Write a code for the following C++ problem. We will have a user that will be asked to input the time of a train traveling in terms of minutes and this minutes is a non-negative integer.

  Application to accept the name of a folder

Therefore, she asks Hayley to modify the application to accept the name of a folder and display the following details of the files located in the folder: File name File size File creation date. Write the code that Hayley should write to create the..

  How many generations do you want to wait

How many generations do you want to wait? How many jackalopes do you have?

  Question regarding the pointer arithmetic

Write a program that allocates an array on the heap and then iterates through the heap using pointer arithmetic. Print the item as in part 2 at each iteration. Loop backwards through the array using pointer arithmetic and print as well.

  Create a program that outputs the result of the formula

Create a program that outputs the result of the formula f = (a - b)(x - y) using the printf() functions.

  Write a recursive function to draw the pattern

write a program that prompts the user to enter the number of lines in the pattern and uses the recursive function to generate the pattern. For example, specifying 4 as the number of lines generates the above pattern.

  Amanda and tyler opened a business

Amanda and Tyler opened a business that specializes in shipping liquids, such as milk, juice, and water, in cylinderical containers. The shipping charges depend on the amount of liquid in the container. (For simplicity, you may assume that the con..

  Add 10 people to the line

Add 10 people to the line and process them. Each time you process someone, print out their ticket information. After all 10 have been serviced, print the average wait time. Below is an example of the time calls you will need and a wait function.

  Suitable examples using the basic operations

Briefly review Regular Expressions - the notation and the languages they represent with suitable examples using the basic operations - namely, concatenation, union , Kleene Closure.

  This program need to be writen in c in this program we need

this program need to be writen in c in this program we need to create program that uses functions and reference

  Using mingw compiler on windows

Need to make a code in c++ and.  using MinGW compiler on windows. One last thing please make a makefile.

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