Vectors

Exercises

Exercise 0: Preparation

b. Start DrScheme.

c. Tell DrScheme not to print the lengths of vectors by entering `(print-vector-length #f)`.

Exercise 1: Create a Simple Vector

a. In DrScheme's interaction window, type in a vector literal that denotes a vector containing just the two elements 3.14159 and 2.71828. How does DrScheme display the value of this vector?

b. Create a vector that contains the same two values by using the `vector` procedure.

c. Create a vector that contains the same two values by using the `make-vector` and `vector-set` procedures.

Exercise 2: Specifying Vector Length

a. Tell DrScheme to print the length of vectors by entering `(print-vector-length #t)`.

b. Enter each of the following vector expressions in DrScheme; consider the result (perhaps by examining individual elements with `vector-ref`); and indicate what vector has been created. the result

• `#4(0)`
• `#4(1)`
• `#4(1 2)`
• `#2(1 2 3 4)`
• `(make-vector 4 0)`

c. Tell DrScheme not to print the lengths of vectors and reenter each expression. Do your results differ? What do the differences suggest?

Exercise 3: Summing Vectors

Write procedure, `(vector-sum numbers)`, that takes one argument, a vector of numbers, and returns the sum of the elements of that vector.

You can use `vector->list` from the reading as a pattern for `vector-sum` -- only a few judicious changes are needed. However, you should not use `vector->list` as a helper.

Exercise 4: Filling Vectors

In the reading on vectors, we saw that it was possible to implement `list->vector` and `vector->list` by using more primitive operations (particularly `vector-set!` and `vector-length`).

Write your own version of `vector-fill!`. Remember that `vector-fill!` takes two parameters, a vector and a value, and puts that value in every position of the vector.

Notes

Notes on Exercise 4: Filling Vectors

Just as in the case of `list->vector`, you will probably want to define a helper procedure that fills only part of the vector. Your termination condition will certainly be different and should probably involve the length of the vector.

History

Wednesday, 20 September 2000 [Samuel A. Rebelsky]

• Started.

Wednesday, 8 November 2000 [Samuel A. Rebelsky]

Wednesday, 7 February 2001 [Samuel A. Rebelsky]

• Updating formatting.
• Removed map-like problems (5, 6, and 7) which were not applicable in the current session of the course.
• Added new problem 5 (on filling vectors).

Thursday, 8 February 2001 [Samuel A. Rebelsky]

Thursday, 3 October 2002 [Samuel A. Rebelsky]

Disclaimer: I usually create these pages on the fly, which means that I rarely proofread them and they may contain bad grammar and incorrect details. It also means that I tend to update them regularly (see the history for more details). Feel free to contact me with any suggestions for changes.

This document was generated by Siteweaver on Mon Dec 2 09:19:32 2002.
The source to the document was last modified on Thu Oct 3 20:42:01 2002.
This document may be found at `http://www.cs.grinnell.edu/~rebelsky/Courses/CS151/2002F/Labs/vectors.html`.

You may wish to validate this document's HTML ; ; Check with Bobby

Samuel A. Rebelsky, rebelsky@grinnell.edu