1 / 21

Structures

Structures. 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. Structure Definition. struct name { variable declaration; variable declaration; . . };

jagger
Télécharger la présentation

Structures

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Structures

  2. Structure Basics • A structure is a collection of data values, called datamembers, 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 struct Rect { double x; double y; char color; double width; double height; }; struct Rect r1 = {0,0,’r’,5,10}; r1 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 sametype. 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)=(a+c,b+d) (a,b)*(c,d)=(a*c,b*d)

  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) = (c*a,c*b) (a,b)^c = (a^c,b^c)

  14. Arrays of Structures • Arrays of structures may be declared in the same way as other C data types. struct rect rectangles[20]; • rectangles[0] references first structure of rectangles array. rectangles[0].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.ival+1; 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; } s s1 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 cards[52]; int next_card = 0; }; Card suit rank 0 1 51 …... cards …… next_card

  18. Initialize the Deck for (i=26; i<39; i++) { d1.cards[i].suit = 'h'; d1.cards[i].rank = (i-26)+1; } for (i=39; i<52; i++) { d1.cards[i].suit = 's'; d1.cards[i].rank = (i-39)+1; } for (i=0; i<13; i++) { d1.cards[i].suit = 'c'; d1.cards[i].rank = i+1; } for (i=13; i<26; i++) { d1.cards[i].suit = 'd'; d1.cards[i].rank = (i-13)+1; }

  19. Print the Deck void print(struct Deck d1) { int i; for (i=0; i<52; i++) printf("%c %d\n", d1.cards[i].suit, d1.cards[i].rank); return; }

  20. How to Shuffle the Deck? for (i=0; i<52; i++) { // pick a random card x from 0-51 // swap card x and card i } 0 1 2 3 51 …………………………

  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 <= 21 wins • Jack, Queen, King are 10 points • Ace is 11 points • Other cards represented by their number

More Related