Lect 15P. 1 - PowerPoint PPT Presentation

1 / 26
About This Presentation
Title:

Lect 15P. 1

Description:

Arrays and Pointers Lecture 15 Arrays and Pointers So far, we have looked at pointer variables which were declared with statements like: FILE *fptr ; int *aptr ; We ... – PowerPoint PPT presentation

Number of Views:3
Avg rating:3.0/5.0
Slides: 27
Provided by: RickFr6
Category:
Tags: 15p | arrays | lect

less

Transcript and Presenter's Notes

Title: Lect 15P. 1


1
Arrays and Pointers
  • Lecture 15

2
Arrays and Pointers
  • So far, we have looked at pointer variables which
    were declared with statements like
  • FILE fptr
  • int aptr
  • We have also used pointer constants when we sent
    the address of a variable to a function. We did
    this by placing an ampersand before the variable
    name. For instance, the address of variable a is
    a, which is a pointer constant.

3
Arrays and Pointers
  • The name of an array without a subscript (index
    number) is also a pointer constant. When the
    name is used without the subscript it references
    the address of element 0 of the array.
  • int myarray10 / Declare an array /
  • int myptr / Declare a pointer (not
    initialized)/
  • printf (d\n, myarray) / print address of
    myarray0 /
  • scanf (d, myarray) / get value from
    keyboard and
  • store in myarray0 /
  • scanf (d,myarray0) / same thing as above
    /

4
Arrays and Pointers
  • myptr myarray2 / Assign the address of
    the third
  • element of myarray to myptr /
  • printf(d, myptr) / Print the value of what
    myptr is
  • pointing to, i.e., the value of
  • myarray2 /
  • Note that the in front of myptr de-references
    the pointer. That is, it says use the value in
    the address that is pointed to.
  • The following shows a small program and its
    output.

5
Arrays and Pointers
  • / Printing array values and addresses /
  • include ltstdio.hgt
  • int main ( )
  • int k
  • float a4 1000, 2000, 3000, 4000
  • printf ("k a ak ak\n")
  • for (k0 klt4 k)
  • printf ("d ld ld f\n", k, a, ak,
    ak)

6
Running the Program
  • r1tel () millerm 52gt a.out
  • k a ak ak
  • 0 2147462916 2147462916 1000.000000
  • 1 2147462916 2147462920 2000.000000
  • 2 2147462916 2147462924 3000.000000
  • 3 2147462916 2147462928 4000.000000
  • r1tel () millerm 53gt

7
Arrays and Pointers
  • We have seen how to pass a pointer for a single
    valued variable to a function.
  • Sometimes we want to pass an entire array to a
    function. The name of an array without a
    subscript is a pointer constant that contains the
    address of element 0 of the array.
    Therefore, if we pass the array name with no
    subscript to a function, we are passing a pointer
    to that array.
  • The following program illustrates this.

8
Arrays and Pointers
  • / Passing an array to a function /
  • include ltstdio.hgt
  • include ltstring.hgt
  • void myfunct (int , char )
  • int main ( )
  • char name20 "Michael J. Miller"
  • myfunct (20, name)

9
Arrays and Pointers
  • void myfunct (int len , char text )
  • int k
  • printf ("d\n", strlen(text))
  • for (k 0 k lt len k) printf ("c",
    textk)
  • /Program Output /
  • 17
  • Michael J. Miller

10
Arrays and Pointers
  • Given the declaration int a3 1, 2, 3
  • a is a pointer to (the address of) a0
  • a0 is a pointer to a0
  • a0 is the value 1 ( a is also the value 1)
  • a1 is a pointer to a1
  • a1 is the value 2
  • a2 is a pointer to a2
  • a2 is the value 3
  • a01 is a pointer to a1
  • a02 is a pointer to a2

11
Arrays and Pointers
  • Given the declaration
  • int b33 1,3,5, 7,9,11,
    13,15,17
  • b is a pointer to b00
  • b0 is also a pointer to b00
  • b1 is a pointer to b10
  • b2 is a pointer to b20
  • b is a pointer to b0 (special case)
  • b1 is the value of b10 (which is 7)
  • b2 1 is the value of b20 1 (which is
    14)

12
  • / Double subscript arrays and
  • user-written functions /
  • include ltstdio.hgt
  • void printarray (int 7, int)
  • int main( )
  • int calendar571,2,3,4,5,6,7,
  • 8, 9, 10,11,12,13,14,
  • 15,16,17,18,19,20,21,
  • 22,23,24,25,26,27,28,
  • 29,30,31,32,33,34,35
  • printarray (calendar , 5)

13
  • void printarray (int cal7, int j)
  • int k, n
  • for (k 0 k lt j k)
  • for (n 0 n lt 7 n)
  • printf ("3d ", calkn)
  • printf ("\n")

