|
|
1.1 ! root 1: #print ! 2: Write a function ! 3: inprod(a,b,n) ! 4: that computes the inner product of two integer vectors ! 5: a and b which are n items long. Name the file "inprod.c" ! 6: and compile and test it; then type ready. ! 7: You may assume that the result and all intermediate ! 8: values fit in a 16-bit integer, not usually a safe assumption. ! 9: #once #create tzaqc.c ! 10: main() ! 11: { ! 12: int x[100], y[100]; ! 13: int k; ! 14: for(k=0; k<100; k++) ! 15: { ! 16: x[k] = k%10; ! 17: y[k] = (k*k)%3; ! 18: } ! 19: if (inprod(x,y,100) != xprod(x,y,100)) return(1); ! 20: return(0); ! 21: } ! 22: xprod(x,y,n) ! 23: int *x, *y; ! 24: { ! 25: int k, sum; ! 26: for(sum=k=0; k<n; k++) ! 27: sum=+ *x++ * *y++; ! 28: return(sum); ! 29: } ! 30: #user ! 31: cc tzaqc.c inprod.o ! 32: a.out ! 33: #succeed ! 34: /* one way */ ! 35: inprod(a, b, n) ! 36: int *a, *b; ! 37: { ! 38: int s; ! 39: ! 40: s = 0; ! 41: while (n--) ! 42: s += *a++ * *b++; ! 43: ! 44: /* none of the spaces in the line above are necessary but ! 45: would you really want to read ! 46: s+=*a++**b++; ! 47: and try to parse it? Even clearer than what I have, ! 48: but slower, would be ! 49: for(i=0; i<n; i++) ! 50: s += a[i]*b[i]; ! 51: */ ! 52: ! 53: return(s); ! 54: } ! 55: #log ! 56: #next ! 57: 43.1a 10
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.