Announcements v Assignment 6 due on Wednesday December
Announcements v Assignment 6 due on Wednesday, December 3, 2003 v Final Exam on Tuesday, December 9, 2003 at 3 pm CS 150 Introduction to Computer Science 1 1
Multidimensional Array v A class contains 3 students and each of these students have taken 4 tests. Write a program that will read in the students grades from a file, then print them to the screen along with the largest and smallest grades overall and the average grade of each student. Student[0] The The The [0] [1] [2] [3] 77 68 86 73 96 87 89 78 70 90 86 81 largest grade is: 96 smallest grade is: 68 average grade for student 0 is 76. 00 average grade for student 1 is 87. 50 average grade for student 2 is 81. 75 CS 150 Introduction to Computer Science 1 2
Arrays and Data Types v Useful for storing a collection of data elements of the same data type (float, int, string). char my. Name[5]; //All elements chars float salaries[NUM_EMP]; //All elements floats char vowels[]={‘A’, ’E’, ’I’, ’O’, ’U’}; int matrix[3][5]; v What about storing a collection of data elements of different data types? CS 150 Introduction to Computer Science 1 3
Data with Different Data Types v For example, what if we wanted to keep the following information on a particular employee: ü ü ü employee id SS# number of children salary citizen v The elements have different data types, so we can’t conveniently use an array. Instead we will use a struct ( short for structure). CS 150 Introduction to Computer Science 1 4
Structure Definition To store this information: We would begin by defining a structure : ü ü ü employee id SS# number of children salary citizen struct employ { int id int ssnum; int numchild; float salary; bool citizen; }; CS 150 Introduction to Computer Science 1 5
Struct Terminology For this struct: struct employ { int id int ssnum; int numchild; float salary; bool citizen; }; v employ is the identifier name and a NEW data type. v The individual components id, ssnum, etc. are called members. CS 150 Introduction to Computer Science 1 6
Struct Declaration v As with all data types, in order to use our new data type employ we must allocate storage space by declaring variables of this data type: employ engineer, tech; v This will allocate space for two variables called engineer and tech with the previously described members id, ssnum, etc. CS 150 Introduction to Computer Science 1 7
Member Access Operator v To access a struct member, we use the member access operator (period between struct variable name and member name). v In the variable engineer of data type employ we can make the assignments: engineer. id = 12345; engineer. ssnum = 534334343; engineer. numchild = 2; engineer. salary = 45443. 34; engineer. citizen = true; v How do we access the data in arrays? CS 150 Introduction to Computer Science 1 8
Example One v Write a C++ struct data type realnum that will have members number, realpart, and intpart. v Declare a variable numinfo of that type. v Place the value 3. 14159 in the field number. CS 150 Introduction to Computer Science 1 9
Example One Solution struct realnum { float number; int realpart; intpart; }; Define struct realnum numinfo; Declare variable numinfo. number=3. 14159; Assign member number CS 150 Introduction to Computer Science 1 10
Structs as function arguments v Structs can be passed to functions by reference or value in the same manner that other data types have been passed. v Generally, passing structs by reference is preferred since passing by value requires a local copy of the struct be created within the function’s variables. CS 150 Introduction to Computer Science 1 11
Example Two v Write a C++ function split that accepts a variable of type realnum. v Assign the integer part of the number to the member variable intpart and the real part of the number to the member variable realpart. CS 150 Introduction to Computer Science 1 12
Example Two Solution v Function prototype: void split(realnum &); v Function call: split (numinfo); v Function definition: void split(realnum & numberinfo) { // Use numberinfo. number, numberinfo. intpart, // and numberinfo. realpart. } CS 150 Introduction to Computer Science 1 13
Example Three Consider the following struct data type: struct info { int num; int divisors[10]; int howmany; }; Write a C++ function compute that accepts a variable of type info and returns all the divisors greater than 1 of the variable num in the array divisors and the number of divisors in the variable howmany. CS 150 Introduction to Computer Science 1 14
- Slides: 14