1 / 21

Structures - Part II aggregate operations arrays of type struct nested structures

Structures - Part II aggregate operations arrays of type struct nested structures compared to classes. Aggregate Operations. Operation Arrays Structs I/O No ( except strings ) No Assignment No Yes Arithmetic No No Comparison No No

hyman
Télécharger la présentation

Structures - Part II aggregate operations arrays of type struct nested 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 - Part II aggregate operations arrays of type struct nested structures compared to classes

  2. Aggregate Operations Operation Arrays Structs I/O No (except strings) No Assignment No Yes Arithmetic No No Comparison No No Parameter pass. Ref. only Eithervalue or ref. Funct. return value No Yes

  3. Arrays of Structures • struct Salaried • { char dept[5]; • int salary; • int vac_days; • }; • // array of 20 elements, each of type Salaried • Salaried emp[20];

  4. Arrays of Structures • emp[0].dept = “Purc”; • emp[0].salary = 34560; • emp[0].vac_days = 14; • ... • emp[2].salary = 32100; • emp[2].dept = “Ship”; • emp[2].vac_days = 10; • … • emp[19].dept = “Acct”; • emp[19].salary = 22500; • emp[19].vac_days = 12;

  5. Arrays of Structures • struct Payroll • { • int id; • char name[15]; • double payrate; • }; • // an array of 3 records of type Payroll • Payroll employee[3];

  6. Arrays of Structures • // load array -- there are other ways to load the array • Payroll employee[3] = { {11, “Begay”, 7.25}, • {12, “Gioseffi”, 6.50}, • {13, “Marra”, 9.00} }; • // display array • for(ndx = 0; ndx < 3; ndx++) • cout << ‘\n’ << employee[ndx].id • << setw(20) << employee[ndx].name • << setw(20) << employee[ndx].payrate;

  7. Arrays of Structures • struct Payroll{ int id; char name[15]; double payrate; }; // prototypesvoid loadarray(Payroll [3]); void showarray(Payroll [3]); *

  8. Arrays of Structures • void main() • { //declare array of 3 records of type Payroll • // and initialize the first record • Payroll employee[3] = { 11, "Begay", 7.25 }; • loadarray(employee); // calls • showarray(employee); • cout << endl<<endl; // for formatting • } // end main()

  9. Arrays of Structures • // load array - data typically entered via file input • void loadarray(Payrollstaff[3]) • {// begin at 1 because [0] already entered • for(int ndx = 1; ndx < 3; ndx++) • { cout << "Enter the ID, name, and pay rate: "; • cin >> staff[ndx].id >> staff[ndx].name • >> staff[ndx].payrate; • cout << endl; • } • }

  10. Arrays of Structures • void showarray(Payrollstaff[3]) • { • cout << setiosflags(ios::fixed) • << setprecision(2); • for(int ndx = 0; ndx < 3; ndx++) • cout << '\n' << setw(5) << staff[ndx].id • << setw(13) << staff[ndx].name • << setw(10) << staff[ndx].payrate; • }

  11. In Class Assign. 3 • Elementat. numat. massdensity • tungsten (W)74183.850 19.300 • sulfur (S)1632.064 2.07 • carbon (C) 612.011 2.260 9. Write a program which: a. creates an array of structures b. uses a global constant for the array size c. contains functions to load and to display d. format similar to the above chart

  12. In Class Assign. 3-ans. #include<iostream> #include<iomanip> using namespace std; struct Element { char name[20]; char symbol; int at_num; double at_mass; double density; }; const int ARR_SIZE = 5; void getData(Element *); // used pointerto cycle thru array void showData(Element *); // See filearray.cc sent on 4/30 void main() { //declare array - type Element Element FiveElements[5]; // first 3 records are initialized in main getData(&FiveElements[3]); // 1st call gets address of 4th struct showData(FiveElements); // 2nd call gets beginning address of array cout << ‘\n’; } // end main()

  13. NestedStructures • struct Date • { int month; • int day; • int year; }; • struct Vital_Data • { char name[15]; • char dept[10]; • int ID; • Date birth; // Date must be previously defined • double payrate; • }; *

  14. Nested Structures • Vital_Data Courtney; • // declaration of an object • // assignments of data to an object • strcpy (Courtney.name,“Lawrence”); • strcpy (Courtney.dept,“personnel”); • Courtney.ID = 1234; • Courtney.birth.month = 10;// birth is a struct • Courtney.birth.day = 25; // note: two periods • Courtney.birth.year = 77; // individually assigned • Courtney.payrate = 12.75; • Vital_Data Personnel[2]; // an array of structs • // this assignment syntax works on our Unix compiler

  15. Nested Structures • 1. Write the cin statements for thedepartment and the birthday. • 2. Write the cout statements for thedepartment and the birthday.

  16. Nested Structures • void loadarray(vital_Data personnel[2]) • { • for(int i = 0; i < 2 ; i++) • { cout << "\nEnter the name: "; • cin >> • cout << "Enter the department: "; • cin >> • cout << "Enter the id# and the payrate: "; • cin >> >> • cout << "Enter the birth date (dd mm yy) "; • cin >> • >> • >> } } personnel[i].name; personnel[i].dept; personnel[i].ID personnel[i].payrate; personnel[i].birth.day personnel[i].birth.month personnel[i].birth.year; * * * * *

  17. Formatted Output • ID# name department birthday payrate • 1234 Lawrence personnel 10/ 5/77 12.75 • 765 Newman shipping 2/29/59 13.11 cout << setiosflags(ios::fixed | ios::right); for(int i = 0; i < 2 ; i++) cout << '\n' << setw(5) << setprecision(0) << personnel[i].ID << setw(12) << personnel[i].name << setw(11) << personnel[i].dept << setw(5) << personnel[i].birth.day <<'/' << setw(2) << personnel[i].birth.month <<'/' << setw(2) << personnel[i].birth.year << setw(7) << setprecision(2) << personnel[i].payrate;

  18. Structure vs. Class • By default: • struct have public member variables • class have private member variables

  19. Class • Class syntax: • class Classname • { • private: • list of private variable declarationspublic: • list of function prototypes • };

  20. Class • An example: • class Date • { • private: • int day; • int month; • int year; • public: • (member functions) • };

  21. Imagination • is more important • than knowledge. • Albert Einstein

More Related