SlideShare a Scribd company logo
Records (structs)
CS103- Computer Programming
2
Structures
• A Structure is a collection of related data items, possibly of
different types.
• A structure type in C++ is called struct.
• A struct is heterogeneous in that it can be composed of
data of different types.
• In contrast, array is homogeneous since it can contain only
data of the same type.
3
Structures
• Structures hold data that belong together.
• Examples:
– Student record: student id, name, major, gender, start year, …
– Bank account: account number, name, currency, balance, …
– Address book: name, address, telephone number, …
• In database applications, structures are called records.
4
Structures
• Individual components of a struct type are called members
(or fields).
• Members can be of different types (simple, array or struct).
• A struct is named as a whole while individual members are
named using field identifiers.
• Complex data structures can be formed by defining arrays
of structs.
5
struct basics
• Definition of a structure:
struct <struct-type>{
<type> <identifier_list>;
<type> <identifier_list>;
...
} ;
• Example:
struct Date {
int day;
int month;
int year;
} ;
The “Date” structure
has 3 members,
day, month & year.
Each identifier
defines a member
of the structure.
6
struct examples
• Example:
struct StudentInfo{
int Id;
int age;
char Gender;
double CGA;
};
• Example:
struct StudentGrade{
char Name[15];
char Course[9];
int Lab[5];
int Homework[3];
int Exam[2];
};
The “StudentGrade”
structure has 5
members of
different array types.
The “StudentInfo”
structure has 4 members
of different types.
7
struct examples
• Example:
struct BankAccount{
char Name[15];
int AcountNo[10];
double balance;
Date Birthday;
};
• Example:
struct StudentRecord{
char Name[15];
int Id;
char Dept[5];
char Gender;
};
The “StudentRecord”
structure has 4
members.
The “BankAcount”
structure has simple,
array and structure
types as members.
8
struct basics
• Declaration of a variable of struct type:
<struct-type> <identifier_list>;
• Example:
StudentRecord Student1, Student2;
Student1 and Student2 are variables of
StudentRecord type.
Student1 Student2
Name
Id Gender
Dept
Name
Id Gender
Dept
9
Chan Tai Man
12345 M
COMP
Ex. 1: struct basics
• The members of a struct type variable
are accessed with the dot (.) operator:
<struct-variable>.<member_name>;
• Example:
strcpy(Student1.Name, "Chan Tai Man");
Student1.Id = 12345;
strcpy(Student1.Dept, "COMP");
Student1.gender = 'M';
cout << "The student is ";
switch (Student1.gender){
case 'F': cout << "Ms. "; break;
case 'M': cout << "Mr. "; break;
}
cout << Student1.Name << endl;
Student1
Name
Id Gender
Dept
Records (structs)
• struct: collection of a fixed number of components
(members), accessed by name
– Members may be of different types
• Syntax:
10
Records (structs) (cont'd.)
• A struct is a definition, not a declaration
11
Records (structs) (cont'd.)
12
Accessing struct Members
• The syntax for accessing a struct member is:
• The dot (.) is an operator, called the member access
operator
13
Accessing struct Members (cont'd.)
• To initialize the members of newStudent:
newStudent.GPA = 0.0;
newStudent.firstName = "John";
newStudent.lastName = "Brown";
14
Accessing struct Members (cont'd.)
• More examples:
cin >> newStudent.firstName;
cin >> newStudent.testScore >>
newStudent.programmingScore;
score = (newStudent.testScore +
newStudent.programmingScore) / 2;
15
Accessing struct Members (cont'd.)
if (score >= 90)
newStudent.courseGrade = 'A';
else if (score >= 80)
newStudent.courseGrade = 'B';
else if (score >= 70)
newStudent.courseGrade = 'C';
else if (score >= 60)
newStudent.courseGrade = 'D';
else
newStudent.courseGrade = 'F';
16
Example Movie Struct
// example about structures
#include <iostream>
#include <string>
using namespace std;
struct movies_t {
string title;
int year;
} mine, yours;
void printmovie (movies_t movie);
int main ()
{
string mystr;
mine.title = "2001 A Space
Odyssey";
mine.year = 1968;
cout << "Enter title: ";
getline (cin,yours.title);
cout << "Enter year: ";
getline (cin,mystr);
cin>> yours.year;
cout << "My favorite movie is:n ";
printmovie (mine);
cout << "And yours is:n ";
printmovie (yours);
return 0;
}
void printmovie (movies_t movie)
{
cout << movie.title;
cout << " (" << movie.year <<
")n";
}
17
Example Conti…
Enter title: Alien
Enter year: 1979
My favorite movie is:
2001 A Space Odyssey (1968)
And yours is:
Alien (1979)
18
Assignment
• Value of one struct variable can be assigned to another
struct variable of the same type using an assignment
statement
• The statement:
student = newStudent;
copies the contents of newStudent into student
19
Assignment (cont'd.)
• The assignment statement:
student = newStudent;
is equivalent to the following
statements:
student.firstName = newStudent.firstName;
student.lastName = newStudent.lastName;
student.courseGrade = newStudent.courseGrade;
student.testScore = newStudent.testScore;
student.programmingScore =
newStudent.programmingScore;
student.GPA = newStudent.GPA;
20
Comparison (Relational Operators)
• Compare struct variables member-
wise
– No aggregate relational operations allowed
• To compare the values of student and
newStudent:
21
Input/Output
• No aggregate input/output operations on a struct
variable
• Data in a struct variable must be read one member at a
time
• The contents of a struct variable must be written one
member at a time
22
struct Variables and Functions
• A struct variable can be passed as a parameter by
value or by reference
• A function can return a value of type struct
23
Arrays versus structs
24
Arrays in structs
• Two key items are associated with a list:
– Values (elements)
– Length of the list
• Define a struct containing both items:
25
Arrays in structs (cont'd.)
26
27
Arrays in structs (cont'd.)
structs in Arrays
28
29
structs in Arrays (cont’d.)
30
structs in Arrays (cont’d.)
structs within a struct
31
versus
Structs, and Pointer Variables
• You can declare pointers to other data types:
– student is an object of type studentType;
studentPtr is a pointer variable of type studentType
32
Structs, and Pointer Variables (cont'd.)
• To store address of student in studentPtr:
studentPtr = &student;
• To store 3.9 in component gpa of student:
(*studentPtr).gpa = 3.9;
– () used because dot operator has higher precedence than
dereferencing operator
– Alternative: use member access operator arrow (->)
33
Movie Example
// pointers to structures
#include <iostream>
#include <string>
using namespace std;
struct movies_t {
string title;
int year;
};
int main ()
{
string mystr;
movies_t amovie;
movies_t * pmovie;
pmovie = &amovie;
cout << "Enter title: ";
getline (cin, pmovie->title);
cout << "Enter year: ";
getline (cin, mystr);
(stringstream) mystr >>
pmovie->year;
cout << "nYou have
entered:n";
cout << pmovie->title;
cout << " (" << pmovie-
>year << ")n";
return 0;
}
34
Example Output…
Enter title: Invasion of the body snatchers
Enter year: 1978
You have entered:
Invasion of the body snatchers (1978)
35
Example …
pmovie->title is equivalent to (*pmovie).title
*pmovie.title is equivalent to *(pmovie.title)
36
Pointers & Structs
Expression What is evaluated Equivalent
a.b Member b of object a
a->b Member b of object pointed by a (*a).b
*a.b Value pointed by member b of object a *(a.b)
37
Structs & File Handling
• A file may be read record by record.
38
COMPLETE EXAMPLE OF POINT
39
Point Struct
with functions
struct Point{
int x;
int y;
void init(){
x=0;
y=0;
}
void init(int a, int b) // Overloaded
Function
{
x=a;
y=b;
}
void input(){
cout<<"nEnter value of X: ";
cin>>x;
cout<<"nEnter value of Y:";
cin>>y;
}
void print(){
cout<< "(" << x << "," << y <<")";
}
}; 40
void main()
{
Point p1,p2,p3={10,6},p4; //
All seem fine
p1.init();
p1.print();
p2.init(2,3);
p2.print();
p3.print();
p4.input();
p4.print();
}
//Output…
(0,0)
(2,3)
(10,6)
Enter value of X: 44
Enter value of Y:55
(44,55)
STUDENT’S HOME WORK
Sales Data Analysis
41
Programming Example: Sales Data Analysis
• A company has six salespeople
• Every month they go on road trips to sell the company’s
product
• At the end of each month, the total sales for each
salesperson, salesperson’s ID, and the month, are
recorded in a file
• At the end of each year, the manager of the company
asks for a report
42
Programming Example: Output Format
----------- Annual Sales Report -------------
ID QT1 QT2 QT3 QT4 Total
______________________________________________________________
12345 1892.00 0.00 494.00 322.00 2708.00
32214 343.00 892.00 9023.00 0.00 10258.00
23422 1395.00 1901.00 0.00 0.00 3296.00
57373 893.00 892.00 8834.00 0.00 10619.00
35864 2882.00 1221.00 0.00 1223.00 5326.00
54654 893.00 0.00 392.00 3420.00 4705.00
Total 8298.00 4906.00 18743.00 4965.00
Max Sale by SalesPerson: ID = 57373, Amount = $10619.00
Max Sale by Quarter: Quarter = 3, Amount = $18743.00
QT1 stands for quarter 1 (months 1 to 3), QT2 for quarter 2
(months 4 to 6), QT3 for quarter 3 (months 7 to 9), and QT4 for
quarter 4 (months 10 to 12)
43
Programming Example: Output Format (cont'd.)
• The salespeople IDs are stored in one file; sales data are
stored in another file
• The sales data is in the following form:
salesPersonID month saleAmount
.
.
.
• Sales data are not ordered
44
Programming Example: Input/Output
• Input: file containing each salesperson’s ID and a second
file containing the sales data
• Output: file containing annual sales report in the above
format
45
Programming Example: Problem Analysis
• Main components for each salesperson:
– ID
– Quarterly sales amount
– Total annual sales amount
• Use a struct to group the components
• Six people: array of size six
• Program requires total sales for each
quarter
– Use array of size four to store the data
46
Programming Example: Problem Analysis
(cont'd.)
47
Programming Example: Problem Analysis
(cont'd.)
• Read the salespeople IDs into the array
salesPersonList
• Initialize the quarterly sales and total sales for each
salesperson to 0
48
Programming Example: Problem Analysis
(cont'd.)
• For each entry in the file with the sales data:
– Read ID, month, sale amount for the month
– Search salesPersonList to locate the component
corresponding to this salesperson
– Determine the quarter corresponding to the month
– Update the sales for the quarter by adding the sale amount for
the month
49
Programming Example: Problem Analysis
(cont'd.)
• Once the sales data file is processed:
– Calculate the total sale by salesperson
– Calculate the total sale by quarter
– Print the report
50
Programming Example: Algorithm Design
• Translates into the following algorithm:
– Initialize the array salesPersonList
– Process the sales data
– Calculate the total sale by salesperson
– Calculate the total sale by quarter
– Print the report
– Calculate and print maximum sale by salesperson
– Calculate and print maximum sale by quarter
51
Programming Example: Main Algorithm
• Declare the variables
• Prompt user to enter name of file containing the
salesperson’s ID data
• Read the name of the input file
• Open the input file
• If input file does not exist, exit
• Initialize the array salesPersonList by calling the
function initialize
52
Programming Example: Main Algorithm (cont'd.)
• Close input file containing salesperson’s ID
• Prompt user to enter name of file containing sales data
• Read the name of the input file
• Open the input file
• If input file does not exist, exit
• Prompt user to enter name of output file
• Read the name of the output file
53
Programming Example: Main Algorithm (cont'd.)
• Open the output file
• Output data to two decimal places
• Process sales data
– Call the function getData
• Calculate the total sale by quarter by calling the function
saleByQuarter
• Calculate the total sale by salesperson by calling the
function totalSaleByPerson
54
Programming Example: Main Algorithm (cont'd.)
• Print the report in the tabular form; call the function
printReport
• Find and print the salesperson who produces the
maximum sales for the year by calling
maxSaleByPerson
• Find and print the quarter producing the maximum sale for
the year by calling maxSaleByQuarter
• Close files
55
Summary
• struct: collection of a fixed number of
components
• Components can be of different types
– Called members
– Accessed by name
• struct is a reserved word
• No memory is allocated for a struct
– Memory when variables are declared
56
Summary (cont'd.)
• Dot (.) operator: member access operator
– Used to access members of a struct
• The only built-in operations on a struct are the assignment
and member access
• Neither arithmetic nor relational operations are allowed on
structs
• struct can be passed by value or reference
• A function can return a value of type struct
• structs can be members of other structs
57

More Related Content

PPTX
Cs1123 12 structures
PDF
Structures
PPT
Structures
PPTX
Structure & union
PPTX
Structure & Union in C++
PPT
Basic c#
PDF
Lecture18 structurein c.ppt
PPSX
C++ programming structure & union
Cs1123 12 structures
Structures
Structures
Structure & union
Structure & Union in C++
Basic c#
Lecture18 structurein c.ppt
C++ programming structure & union

What's hot (19)

PPT
Chapter 4 strings
PPTX
Learning with classification and clustering, neural networks
PPTX
11. Objects and Classes
PDF
Vision academy classes_bcs_bca_bba_java part_2
PDF
L10
PPT
FP 201 - Unit4 Part 2
PPTX
When to use a structure vs classes in c++
PDF
Java 2 chapter 10 - basic oop in java
PPTX
Customer Linguistic Profiling
PPT
C++: Constructor, Copy Constructor and Assignment operator
PPTX
Constructor in c++
PDF
2013 11 CSharp Tutorial Struct and Class
PPTX
Constructors & destructors
PPTX
What's New in C++ 11/14?
PPTX
11. Java Objects and classes
PPT
358 33 powerpoint-slides_7-structures_chapter-7
PDF
C programming & data structure [arrays & pointers]
PPT
Memory Management In C++
PDF
Dynamics allocation
Chapter 4 strings
Learning with classification and clustering, neural networks
11. Objects and Classes
Vision academy classes_bcs_bca_bba_java part_2
L10
FP 201 - Unit4 Part 2
When to use a structure vs classes in c++
Java 2 chapter 10 - basic oop in java
Customer Linguistic Profiling
C++: Constructor, Copy Constructor and Assignment operator
Constructor in c++
2013 11 CSharp Tutorial Struct and Class
Constructors & destructors
What's New in C++ 11/14?
11. Java Objects and classes
358 33 powerpoint-slides_7-structures_chapter-7
C programming & data structure [arrays & pointers]
Memory Management In C++
Dynamics allocation
Ad

Viewers also liked (20)

PPTX
Pf cs102 programming-9 [pointers]
PPTX
Pf cs102 programming-8 [file handling] (1)
DOCX
Informatie fiche Periodieke Verzendingen
DOCX
OPORD Tactical foot march mission
PPTX
1.3 La arquitectura a finales del siglo xix
PPTX
Johan castellanos presentacion power point
PPTX
SRC-Funeral Coolers
DOCX
Nutrición infantil saludable
PPTX
Beverage Coolers
PPTX
Inducción 150516224412-lva1-app6892
DOC
Bahasa indonesia 1
 
PDF
Bizerba - Les Français et la consommation de fruits frais - par OpinionWay - ...
PDF
Marco jurídico - Protección de Infraestructuras Críticas
PPTX
Finals BollyT IIMA Chaos 2015 Quiz
PPTX
The Very Simple Fantasy Quiz 2016
PPTX
Introduction to Information Security
PPT
Information security
PPT
Principales Estructuras2
PDF
PDF
Young Pioneer Catalogue
Pf cs102 programming-9 [pointers]
Pf cs102 programming-8 [file handling] (1)
Informatie fiche Periodieke Verzendingen
OPORD Tactical foot march mission
1.3 La arquitectura a finales del siglo xix
Johan castellanos presentacion power point
SRC-Funeral Coolers
Nutrición infantil saludable
Beverage Coolers
Inducción 150516224412-lva1-app6892
Bahasa indonesia 1
 
Bizerba - Les Français et la consommation de fruits frais - par OpinionWay - ...
Marco jurídico - Protección de Infraestructuras Críticas
Finals BollyT IIMA Chaos 2015 Quiz
The Very Simple Fantasy Quiz 2016
Introduction to Information Security
Information security
Principales Estructuras2
Young Pioneer Catalogue
Ad

Similar to Pf cs102 programming-10 [structs] (20)

PPTX
CHAPTER -4-class and structure.pptx
PPTX
Engineering Computers - L29-Structures.pptx
PPT
Lecture number three Structures (1).ppt
PPT
Introduction to structures in c lang.ppt
PPT
structures.ppt
PPTX
ECE2102-Week13 - 14-Strhhhhhhhjjjucts.pptx
PPTX
Chapter 2 part II array and structure.pptx
PPTX
Data Structures and Algorithms_Updated.pptx
PPTX
Chapter4.pptx
PPTX
Structures and Unions
PPTX
Structure.pptx Structure.pptxStructure.pptxStructure.pptxStructure.pptxStruct...
PDF
Data Structure & Algorithm - Self Referential
PPTX
12Structures.pptx
PPTX
STRUCTURES IN C PROGRAMMING
PPT
C Language_PPS_3110003_unit 8ClassPPT.ppt
PPTX
data structure and c programing concepts
PPTX
9781337102087 ppt ch09
PDF
programming in C & Data structures an easy approach
PPTX
programming in C and Datastructures deepdive
PPT
CHAPTER -4-class and structure.pptx
Engineering Computers - L29-Structures.pptx
Lecture number three Structures (1).ppt
Introduction to structures in c lang.ppt
structures.ppt
ECE2102-Week13 - 14-Strhhhhhhhjjjucts.pptx
Chapter 2 part II array and structure.pptx
Data Structures and Algorithms_Updated.pptx
Chapter4.pptx
Structures and Unions
Structure.pptx Structure.pptxStructure.pptxStructure.pptxStructure.pptxStruct...
Data Structure & Algorithm - Self Referential
12Structures.pptx
STRUCTURES IN C PROGRAMMING
C Language_PPS_3110003_unit 8ClassPPT.ppt
data structure and c programing concepts
9781337102087 ppt ch09
programming in C & Data structures an easy approach
programming in C and Datastructures deepdive

Recently uploaded (20)

PPTX
Computer network topology notes for revision
PPTX
Moving the Public Sector (Government) to a Digital Adoption
PDF
“Getting Started with Data Analytics Using R – Concepts, Tools & Case Studies”
PDF
22.Patil - Early prediction of Alzheimer’s disease using convolutional neural...
PPTX
Introduction to Knowledge Engineering Part 1
PDF
Recruitment and Placement PPT.pdfbjfibjdfbjfobj
PPTX
1_Introduction to advance data techniques.pptx
PPTX
advance b rammar.pptxfdgdfgdfsgdfgsdgfdfgdfgsdfgdfgdfg
PDF
Introduction to Business Data Analytics.
PPT
Chapter 2 METAL FORMINGhhhhhhhjjjjmmmmmmmmm
PPT
Miokarditis (Inflamasi pada Otot Jantung)
PPTX
Introduction-to-Cloud-ComputingFinal.pptx
PPTX
Introduction to Firewall Analytics - Interfirewall and Transfirewall.pptx
PPTX
CEE 2 REPORT G7.pptxbdbshjdgsgjgsjfiuhsd
PDF
Galatica Smart Energy Infrastructure Startup Pitch Deck
PPTX
Introduction to Basics of Ethical Hacking and Penetration Testing -Unit No. 1...
PPTX
Data_Analytics_and_PowerBI_Presentation.pptx
PDF
Fluorescence-microscope_Botany_detailed content
PPTX
oil_refinery_comprehensive_20250804084928 (1).pptx
PPTX
IBA_Chapter_11_Slides_Final_Accessible.pptx
Computer network topology notes for revision
Moving the Public Sector (Government) to a Digital Adoption
“Getting Started with Data Analytics Using R – Concepts, Tools & Case Studies”
22.Patil - Early prediction of Alzheimer’s disease using convolutional neural...
Introduction to Knowledge Engineering Part 1
Recruitment and Placement PPT.pdfbjfibjdfbjfobj
1_Introduction to advance data techniques.pptx
advance b rammar.pptxfdgdfgdfsgdfgsdgfdfgdfgsdfgdfgdfg
Introduction to Business Data Analytics.
Chapter 2 METAL FORMINGhhhhhhhjjjjmmmmmmmmm
Miokarditis (Inflamasi pada Otot Jantung)
Introduction-to-Cloud-ComputingFinal.pptx
Introduction to Firewall Analytics - Interfirewall and Transfirewall.pptx
CEE 2 REPORT G7.pptxbdbshjdgsgjgsjfiuhsd
Galatica Smart Energy Infrastructure Startup Pitch Deck
Introduction to Basics of Ethical Hacking and Penetration Testing -Unit No. 1...
Data_Analytics_and_PowerBI_Presentation.pptx
Fluorescence-microscope_Botany_detailed content
oil_refinery_comprehensive_20250804084928 (1).pptx
IBA_Chapter_11_Slides_Final_Accessible.pptx

Pf cs102 programming-10 [structs]

  • 2. 2 Structures • A Structure is a collection of related data items, possibly of different types. • A structure type in C++ is called struct. • A struct is heterogeneous in that it can be composed of data of different types. • In contrast, array is homogeneous since it can contain only data of the same type.
  • 3. 3 Structures • Structures hold data that belong together. • Examples: – Student record: student id, name, major, gender, start year, … – Bank account: account number, name, currency, balance, … – Address book: name, address, telephone number, … • In database applications, structures are called records.
  • 4. 4 Structures • Individual components of a struct type are called members (or fields). • Members can be of different types (simple, array or struct). • A struct is named as a whole while individual members are named using field identifiers. • Complex data structures can be formed by defining arrays of structs.
  • 5. 5 struct basics • Definition of a structure: struct <struct-type>{ <type> <identifier_list>; <type> <identifier_list>; ... } ; • Example: struct Date { int day; int month; int year; } ; The “Date” structure has 3 members, day, month & year. Each identifier defines a member of the structure.
  • 6. 6 struct examples • Example: struct StudentInfo{ int Id; int age; char Gender; double CGA; }; • Example: struct StudentGrade{ char Name[15]; char Course[9]; int Lab[5]; int Homework[3]; int Exam[2]; }; The “StudentGrade” structure has 5 members of different array types. The “StudentInfo” structure has 4 members of different types.
  • 7. 7 struct examples • Example: struct BankAccount{ char Name[15]; int AcountNo[10]; double balance; Date Birthday; }; • Example: struct StudentRecord{ char Name[15]; int Id; char Dept[5]; char Gender; }; The “StudentRecord” structure has 4 members. The “BankAcount” structure has simple, array and structure types as members.
  • 8. 8 struct basics • Declaration of a variable of struct type: <struct-type> <identifier_list>; • Example: StudentRecord Student1, Student2; Student1 and Student2 are variables of StudentRecord type. Student1 Student2 Name Id Gender Dept Name Id Gender Dept
  • 9. 9 Chan Tai Man 12345 M COMP Ex. 1: struct basics • The members of a struct type variable are accessed with the dot (.) operator: <struct-variable>.<member_name>; • Example: strcpy(Student1.Name, "Chan Tai Man"); Student1.Id = 12345; strcpy(Student1.Dept, "COMP"); Student1.gender = 'M'; cout << "The student is "; switch (Student1.gender){ case 'F': cout << "Ms. "; break; case 'M': cout << "Mr. "; break; } cout << Student1.Name << endl; Student1 Name Id Gender Dept
  • 10. Records (structs) • struct: collection of a fixed number of components (members), accessed by name – Members may be of different types • Syntax: 10
  • 11. Records (structs) (cont'd.) • A struct is a definition, not a declaration 11
  • 13. Accessing struct Members • The syntax for accessing a struct member is: • The dot (.) is an operator, called the member access operator 13
  • 14. Accessing struct Members (cont'd.) • To initialize the members of newStudent: newStudent.GPA = 0.0; newStudent.firstName = "John"; newStudent.lastName = "Brown"; 14
  • 15. Accessing struct Members (cont'd.) • More examples: cin >> newStudent.firstName; cin >> newStudent.testScore >> newStudent.programmingScore; score = (newStudent.testScore + newStudent.programmingScore) / 2; 15
  • 16. Accessing struct Members (cont'd.) if (score >= 90) newStudent.courseGrade = 'A'; else if (score >= 80) newStudent.courseGrade = 'B'; else if (score >= 70) newStudent.courseGrade = 'C'; else if (score >= 60) newStudent.courseGrade = 'D'; else newStudent.courseGrade = 'F'; 16
  • 17. Example Movie Struct // example about structures #include <iostream> #include <string> using namespace std; struct movies_t { string title; int year; } mine, yours; void printmovie (movies_t movie); int main () { string mystr; mine.title = "2001 A Space Odyssey"; mine.year = 1968; cout << "Enter title: "; getline (cin,yours.title); cout << "Enter year: "; getline (cin,mystr); cin>> yours.year; cout << "My favorite movie is:n "; printmovie (mine); cout << "And yours is:n "; printmovie (yours); return 0; } void printmovie (movies_t movie) { cout << movie.title; cout << " (" << movie.year << ")n"; } 17
  • 18. Example Conti… Enter title: Alien Enter year: 1979 My favorite movie is: 2001 A Space Odyssey (1968) And yours is: Alien (1979) 18
  • 19. Assignment • Value of one struct variable can be assigned to another struct variable of the same type using an assignment statement • The statement: student = newStudent; copies the contents of newStudent into student 19
  • 20. Assignment (cont'd.) • The assignment statement: student = newStudent; is equivalent to the following statements: student.firstName = newStudent.firstName; student.lastName = newStudent.lastName; student.courseGrade = newStudent.courseGrade; student.testScore = newStudent.testScore; student.programmingScore = newStudent.programmingScore; student.GPA = newStudent.GPA; 20
  • 21. Comparison (Relational Operators) • Compare struct variables member- wise – No aggregate relational operations allowed • To compare the values of student and newStudent: 21
  • 22. Input/Output • No aggregate input/output operations on a struct variable • Data in a struct variable must be read one member at a time • The contents of a struct variable must be written one member at a time 22
  • 23. struct Variables and Functions • A struct variable can be passed as a parameter by value or by reference • A function can return a value of type struct 23
  • 25. Arrays in structs • Two key items are associated with a list: – Values (elements) – Length of the list • Define a struct containing both items: 25
  • 26. Arrays in structs (cont'd.) 26
  • 27. 27 Arrays in structs (cont'd.)
  • 29. 29 structs in Arrays (cont’d.)
  • 30. 30 structs in Arrays (cont’d.)
  • 31. structs within a struct 31 versus
  • 32. Structs, and Pointer Variables • You can declare pointers to other data types: – student is an object of type studentType; studentPtr is a pointer variable of type studentType 32
  • 33. Structs, and Pointer Variables (cont'd.) • To store address of student in studentPtr: studentPtr = &student; • To store 3.9 in component gpa of student: (*studentPtr).gpa = 3.9; – () used because dot operator has higher precedence than dereferencing operator – Alternative: use member access operator arrow (->) 33
  • 34. Movie Example // pointers to structures #include <iostream> #include <string> using namespace std; struct movies_t { string title; int year; }; int main () { string mystr; movies_t amovie; movies_t * pmovie; pmovie = &amovie; cout << "Enter title: "; getline (cin, pmovie->title); cout << "Enter year: "; getline (cin, mystr); (stringstream) mystr >> pmovie->year; cout << "nYou have entered:n"; cout << pmovie->title; cout << " (" << pmovie- >year << ")n"; return 0; } 34
  • 35. Example Output… Enter title: Invasion of the body snatchers Enter year: 1978 You have entered: Invasion of the body snatchers (1978) 35
  • 36. Example … pmovie->title is equivalent to (*pmovie).title *pmovie.title is equivalent to *(pmovie.title) 36
  • 37. Pointers & Structs Expression What is evaluated Equivalent a.b Member b of object a a->b Member b of object pointed by a (*a).b *a.b Value pointed by member b of object a *(a.b) 37
  • 38. Structs & File Handling • A file may be read record by record. 38
  • 40. Point Struct with functions struct Point{ int x; int y; void init(){ x=0; y=0; } void init(int a, int b) // Overloaded Function { x=a; y=b; } void input(){ cout<<"nEnter value of X: "; cin>>x; cout<<"nEnter value of Y:"; cin>>y; } void print(){ cout<< "(" << x << "," << y <<")"; } }; 40 void main() { Point p1,p2,p3={10,6},p4; // All seem fine p1.init(); p1.print(); p2.init(2,3); p2.print(); p3.print(); p4.input(); p4.print(); } //Output… (0,0) (2,3) (10,6) Enter value of X: 44 Enter value of Y:55 (44,55)
  • 41. STUDENT’S HOME WORK Sales Data Analysis 41
  • 42. Programming Example: Sales Data Analysis • A company has six salespeople • Every month they go on road trips to sell the company’s product • At the end of each month, the total sales for each salesperson, salesperson’s ID, and the month, are recorded in a file • At the end of each year, the manager of the company asks for a report 42
  • 43. Programming Example: Output Format ----------- Annual Sales Report ------------- ID QT1 QT2 QT3 QT4 Total ______________________________________________________________ 12345 1892.00 0.00 494.00 322.00 2708.00 32214 343.00 892.00 9023.00 0.00 10258.00 23422 1395.00 1901.00 0.00 0.00 3296.00 57373 893.00 892.00 8834.00 0.00 10619.00 35864 2882.00 1221.00 0.00 1223.00 5326.00 54654 893.00 0.00 392.00 3420.00 4705.00 Total 8298.00 4906.00 18743.00 4965.00 Max Sale by SalesPerson: ID = 57373, Amount = $10619.00 Max Sale by Quarter: Quarter = 3, Amount = $18743.00 QT1 stands for quarter 1 (months 1 to 3), QT2 for quarter 2 (months 4 to 6), QT3 for quarter 3 (months 7 to 9), and QT4 for quarter 4 (months 10 to 12) 43
  • 44. Programming Example: Output Format (cont'd.) • The salespeople IDs are stored in one file; sales data are stored in another file • The sales data is in the following form: salesPersonID month saleAmount . . . • Sales data are not ordered 44
  • 45. Programming Example: Input/Output • Input: file containing each salesperson’s ID and a second file containing the sales data • Output: file containing annual sales report in the above format 45
  • 46. Programming Example: Problem Analysis • Main components for each salesperson: – ID – Quarterly sales amount – Total annual sales amount • Use a struct to group the components • Six people: array of size six • Program requires total sales for each quarter – Use array of size four to store the data 46
  • 47. Programming Example: Problem Analysis (cont'd.) 47
  • 48. Programming Example: Problem Analysis (cont'd.) • Read the salespeople IDs into the array salesPersonList • Initialize the quarterly sales and total sales for each salesperson to 0 48
  • 49. Programming Example: Problem Analysis (cont'd.) • For each entry in the file with the sales data: – Read ID, month, sale amount for the month – Search salesPersonList to locate the component corresponding to this salesperson – Determine the quarter corresponding to the month – Update the sales for the quarter by adding the sale amount for the month 49
  • 50. Programming Example: Problem Analysis (cont'd.) • Once the sales data file is processed: – Calculate the total sale by salesperson – Calculate the total sale by quarter – Print the report 50
  • 51. Programming Example: Algorithm Design • Translates into the following algorithm: – Initialize the array salesPersonList – Process the sales data – Calculate the total sale by salesperson – Calculate the total sale by quarter – Print the report – Calculate and print maximum sale by salesperson – Calculate and print maximum sale by quarter 51
  • 52. Programming Example: Main Algorithm • Declare the variables • Prompt user to enter name of file containing the salesperson’s ID data • Read the name of the input file • Open the input file • If input file does not exist, exit • Initialize the array salesPersonList by calling the function initialize 52
  • 53. Programming Example: Main Algorithm (cont'd.) • Close input file containing salesperson’s ID • Prompt user to enter name of file containing sales data • Read the name of the input file • Open the input file • If input file does not exist, exit • Prompt user to enter name of output file • Read the name of the output file 53
  • 54. Programming Example: Main Algorithm (cont'd.) • Open the output file • Output data to two decimal places • Process sales data – Call the function getData • Calculate the total sale by quarter by calling the function saleByQuarter • Calculate the total sale by salesperson by calling the function totalSaleByPerson 54
  • 55. Programming Example: Main Algorithm (cont'd.) • Print the report in the tabular form; call the function printReport • Find and print the salesperson who produces the maximum sales for the year by calling maxSaleByPerson • Find and print the quarter producing the maximum sale for the year by calling maxSaleByQuarter • Close files 55
  • 56. Summary • struct: collection of a fixed number of components • Components can be of different types – Called members – Accessed by name • struct is a reserved word • No memory is allocated for a struct – Memory when variables are declared 56
  • 57. Summary (cont'd.) • Dot (.) operator: member access operator – Used to access members of a struct • The only built-in operations on a struct are the assignment and member access • Neither arithmetic nor relational operations are allowed on structs • struct can be passed by value or reference • A function can return a value of type struct • structs can be members of other structs 57

Editor's Notes

  • #2: Remind chapter – II Three types of data types (simple, structures, pointers) Variables to store data of int float…. What is the purpose of a avariable …? Where these varibels are stored . . . RAM ? How to see the address of a vaaibrl inside the memory …
  • #39: http://www.learncpp.com/cpp-tutorial/47-structs/