#!/bin/sh # This is a shar archive. # The rest of this file is a shell script which will extract: # # 6_17a.h 6_17a0.h 6_17a1.c 6_17a10.c 6_17a11.c 6_17a12.c 6_17a13.c 6_17a14.c 6_17a15.c 6_17a16.c 6_17a17.c 6_17a18.c 6_17a19.c 6_17a2.c 6_17a20.c 6_17a21.c 6_17a22.c 6_17a23.c 6_17a24.c 6_17a25.c 6_17a26.c 6_17a27.c 6_17a28.c 6_17a3.c 6_17a4.c 6_17a5.c 6_17a6.c 6_17a7.c 6_17a8.c 6_17a9.c makefile tst.c tst.cmp vector.h vectorall.c # # To extract the files from this shell archive file simply # create a directory for this file, move the archive file # to it and enter the command # # sh filename # # The files will be extracted automatically. # Note: Do not use csh. # # Archive created: Mon Jul 30 23:07:06 EDT 1990 # echo x - 6_17a.h sed 's/^X//' > 6_17a.h << '!EOF!' /* Copyright (c) 1990 by AT&T Bell Telephone Laboratories, Incorporated. */ /* The C++ Answer Book */ /* Tony Hansen */ /* All rights reserved. */ /* vector of floats Exercise 6.17 */ #ifndef VECTOR_H #define VECTOR_H #include #include "6_17a0.h" // EXPAND // vector x(15); or vector x(15, 4.5); vector(int size, float init = 0.0); // delete x; ~vector(); // vector x = vector ... vector(vector &x); // x = y vector& operator=(vector &vec); // x = 5.0 vector& operator=(float x); // x = v1 + v2 friend vector& operator+(vector &v1, vector &v2); // x = v1 - v2 friend vector& operator-(vector &v1, vector &v2); // x = v1 * v2 friend vector& operator*(vector &v1, vector &v2); // x = v1 / v2 friend vector& operator/(vector &v1, vector &v2); // x = v1 + x friend vector& operator+(vector &v1, float x); // x = v1 - x friend vector& operator-(vector &v1, float x); // x = v1 * x friend vector& operator*(vector &v1, float x); // x = v1 / x friend vector& operator/(vector &v1, float x); // x = +y friend vector& operator+(vector &v1); // x = -y friend vector& operator-(vector &v1); // x += y vector& operator+=(vector &v1); // x -= y vector& operator-=(vector &v1); // x *= y vector& operator*=(vector &v1); // x /= y vector& operator/=(vector &v1); // x += y vector& operator+=(float y); // x -= y vector& operator-=(float y); // x *= y vector& operator*=(float y); // x /= y vector& operator/=(float y); // f = v[i] float& operator[](int i); // x = (v1 == v2) friend int operator==(vector &v1, vector &v2); // x = (v1 != v2) friend int operator!=(vector &v1, vector &v2); // cout << v1 friend ostream& operator<<(ostream&, vector&); // x = v1.dot(v2) float dot(vector& v2); friend class matrix; // DELETE }; #endif /* VECTOR_H */ !EOF! ls -l 6_17a.h echo x - 6_17a0.h sed 's/^X//' > 6_17a0.h << '!EOF!' /* Copyright (c) 1990 by AT&T Bell Telephone Laboratories, Incorporated. */ /* The C++ Answer Book */ /* Tony Hansen */ /* All rights reserved. */ class vector { struct vrep { float *f; int refcnt; int length; } *p; public: // ... !EOF! ls -l 6_17a0.h echo x - 6_17a1.c sed 's/^X//' > 6_17a1.c << '!EOF!' /* Copyright (c) 1990 by AT&T Bell Telephone Laboratories, Incorporated. */ /* The C++ Answer Book */ /* Tony Hansen */ /* All rights reserved. */ // vector x(15); or vector x(15, 4.5); #include vector::vector(int size, float init) { if (size <= 0) error("non-positive vector size"); p = new vrep; p->f = new float[p->length = size]; for (int i = 0; i < size; i++) p->f[i] = init; p->refcnt = 1; } !EOF! ls -l 6_17a1.c echo x - 6_17a10.c sed 's/^X//' > 6_17a10.c << '!EOF!' /* Copyright (c) 1990 by AT&T Bell Telephone Laboratories, Incorporated. */ /* The C++ Answer Book */ /* Tony Hansen */ /* All rights reserved. */ // x = +y vector& operator+(vector &v1) { return v1; } !EOF! ls -l 6_17a10.c echo x - 6_17a11.c sed 's/^X//' > 6_17a11.c << '!EOF!' /* Copyright (c) 1990 by AT&T Bell Telephone Laboratories, Incorporated. */ /* The C++ Answer Book */ /* Tony Hansen */ /* All rights reserved. */ // x = -y #include vector& operator-(vector &v1) { // allocate the new vector int l = v1.p->length; vector *v = new vector(l); // do the operations float *f = v->p->f; float *f1 = v1.p->f; for (int i = 0; i < l; i++) *f++ = - *f1++; return *v; } !EOF! ls -l 6_17a11.c echo x - 6_17a12.c sed 's/^X//' > 6_17a12.c << '!EOF!' /* Copyright (c) 1990 by AT&T Bell Telephone Laboratories, Incorporated. */ /* The C++ Answer Book */ /* Tony Hansen */ /* All rights reserved. */ // x += y #include vector& vector::operator+=(vector &v1) { int l = min(v1.p->length, p->length); float *f = p->f; float *f1 = v1.p->f; for (int i = 0; i < l; i++, f++, f1++) *f += *f1; return *this; } !EOF! ls -l 6_17a12.c echo x - 6_17a13.c sed 's/^X//' > 6_17a13.c << '!EOF!' /* Copyright (c) 1990 by AT&T Bell Telephone Laboratories, Incorporated. */ /* The C++ Answer Book */ /* Tony Hansen */ /* All rights reserved. */ // x -= y #include /* DELETE */ vector& vector::operator-=(vector &v1) { int l = min(v1.p->length, p->length); float *f = p->f; float *f1 = v1.p->f; for (int i = 0; i < l; i++, f++, f1++) *f -= *f1; return *this; } !EOF! ls -l 6_17a13.c echo x - 6_17a14.c sed 's/^X//' > 6_17a14.c << '!EOF!' /* Copyright (c) 1990 by AT&T Bell Telephone Laboratories, Incorporated. */ /* The C++ Answer Book */ /* Tony Hansen */ /* All rights reserved. */ // x *= y #include /* DELETE */ vector& vector::operator*=(vector &v1) { int l = min(v1.p->length, p->length); float *f = p->f; float *f1 = v1.p->f; for (int i = 0; i < l; i++, f++, f1++) *f *= *f1; return *this; } !EOF! ls -l 6_17a14.c echo x - 6_17a15.c sed 's/^X//' > 6_17a15.c << '!EOF!' /* Copyright (c) 1990 by AT&T Bell Telephone Laboratories, Incorporated. */ /* The C++ Answer Book */ /* Tony Hansen */ /* All rights reserved. */ // x /= y #include /* DELETE */ vector& vector::operator/=(vector &v1) { int l = min(v1.p->length, p->length); float *f = p->f; float *f1 = v1.p->f; for (int i = 0; i < l; i++, f++, f1++) *f /= *f1; return *this; } !EOF! ls -l 6_17a15.c echo x - 6_17a16.c sed 's/^X//' > 6_17a16.c << '!EOF!' /* Copyright (c) 1990 by AT&T Bell Telephone Laboratories, Incorporated. */ /* The C++ Answer Book */ /* Tony Hansen */ /* All rights reserved. */ // f = v[i] float& vector::operator[](int i) { return p->f[(i >= 0) && (i < p->length) ? i : 0]; } !EOF! ls -l 6_17a16.c echo x - 6_17a17.c sed 's/^X//' > 6_17a17.c << '!EOF!' /* Copyright (c) 1990 by AT&T Bell Telephone Laboratories, Incorporated. */ /* The C++ Answer Book */ /* Tony Hansen */ /* All rights reserved. */ // x = (v1 == v2) int operator==(vector &v1, vector &v2) { if (v1.p->length != v2.p->length) return 0; int l = v1.p->length; float *f1 = v1.p->f; float *f2 = v2.p->f; for (int i = 0; i < l; i++) if (*f1++ != *f2++) return 0; return 1; } !EOF! ls -l 6_17a17.c echo x - 6_17a18.c sed 's/^X//' > 6_17a18.c << '!EOF!' /* Copyright (c) 1990 by AT&T Bell Telephone Laboratories, Incorporated. */ /* The C++ Answer Book */ /* Tony Hansen */ /* All rights reserved. */ // x = (v1 != v2) int operator!=(vector &v1, vector &v2) { if (v1.p->length != v2.p->length) return 1; int l = v1.p->length; float *f1 = v1.p->f; float *f2 = v2.p->f; for (int i = 0; i < l; i++) if (*f1++ != *f2++) return 1; return 0; } !EOF! ls -l 6_17a18.c echo x - 6_17a19.c sed 's/^X//' > 6_17a19.c << '!EOF!' /* Copyright (c) 1990 by AT&T Bell Telephone Laboratories, Incorporated. */ /* The C++ Answer Book */ /* Tony Hansen */ /* All rights reserved. */ // cout << v1 ostream& operator<<(ostream& out, vector& v1) { out << "("; float *f = v1.p->f; int l = v1.p->length - 1; for (int i = 0; i < l; i++) out << *f++ << ", "; return out << *f << ")"; } !EOF! ls -l 6_17a19.c echo x - 6_17a2.c sed 's/^X//' > 6_17a2.c << '!EOF!' /* Copyright (c) 1990 by AT&T Bell Telephone Laboratories, Incorporated. */ /* The C++ Answer Book */ /* Tony Hansen */ /* All rights reserved. */ // delete x; vector::~vector() { if (--p->refcnt == 0) { delete p->f; delete p; } } !EOF! ls -l 6_17a2.c echo x - 6_17a20.c sed 's/^X//' > 6_17a20.c << '!EOF!' /* Copyright (c) 1990 by AT&T Bell Telephone Laboratories, Incorporated. */ /* The C++ Answer Book */ /* Tony Hansen */ /* All rights reserved. */ // x = v1.dot(v2) #include float vector::dot(vector& v2) { int l = min(p->length, v2.p->length); float sum = 0; float *f1 = p->f; float *f2 = v2.p->f; for (int i = 0; i < l; i++) sum += *f1++ * *f2++; return sum; } !EOF! ls -l 6_17a20.c echo x - 6_17a21.c sed 's/^X//' > 6_17a21.c << '!EOF!' /* Copyright (c) 1990 by AT&T Bell Telephone Laboratories, Incorporated. */ /* The C++ Answer Book */ /* Tony Hansen */ /* All rights reserved. */ // x = v1 + 5.0 vector& operator+(vector &v1, float x) { // allocate the new vector int l = v1.p->length; vector *v = new vector(l); // do the operations float *f = v->p->f; float *f1 = v1.p->f; for (int i = 0; i < l; i++) *f++ = *f1++ + x; return *v; } !EOF! ls -l 6_17a21.c echo x - 6_17a22.c sed 's/^X//' > 6_17a22.c << '!EOF!' /* Copyright (c) 1990 by AT&T Bell Telephone Laboratories, Incorporated. */ /* The C++ Answer Book */ /* Tony Hansen */ /* All rights reserved. */ // x = v1 - 5.0 vector& operator-(vector &v1, float x) { // allocate the new vector int l = v1.p->length; vector *v = new vector(l); // do the operations float *f = v->p->f; float *f1 = v1.p->f; for (int i = 0; i < l; i++, f++, f1++) *f = *f1 - x; return *v; } !EOF! ls -l 6_17a22.c echo x - 6_17a23.c sed 's/^X//' > 6_17a23.c << '!EOF!' /* Copyright (c) 1990 by AT&T Bell Telephone Laboratories, Incorporated. */ /* The C++ Answer Book */ /* Tony Hansen */ /* All rights reserved. */ // x = v1 * 5.0 vector& operator*(vector &v1, float x) { // allocate the new vector int l = v1.p->length; vector *v = new vector(l); // do the operations float *f = v->p->f; float *f1 = v1.p->f; for (int i = 0; i < l; i++) *f++ = *f1++ * x; return *v; } !EOF! ls -l 6_17a23.c echo x - 6_17a24.c sed 's/^X//' > 6_17a24.c << '!EOF!' /* Copyright (c) 1990 by AT&T Bell Telephone Laboratories, Incorporated. */ /* The C++ Answer Book */ /* Tony Hansen */ /* All rights reserved. */ // x = v1 / 5.0 vector& operator/(vector &v1, float x) { // allocate the new vector int l = v1.p->length; vector *v = new vector(l); // do the operations float *f = v->p->f; float *f1 = v1.p->f; for (int i = 0; i < l; i++) *f++ = *f1++ / x; return *v; } !EOF! ls -l 6_17a24.c echo x - 6_17a25.c sed 's/^X//' > 6_17a25.c << '!EOF!' /* Copyright (c) 1990 by AT&T Bell Telephone Laboratories, Incorporated. */ /* The C++ Answer Book */ /* Tony Hansen */ /* All rights reserved. */ // x += y vector& vector::operator+=(float x) { int l = p->length; float *f = p->f; for (int i = 0; i < l; i++, f++) *f += x; return *this; } !EOF! ls -l 6_17a25.c echo x - 6_17a26.c sed 's/^X//' > 6_17a26.c << '!EOF!' /* Copyright (c) 1990 by AT&T Bell Telephone Laboratories, Incorporated. */ /* The C++ Answer Book */ /* Tony Hansen */ /* All rights reserved. */ // x -= y vector& vector::operator-=(float x) { int l = p->length; float *f = p->f; for (int i = 0; i < l; i++, f++) *f -= x; return *this; } !EOF! ls -l 6_17a26.c echo x - 6_17a27.c sed 's/^X//' > 6_17a27.c << '!EOF!' /* Copyright (c) 1990 by AT&T Bell Telephone Laboratories, Incorporated. */ /* The C++ Answer Book */ /* Tony Hansen */ /* All rights reserved. */ // x *= y vector& vector::operator*=(float x) { int l = p->length; float *f = p->f; for (int i = 0; i < l; i++, f++) *f *= x; return *this; } !EOF! ls -l 6_17a27.c echo x - 6_17a28.c sed 's/^X//' > 6_17a28.c << '!EOF!' /* Copyright (c) 1990 by AT&T Bell Telephone Laboratories, Incorporated. */ /* The C++ Answer Book */ /* Tony Hansen */ /* All rights reserved. */ // x /= y vector& vector::operator/=(float x) { int l = p->length; float *f = p->f; for (int i = 0; i < l; i++, f++) *f /= x; return *this; } !EOF! ls -l 6_17a28.c echo x - 6_17a3.c sed 's/^X//' > 6_17a3.c << '!EOF!' /* Copyright (c) 1990 by AT&T Bell Telephone Laboratories, Incorporated. */ /* The C++ Answer Book */ /* Tony Hansen */ /* All rights reserved. */ // vector x = vector ... vector::vector(vector &x) { x.p->refcnt++; p = x.p; } !EOF! ls -l 6_17a3.c echo x - 6_17a4.c sed 's/^X//' > 6_17a4.c << '!EOF!' /* Copyright (c) 1990 by AT&T Bell Telephone Laboratories, Incorporated. */ /* The C++ Answer Book */ /* Tony Hansen */ /* All rights reserved. */ // x = y vector& vector::operator=(vector &vec) { vec.p->refcnt++; if (--p->refcnt == 0) { delete p->f; delete p; } p = vec.p; return *this; } !EOF! ls -l 6_17a4.c echo x - 6_17a5.c sed 's/^X//' > 6_17a5.c << '!EOF!' /* Copyright (c) 1990 by AT&T Bell Telephone Laboratories, Incorporated. */ /* The C++ Answer Book */ /* Tony Hansen */ /* All rights reserved. */ // x = 5.0 vector& vector::operator=(float x) { int l = p->length; if (p->refcnt > 1) { p->refcnt--; p = new vrep; p->length = l; p->refcnt = 1; p->f = new float[l]; } float *f = p->f; for (int i = 0; i < l; i++) *f++ = x; return *this; } !EOF! ls -l 6_17a5.c echo x - 6_17a6.c sed 's/^X//' > 6_17a6.c << '!EOF!' /* Copyright (c) 1990 by AT&T Bell Telephone Laboratories, Incorporated. */ /* The C++ Answer Book */ /* Tony Hansen */ /* All rights reserved. */ // x = v1 + v2 #include vector& operator+(vector &v1, vector &v2) { // allocate the new vector int l = min(v1.p->length, v2.p->length); vector *v = new vector(l); // do the operations float *f = v->p->f; float *f1 = v1.p->f; float *f2 = v2.p->f; for (int i = 0; i < l; i++, f1++, f2++) *f++ = *f1 + *f2; return *v; } !EOF! ls -l 6_17a6.c echo x - 6_17a7.c sed 's/^X//' > 6_17a7.c << '!EOF!' /* Copyright (c) 1990 by AT&T Bell Telephone Laboratories, Incorporated. */ /* The C++ Answer Book */ /* Tony Hansen */ /* All rights reserved. */ // x = v1 - v2 #include /* DELETE */ vector& operator-(vector &v1, vector &v2) { // allocate the new vector int l = min(v1.p->length, v2.p->length); vector *v = new vector(l); // do the operations float *f = v->p->f; float *f1 = v1.p->f; float *f2 = v2.p->f; for (int i = 0; i < l; i++, f1++, f2++) *f++ = *f1 - *f2; return *v; } !EOF! ls -l 6_17a7.c echo x - 6_17a8.c sed 's/^X//' > 6_17a8.c << '!EOF!' /* Copyright (c) 1990 by AT&T Bell Telephone Laboratories, Incorporated. */ /* The C++ Answer Book */ /* Tony Hansen */ /* All rights reserved. */ // x = v1 * v2 #include /* DELETE */ vector& operator*(vector &v1, vector &v2) { // allocate the new vector int l = min(v1.p->length, v2.p->length); vector *v = new vector(l); // do the operations float *f = v->p->f; float *f1 = v1.p->f; float *f2 = v2.p->f; for (int i = 0; i < l; i++, f1++, f2++) *f++ = *f1 * *f2; return *v; } !EOF! ls -l 6_17a8.c echo x - 6_17a9.c sed 's/^X//' > 6_17a9.c << '!EOF!' /* Copyright (c) 1990 by AT&T Bell Telephone Laboratories, Incorporated. */ /* The C++ Answer Book */ /* Tony Hansen */ /* All rights reserved. */ // x = v1 / v2 #include /* DELETE */ vector& operator/(vector &v1, vector &v2) { // allocate the new vector int l = min(v1.p->length, v2.p->length); vector *v = new vector(l); // do the operations float *f = v->p->f; float *f1 = v1.p->f; float *f2 = v2.p->f; for (int i = 0; i < l; i++, f1++, f2++) *f++ = *f1 / *f2; return *v; } !EOF! ls -l 6_17a9.c echo x - makefile sed 's/^X//' > makefile << '!EOF!' CFLAGS= -I. CC= CC -I. -I../../CC ERROR= ../../error.o all: tst tst: tst.o vectorall.o makefile $(CC) $(CFLAGS) tst.o vectorall.o -o tst $(ERROR) tst.o: tst.c 6_17a.h 6_17a0.h vectorall.o: 6_17a.h 6_17a0.h 6_17a1.c 6_17a10.c 6_17a11.c \ 6_17a12.c 6_17a13.c 6_17a14.c 6_17a15.c 6_17a16.c \ 6_17a17.c 6_17a18.c 6_17a19.c 6_17a2.c 6_17a20.c \ 6_17a21.c 6_17a22.c 6_17a23.c 6_17a24.c 6_17a25.c \ 6_17a26.c 6_17a27.c 6_17a28.c 6_17a3.c 6_17a4.c \ 6_17a5.c 6_17a6.c 6_17a7.c 6_17a8.c 6_17a9.c vectorall.c CMP= tst.cmp OUT= tst.out tst.out: tst ; tst > tst.out test: all $(OUT) $(CMP) cmp tst.out tst.cmp echo tests done !EOF! ls -l makefile echo x - tst.c sed 's/^X//' > tst.c << '!EOF!' /* Copyright (c) 1990 by AT&T Bell Telephone Laboratories, Incorporated. */ /* The C++ Answer Book */ /* Tony Hansen */ /* All rights reserved. */ #include "6_17a.h" main() { vector a(8), b(9, 17.), c(4, 3.); cout << "init" << ", " << "a=" << a << "\n"; cout << "init" << ", " << "b=" << b << "\n"; cout << "init" << ", " << "c=" << c << "\n"; a=19.; cout << "a=19." << ", " << "a=" << a << "\n"; a=c; cout << "a=c" << ", " << "a=" << a << "\n"; a = b + c; cout << "a = b + c" << ", " << "a=" << a << "\n"; cout << "b=" << b << "\n"; cout << "c=" << c << "\n"; a = b - c; cout << "a = b - c" << ", " << "a=" << a << "\n"; cout << "b=" << b << "\n"; cout << "c=" << c << "\n"; a = b - 5.; cout << "a = b - 5." << ", " << "a=" << a << "\n"; cout << "b=" << b << "\n"; cout << "c=" << c << "\n"; a = b - 5; cout << "a = b - 5" << ", " << "a=" << a << "\n"; cout << "b=" << b << "\n"; cout << "c=" << c << "\n"; b += b; cout << "b += b" << ", " << "b=" << b << "\n"; b *= b; cout << "b *= b" << ", " << "b=" << b << "\n"; b /= 5.; cout << "b /= 5." << ", " << "b=" << b << "\n"; c *= 5.; cout << "c *= 5." << ", " << "c=" << c << "\n"; cout << "c[2]=" << c[2] << "\n"; c[2]=99.; cout << "c[2]=99." << ", " << "c=" << c << "\n"; cout << "(b==c=)" << (b==c) << "\n"; cout << "(b!=c=)" << (b!=c) << "\n"; cout << "b.dot(c)=" << b.dot(c) << "\n"; cout << "c.dot(b)=" << c.dot(b) << "\n"; #if 0 #endif return 0; } !EOF! ls -l tst.c echo x - tst.cmp sed 's/^X//' > tst.cmp << '!EOF!' init, a=(0, 0, 0, 0, 0, 0, 0, 0) init, b=(17, 17, 17, 17, 17, 17, 17, 17, 17) init, c=(3, 3, 3, 3) a=19., a=(19, 19, 19, 19, 19, 19, 19, 19) a=c, a=(3, 3, 3, 3) a = b + c, a=(20, 20, 20, 20) b=(17, 17, 17, 17, 17, 17, 17, 17, 17) c=(3, 3, 3, 3) a = b - c, a=(14, 14, 14, 14) b=(17, 17, 17, 17, 17, 17, 17, 17, 17) c=(3, 3, 3, 3) a = b - 5., a=(12, 12, 12, 12, 12, 12, 12, 12, 12) b=(17, 17, 17, 17, 17, 17, 17, 17, 17) c=(3, 3, 3, 3) a = b - 5, a=(17, 17, 17, 17, 17) b=(17, 17, 17, 17, 17, 17, 17, 17, 17) c=(3, 3, 3, 3) b += b, b=(34, 34, 34, 34, 34, 34, 34, 34, 34) b *= b, b=(1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156) b /= 5., b=(231.2, 231.2, 231.2, 231.2, 231.2, 231.2, 231.2, 231.2, 231.2) c *= 5., c=(15, 15, 15, 15) c[2]=15 c[2]=99., c=(15, 15, 99, 15) (b==c=)0 (b!=c=)1 b.dot(c)=33292.8 c.dot(b)=33292.8 !EOF! ls -l tst.cmp echo x - vector.h sed 's/^X//' > vector.h << '!EOF!' /* Copyright (c) 1990 by AT&T Bell Telephone Laboratories, Incorporated. */ /* The C++ Answer Book */ /* Tony Hansen */ /* All rights reserved. */ #include "6_17a.h" !EOF! ls -l vector.h echo x - vectorall.c sed 's/^X//' > vectorall.c << '!EOF!' /* Copyright (c) 1990 by AT&T Bell Telephone Laboratories, Incorporated. */ /* The C++ Answer Book */ /* Tony Hansen */ /* All rights reserved. */ #include "6_17a.h" #include "6_17a1.c" #include "6_17a2.c" #include "6_17a3.c" #include "6_17a4.c" #include "6_17a5.c" #include "6_17a6.c" #include "6_17a7.c" #include "6_17a8.c" #include "6_17a9.c" #include "6_17a10.c" #include "6_17a11.c" #include "6_17a12.c" #include "6_17a13.c" #include "6_17a14.c" #include "6_17a15.c" #include "6_17a16.c" #include "6_17a17.c" #include "6_17a18.c" #include "6_17a19.c" #include "6_17a20.c" #include "6_17a21.c" #include "6_17a22.c" #include "6_17a23.c" #include "6_17a24.c" #include "6_17a25.c" #include "6_17a26.c" #include "6_17a27.c" #include "6_17a28.c" !EOF! ls -l vectorall.c # The following exit is to ensure that extra garbage # after the end of the shar file will be ignored. exit 0