C语言代写: Homework 6

Homework 6 Time it took Matthew to Complete: 20 mins

  • All programs must compile without warnings when using the -Wall and -Werror options
  • Submit only the files requested

◦ Do NOT submit folders or compressed files such as .zip, .rar, .tar, .targz, etc

  • Your program must match the output exactly to receive credit.
    • Make sure that all prompts and output match mine exactly.
    • Easiest way to do this is to copy and paste them
  • All input will be valid unless stated otherwise
  • Print all real numbers to two decimal places unless otherwise stated
  • The examples provided in the prompts do not represent all possible input you can receive.
  • All inputs in the examples in the prompt are underlined

◦ You don’t have to make anything underlined it is just there to help you differentiate between what you are supposed to print and what is being given to your program

• If you have questions please post them on Piazza

Files to submit: perimeter.c

1. Write a program called perimeter.c that calculates the perimeter of a polygon.

  1. The points of the polygon will be stored in a file and this file will be passed on

    the command line arguments

  2. The file itself will be a binary file containing integers
    1. The first integer in the file is the number of points contained in the file
    2. The remaining integers are the points, with the first integer being the x

      coordinate and the second integer being the y coordinate.

    3. There is an edge between each adjacent point and between the first point

      and the last point

    4. Each file contains at least 3 points
  3. The perimeter of a polygon is the sum of the lengths of all of its edges
  4. Use a double to store your perimeter and report the perimeter to the nearest 2

    decimal points.

  5. As an aside the example tests do not form actual polygons but assume that they

    do.

Example. Assume that there is a file called example.txt. It will store the following information but in binary form. This example is just to give you a visualization of the data.
3

  287 422
  283 -981
  781 647
  ./perimeter example.txt
  The perimeter is 3648.30

Homework 6 Time it took Matthew to Complete: 15 mins

  • All programs must compile without warnings when using the -Wall and -Werror options
  • Submit only the files requested

◦ Do NOT submit folders or compressed files such as .zip, .rar, .tar, .targz, etc

  • Your program must match the output exactly to receive credit.
    • Make sure that all prompts and output match mine exactly.
    • Easiest way to do this is to copy and paste them
  • All input will be valid unless stated otherwise
  • Print all real numbers to two decimal places unless otherwise stated
  • The examples provided in the prompts do not represent all possible input you can receive.
  • All inputs in the examples in the prompt are underlined

◦ You don’t have to make anything underlined it is just there to help you differentiate between what you are supposed to print and what is being given to your program

• If you have questions please post them on Piazza

Restrictions

  • No global variables are allowed
  • Your main function may only declare variables, call other functions, and assign

    variables values.

Files to submit: read_lines.c, read_lines.h

For this assignment you will be writing only a single function: read_lines.

Specifications

  1. This function has the following definition:
    1. void read_lines(FILE* fp, char*** lines, int* num_lines).
  2. This function should read all of the lines contained within fp and
    1. Set each row of lines to contain one line of the file.
    2. Set num_lines to be equal to the number of lines that were in the file
  3. If the file is empty lines should be set to NULL and num_lines to 0.
  4. You only need to submit read_lines.c and read_lines.h
  5. read_lines.h must contain at least the definition for read_lines but it is perfectly ok if there

    are more

Example

1. ./read_lines.out Makefile

1.
2.
3.
4.
5.
6.
7.
8.
9.
10. clean:
11. rm -f *.out *.o

read_lines.out: read_lines.o main.o
gcc -g -Wall -Werror -o read_lines.out read_lines.o main.o

main.o: main.c read_lines.h
gcc -g -Wall -Werror -c -o main.o main.c

read_lines.o: read_lines.c read_lines.c
gcc -g -Wall -Werror -c -o read_lines.o read_lines.c

Homework 6 Time it took Matthew to Complete: 20 mins

  • All programs must compile without warnings when using the -Wall and -Werror options
  • Submit only the files requested

◦ Do NOT submit folders or compressed files such as .zip, .rar, .tar, .targz, etc

  • Your program must match the output exactly to receive credit.
    • Make sure that all prompts and output match mine exactly.
    • Easiest way to do this is to copy and paste them
  • All input will be valid unless stated otherwise
  • Print all real numbers to two decimal places unless otherwise stated
  • The examples provided in the prompts do not represent all possible input you can receive.
  • All inputs in the examples in the prompt are underlined

◦ You don’t have to make anything underlined it is just there to help you differentiate between what you are supposed to print and what is being given to your program

• If you have questions please post them on Piazza

Restrictions

  • No global variables are allowed
  • Your main function may only declare variables, call other functions, and assign

    variables values.

Files to submit: tail.c

Write a program called tail.c that prints out the last N lines of a given file

  1. Arguments to your program will be passed on the command line in the

    following order
    1. Name of the file 2. N

  2. N will always be at least 1
  3. If N is greater than the number of lines in the file, all of the lines in the file

    should be displayed

  4. You may assume that no line is longer than 100 characters

    1. For an additional challenge try to solve the problem where there is no limit on the length of a line
    1. My solution to dealing with any length lines involved using the

    functions ftell and fseek.

  5. There is no limit to the number of lines in a file
  6. Some lines may only contain the newline character, these still count as a line
  7. My editor automatically added 1 newline character to the end of most of the

    test files but does not display them. Your editor may or may not display them but do be aware that they are there.

Example. Assume the file meme.txt contains the following

    It
    is
    over 9000!!!

1../tail.out meme.txt 1 over 9000!!!

2../tail.out meme.txt 2 is

over 9000!!! 3../tail.out meme.txt 10

      It
      is
      over 9000!!!