Download presentation
Presentation is loading. Please wait.
Published byOswald Daniels Modified over 8 years ago
1
Introduction to Computer Science COMP 51 – Fall 2012 – Section 2 Structures
2
Business Exam 2 next week (Review on Wed) Office hours will be next Thurs instead of Tues Project 5 – Part A Will discuss briefly on Monday Due Monday, Nov 26 th Also on Monday, you will complete Lab 8 (which we will start today). I will be in class until noon (at which time I have to leave for a meeting) 2
3
Structures 3
4
Prior knowledge – Arrays Collection of multiple values of the same type New concept – Structures Collection of multiple values of different types Treated as a single item, like arrays Several key differences Structure elements are accessed by name, not by index number Must first define structure prior to declaring any variables 4
5
Why Structures? The pieces of data are related in some way Easier to keep them together (all in one place) Easier to move them around all at once! Examples Certificate of Deposit at a bank Account balance, interest rate, term length Time of day Hour, minute, second Student information record First name, last name, student ID number, cell phone, home phone, campus phone, etc… 5
6
New Keyword: struct The keyword struct is used to create a new structure Each item (member) inside the structure has a name, just like a variable Two (or more) names to keep track of now The name of the structure type The name(s) of elements inside the structure 6
7
Define Structure Type Define struct globally (typically) Example for certificate of deposit account Name of structure? CDAccount Name of members in the structure? balance, InterestRate, term struct CDAccount { double balance; double interestRate; int term; }; 7
8
Declare Structure Variable Step 1: Define structure type (previous slide) Compiler then knows what a “CDAccount” is Step 2: Declare a variable with this new structure type Just like declaring an int, float, char, … Variable account of type CDAccount It contains “member variables” CDAccount account; 8
9
Accessing Structure Members Individual elements are called “member variables” Different structure types can have same member variable names without conflict New operator to access members:. Use to read or write a member variable 9 account.balance account.interestRate account.term A period! “dot”
10
Structures as Function Arguments Passed like any simple data type Pass-by-value or Pass-by-reference Neat trick: Easily pass multiple data items to a function! Can also be returned by function Return type is structure type Neat trick: Easily return multiple data items from a function! 10
11
Example Program 11 #include using namespace std; // Structure for certificate of deposit struct CDAccount { double balance; double interestRate; int term; }; CDAccount openAccount(void); void printAccount(CDAccount account); Function returning a struct Function taking a struct
12
Example Program 12 int main(void) { CDAccount account; account = openAccount(); printAccount(account); return 0; } Declare a new instance of the CDAccount structure called “account”
13
Example Program 13 CDAccount openAccount(void) { CDAccount account; cout << "Enter account balance: $"; cin >> account.balance; cout << "Enter account interest rate in %: "; cin >> account.interestRate; cout << "Enter number of months until maturity: "; cin >> account.term; return account; } Returns the variable account, which is a structure of type CDAccount and contains 3 member variables (balance, interestRate, and term)
14
Example Program 14 void printAccount(CDAccount account) { double rateFraction, interestEarned, endBalance; rateFraction = account.interestRate/100.0; interestEarned = account.balance* (rateFraction*(account.term/12.0)); endBalance = interestEarned + account.balance; cout << "When your CD matures in " << account.term << " months, it will have a balance of $" << endBalance << endl; }
15
Example Output 15 Enter account balance: $100.00 Enter account interest rate in %: 10.0 Enter number of months until maturity: 6 When your CD matures in 6 months, it will have a balance of $105
16
Pitfall – Required Semicolon! Semicolon after structure definition is required! struct WeatherData { double temperature; double windVelocity; }; semicolon! Required since you can declare structure variables in this location 16
17
Pitfall – Initialization Member variables cannot be initialized in the declaration The structure definition only defines the types, names and order of members struct WeatherData { double temperature = 32.0; double windVelocity = 10; }; This is not allowed 17
18
Uniqueness of Names Different structures may use the same member variables names without confusion Names within a structure still have to be unique, however 18 struct CDAccount { double balance; double interestRate; int term; }; struct CheckingAccount { double balance; double interestRate; };
19
Structure Assignments An entire structure can be copied in a single statement (in contrast to arrays, which must be element by element) Declare two structure variables CDAccount account1; CDAccount account2; // Set data in account1 account2 = account1; Simply copies each member variable from apples into member variables from oranges Can’t do anything else, however No comparisons (==, >, <, etc.) At least not without extra programming work… 19
20
Arrays of Structures An array of 10,000 CD account structures CDAccount accounts[10000]; Accessing an element of the structure in the array cout << “Account #10 balance is $” << accounts[10].balance << endl; Structures can have elements that are arrays, too 20
21
Lab 8: Structures Exercise 21
22
Lab 8 You’re going to create a program to store information about a team of fencers at a tournament. Create a Fencer structure to store the first name, weapon and scores from 2 bouts for each fencer. There are three possible weapons: “foil”, “epee” and “saber”. The scores for a bout are integers between 0 and 15. 22
23
Lab 8 Create an array of 5 Fencers. This array should be declared in main(). You will pass it to functions that use it. (Remember that arrays are always passed by reference to functions). Create a function to prompt the user for information about each fencer and fill it into the array getTeam(Fencer team[], int teamSize); Create a function to print out the name, weapon and highest score of each fencer on the team. printTeam(Fencer team[], int teamSize); 23
24
Lab 8 Create a function to ask the user to select a weapon and then print out the names of all the fencers who use that particular weapon. weaponChoice(Fencer team[], int teamSize); Call these three functions in sequence inside main(). 24
25
Lab 8 25 Sample input and output
26
Questions? ? ? ? 26
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.