14
  • / Double subscript arrays, user-written
  • functions and pointer arithmetic /
  • include ltstdio.hgt
  • void printarray (int , int , int)
  • int main ( )
  • int calendar57 1,2,3,4,5,6,7, 8, 9,
    10,11,12,13,14,
  • 15,16,17,18,19,20,21,
  • 22,23,24,25,26,27,28,
  • 29,30,31,32,33,34,35
  • printarray (calendar0 , 5 , 7)

15
  • void printarray (int cal, int j, int m)
  • for (k 0 k lt jm k m)
  • for (n 0 n lt m n)
  • printf ("3d ", (calkn))
  • printf ("\n")

16
Assignment G13
  • A data file named g13.dat exists in the class
    "common area" on the UNIX system.
  • The file contains actual data from one test of an
    instrumented bicycle from an engineering hands-on
    lab experiment.
  • You should look at the file on the screen (with a
    "more" command), but DO NOT print it out, as it
    contains several thousand (but less than 12,000)
    lines of data.

17
Assignment G13
  • You will note that at the beginning of the file
    there are several lines of "header" information
    followed by many lines of data in four columns.
  • Count by hand the number of lines from the
    beginning of the file until you get to a line
    that has the actual data in the four columns.
    (You will need this number in Step 2 later.)
  • The fourth column is the raw data (voltage)
    values from the lab experiment.

18
Steps for G13
  • Write a complete C program, (say, g13.cpp), which
    does the following
  • Opens the data file for input.
  • Input the correct number of header lines one by
    one, display each one on the screen and print
    each one to a result file (say, g13res.dat), and
    then discard the information.

19
Steps for G13
  • For opening the data file and the output file,
    just use the usual fopen routine.
  • For reading the header lines, it might be rather
    convenient to read the complete line into a
    character array or string.
  • How long should this string be?
  • What routine might be used?

20
Steps for G13
  • Input each of the lines of data arranged in the
    four columns, discarding the data values from
    each of the first three columns and storing only
    the data from the fourth column in a
    one-dimensional array.
  • For skipping over the columns with unwanted
    data, you will need to use the assignment
    suppression operator, , in the scanf format.
  • Your program will need to detect the end-of-file
    (EOF) to know when to stop inputting data. Close
    the input file when you reach the EOF.

21
Data from g13.dat
  • "
  • "Source File C\PROGRA1\PSLOG\195RIDE.PL1
  • "ID IE Group 4 Bike Stress friday XR440
    12 bi
  • "Ch1 lbl/scl Start/Stop /A
  • "Ch2 lbl/scl input voltage signal /-5.000
    05.000
  • "Ch3 lbl/scl Off /C
  • "Ch4 lbl/scl Off /C
  • "Rate (mins) 0.0000833333324 Bat 8.8
  • "First Fri 20-Nov-1998 103847am
  • "Last Fri 20-Nov-1998 103940am
  • "Transferred Fri 20-Nov-1998 104237am
  • "Eq. PC time Fri 20-Nov-1998 104238AM

22
Data from g13.dat
  • "Rate (mins) 0.0000833333324 Bat 8.8
  • "First Fri 20-Nov-1998 103847am
  • "Last Fri 20-Nov-1998 103940am
  • "Transferred Fri 20-Nov-1998 104237am
  • "Eq. PC time Fri 20-Nov-1998 104238AM
  • "
  • Date,Time,Ch1Deg F,Ch2
  • 11/20/1998 103847.000 -4.989 0.238
  • 11/20/1998 103847.005 -4.989 0.231
  • 11/20/1998 103847.010 -4.989 0.228
  • 11/20/1998 103847.015 -4.989 0.231
  • 11/20/1998 103847.020 -4.989 0.228

23
Processing the G13 Data File
  • For skipping unwanted columns, we need to use the
    "assignment suppression operator" in the format
    specification
  • fscanf (infile, "sssf", data_val i )
  • Remember, to check for EOF, you could use the
    feof function.

24
Assignment G13
  • Find the largest value in the array and the
    smallest value in the array.
  • Display the results on the screen, and also write
    the results to the output file, g13result.dat.
    The results to be displayed and printed are
  • The total number of data points in the file
  • The maximum voltage and time at which it occurred
  • The minimum voltage and time at which it occurred
  • The elapsed time between the maximum and minimum
    values

25
Assignment G13
  • The change in the output voltage is related to
    the strain of the strain gage by
  • where
  • ?Vout V in A Sge
  • V in 5.0 Volts e is the strain
  • A 500 (amplification) ?Vout is the change in
    voltage
  • Sg 2.085 (gage factor)
  • The equation can be solved to give the strain as
    a function of the output voltage

26
Assignment 13
  • Stress-Strain Hookes Law
  • The stress(s) in the bicycle fork can be
    calculated from the strain (e), by using Hookes
    Law
  • s E e
  • Where E is the Modulus of Elasticity
  • For the bike fork material E 29.0 x 106 psi
  • The yield stress 36,000 psi
Write a Comment
User Comments (0)
About PowerShow.com