Structures - PowerPoint PPT Presentation

About This Presentation
Title:

Structures

Description:

struct pair mp1,mp2,mp3,mp4; printf('Enter first pairn' ... mp4 = multiply(mp1,mp2); printf('Multiplication result = (%d,%d)n',mp4.first,mp4.second) ... – PowerPoint PPT presentation

Number of Views:18
Avg rating:3.0/5.0
Slides: 22
Provided by: csU66
Learn more at: https://www.cs.utsa.edu
Category:
Tags: mp4 | structures

less

Transcript and Presenter's Notes

Title: Structures


1
Structures
2
Structure Basics
  • A structure is a collection of data values,
    called data members, that form a single unit.
  • Unlike arrays, the data members can be of
    different types.

3
Structure Definition
  • struct name
  • variable declaration
  • variable declaration
  • .
  • .
  • the keyword struct announces that this is a
    structure definition

4
Initializing Structures
r1
  • struct Rect
  • double x
  • double y
  • char color
  • double width
  • double height
  • struct Rect r1 0,0,r,5,10

0
x
0
y
r
color
5.0
width
10.0
height
5
Accessing Data Members
r1
  • To access a data member use
  • Varname.membername
  • struct Rect r1 0,0,r,5,10
  • r1.x
  • r1.y
  • r1.color
  • r1.width
  • r1.height

0
x
0
y
r
color
5
width
10
height
6
Assignment operator
  • Assignment operator is defined for structure of
    the same type.
  • struct rect
  • double x
  • double y
  • char color
  • double width
  • double height
  • struct rect r1, r2
  • r1.x 10.5
  • r1.y 18.99
  • r1.width 24.2
  • r1.height 15.9
  • r1.color 'r'
  • / Copy all data from r1 to r2. /
  • r2 r1

7
Scope of a Structure
  • Member variables are local to the structure.
  • Member names are not known outside the structure.

8
Exercise
  • Write a program using structures that manipulates
    pairs. Addition and multiplication of pairs is
    defined below.
  • (a,b)(c,d)(ac,bd)
  • (a,b)(c,d)(ac,bd)

9
Pair Structure
  • Store two integers to represent the first and
    second number of pair
  • struct pair
  • int first
  • int second

10
Addition
  • struct pair add(struct pair p1, struct pair p2)
  • struct pair temp
  • temp.first p1.first p2.first
  • temp.second p1.second p2.second
  • return temp

11
Multiplication
  • struct pair multiply(struct pair p1, struct pair
    p2)
  • struct pair temp
  • temp.first p1.first p2.first
  • temp.second p1.second p2.second
  • return temp

12
How to use the functions
  • struct pair mp1,mp2,mp3,mp4
  • printf("Enter first pair\n")
  • scanf("d d",mp1.first, mp1.second)
  • printf("Enter second pair\n")
  • scanf("d d",mp2.first, mp2.second)
  • mp3 add(mp1, mp2)
  • printf("Addition result (d,d)\n",mp3.first,mp3
    .second)
  • mp4 multiply(mp1,mp2)
  • printf("Multiplication result
    (d,d)\n",mp4.first,mp4.second)

13
Exercise
  • Update the program to support the following on
    pairs
  • c(a,b) (ca,cb)
  • (a,b)c (ac,bc)

14
Arrays of Structures
  • Arrays of structures may be declared in the same
    way as other C data types.
  • struct rect rectangles20
  • rectangles0 references first structure of
    rectangles array.
  • rectangles0.color r

x
y
.......
color
width
height
0
1
2
3
19
15
Structures as Arguments to Functions
  • When a structure is passed as an argument to a
    function, it is a call-by-value reference.
  • Changes made to the formal parameters do not
    change the argument.
  • A pointer to a structure may also be passed as an
    argument to a function.
  • Changes made to the formal parameters also change
    the argument.

16
Call by Value Example
struct simple int ival double dval void
fun1(struct simple s) s.ival
s.ival1 s.dval s.dval 2 int
main(void) struct simple s1 10,
1.5 fun1(s1) printf(i lf\n, s1.ival ,
s1.dval ) return 0
s1
s
ival
10
10
1.5
1.5
dval
Updated s
11
3.5
17
Nested Structures
  • Structure definitions may contain data members
    that are other structures
  • struct Card
  • char suit
  • int rank
  • struct Deck
  • struct Card cards52
  • int next_card 0

Card
suit
rank
0
1
51
...
cards

next_card
18
Initialize the Deck
for (i26 ilt39 i)
d1.cardsi.suit 'h' d1.cardsi.rank
(i-26)1 for (i39 ilt52 i)
d1.cardsi.suit 's' d1.cardsi.rank
(i-39)1
  • for (i0 ilt13 i)
  • d1.cardsi.suit 'c'
  • d1.cardsi.rank i1
  • for (i13 ilt26 i)
  • d1.cardsi.suit 'd'
  • d1.cardsi.rank (i-13)1

19
Print the Deck
  • void print(struct Deck d1)
  • int i
  • for (i0 ilt52 i)
  • printf("c d\n", d1.cardsi.suit,
    d1.cardsi.rank)
  • return

20
How to Shuffle the Deck?
0
1
2
3
51
  • for (i0 ilt52 i)
  • // pick a random card x from 0-51
  • // swap card x and card i

21
BlackJack
  • Shuffle the deck
  • Deal first 2 cars to user
  • Print both cards on screen
  • Next two cards to dealer
  • Print only the first on screen
  • Ask user whether he/she wants to continue
  • Highest total lt 21 wins
  • Jack, Queen, King are 10 points
  • Ace is 11 points
  • Other cards represented by their number
Write a Comment
User Comments (0)
About PowerShow.com