1 / 27

Structures

Structures. Outline. Introduction Structure Definitions and Declarations Initializing Structures Operations on Structures Members Structures as Functions Parameters Array of Structures. Introduction. Structures

jill
Download Presentation

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 EKT 150 SEM I 10/11

  2. Outline • Introduction • Structure Definitions and Declarations • Initializing Structures • Operations on Structures Members • Structures as Functions Parameters • Array of Structures EKT 150 SEM I 10/11

  3. Introduction • Structures • Collection of related data items called components (or members) that are NOT necessarily of the same data type. • Commonly used to define records to be stored in files. • Usually the collections of related data item are characteristics in an object • For example: ObjectCharacteristics Book price, number of pages, year published Car price, year, model, colour Student name, matric_no, semester EKT 150 SEM I 10/11

  4. Structure Definition • Syntax: • struct StructureTypeName { structure member declaration list }; Example: struct book { float price; int numpages; int year; }; EKT 150 SEM I 10/11

  5. Structure Definition • struct information • A struct cannot contain an instance of itself • Can contain a member that is a pointer to the same structure type • A structure definition does not reserve space in memory • Instead creates a new data type used to define structure variables EKT 150 SEM I 10/11

  6. Structure Declaration • After defining a structure type, we may declare variables that are of that type. A structure variable declaration requires these elements : • keyword struct • structure type name • a list of variables names separated by commas • concluding semicolon E.g. struct book book1; struct book my_book,his_book,her_book; EKT 150 SEM I 10/11

  7. How does it look like in my program? #include <stdio.h> struct book { float price; int numpages; int year; } book1; int main( ) { …… } #include <stdio.h> struct book { float price; int numpages; int year; }; int main( ) { struct book book1; …… } or struct book book1; EKT 150 SEM I 10/11

  8. Initializing Structures struct book book1 = {25.50, 690, 2005}; OR book1.price = 25.50; book1.numpages = 690; book1.year = 2005; dot operator EKT 150 SEM I 10/11

  9. Operations on Structures Members EKT 150 SEM I 10/11

  10. Multiple Structures Variables struct book my_book, his_book, her_book; • price • price • price • numpages • numpages • numpages • year • year • year my_book his_book her_book EKT 150 SEM I 10/11

  11. Multiple Structures Variables e.g. struct book my_book, his_book, her_book; my_book. price = 25.50; her_book.price = 10.50; if(my_book.price > her_book.price) printf(“My book is more expensive than hers\n”); else printf(“My book is cheaper than hers\n”); EKT 150 SEM I 10/11

  12. Sample Program #include <stdio.h> struct book { float price; int numpages; int year; }; int main() { struct book my_book = {25.50,690,2005}; struct book her_book; printf("Enter book price : "); scanf("%f", &her_book.price); printf("Enter number of pages : "); scanf("%d", &her_book.numpages); printf("Enter year published : "); scanf("%d", &her_book.year); printf("My book :\n"); printf("%.2f\t%d\t%d\n", my_book.price, my_book.numpages, my_book.year); printf("Her book :\n"); printf("%.2f\t%d\t%d\n", her_book.price, her_book.numpages, her_book.year); if(my_book.year > her_book.year) printf("My book is the latest publication\n"); else printf("Her book is the latest publication\n"); return 0; } EKT 150 SEM I 10/11

  13. Structures as Function Parameters • Like variables of any other data type, structure variables can be used as formal and actual function parameters. • In passing structure variables by value to a function, the operating systems makes a copy of the entire structure in the data area of the called function. EKT 150 SEM I 10/11

  14. Structures as Function Parameters …… float compute_price(struct book bk);//function prototype … int main( ) { struct book bookC; …………… new_price = compute_price(bookC); //function call …… } float compute_price(struct book bkC) //function definition { ……. bkC.price=bkC.price + tax; …… return(bkC.price); } EKT 150 SEM I 10/11

  15. Structures as Function Parameters • A nonvoid function of a structure type can return a structure of that structure type under the function’s name if we use a return statement in the function. struct book read (); //function prototype int main( ) { ………. struct book b; b = read( ); //function call ………. } struct book read( ) //function definition { struct book bk; printf(“Enter price:”); scanf(“%f”, &bk.price); ….. return(bk); } EKT 150 SEM I 10/11

  16. Structures as Function Parameters • If all members of a structure variable are not needed for a function to perform its task, we can pass only the required members. • However, we must specify structure members using the component selection operator. int modify_year(int a, int b, int year); //function prototype …….. int main( ) { struct book bkC; ……………. avg_year=modify_year(aa, bb, bkC.year); //function call ……. } EKT 150 SEM I 10/11

  17. Structures as Function Parameters • It is possible to pass structure variables using pointers int main() { struct book b; ……… read(&b); //function call } void read(struct book *bk) { printf(“Enter price:”); scanf(“%f”, &bk->price); printf(“Enter numpages:”); scanf(“%d”, &bk->numpages); ……. } EKT 150 SEM I 10/11

  18. #include <stdio.h> struct book { float price; int numpages; int year; }; struct book read(); void print(struct book, struct book); void compare(int, int); int main() { struct book my_book = {25.50,690,2005}; struct book she_book; she_book=read(); print(my_book , she_book); compare(my_book.year, she_book.year); return 0; } struct book read() { struct book her_book; printf("Enter book price : "); scanf("%f", &her_book.price); printf("Enter number of pages : "); scanf("%d", &her_book.numpages); printf("Enter year published : "); scanf("%d", &her_book.year); return(her_book); } void print(struct book my_book, struct book her_book) { printf("My book :\n"); printf("%.2f\t%d\t%d\n", my_book.price, my_book.numpages, my_book.year); printf("Her book :\n"); printf("%.2f\t%d\t%d\n", her_book.price, her_book.numpages, her_book.year); } void compare(int my_year, int she_year) { if(my_year > she_year) printf("My book is the latest publication\n"); else printf("Her book is the latest publication\n"); } Sample Program EKT 150 SEM I 10/11

  19. An Array of Structures • Suppose a company has 50 full-time employees. struct employeeType { char firstName[20]; char lastName[20]; int personID; char deptID[10]; double yearlySalary; double monthlySalary double yearToDatePaid; double monthlyBonus; }; struct employeeType employees[50]; EKT 150 SEM I 10/11

  20. How it looks like EKT 150 SEM I 10/11

  21. How to access?? int counter; for(counter = 0; counter < 50; counter++) { scanf(“%s %s %d %s %lf”, &employees[counter].firstName, &employees[counter].lastName, &employees[counter].personID, &employees[counter].deptID, &employees[counter].yearlySalary); employees[counter].monthlySalary = employees[counter].yearlySalary/12; employees[counter].yearToDatePaid = 0.0; employees[counter].monthlyBonus = 0.0; } EKT 150 SEM I 10/11

  22. How to access?? • Suppose that for a given month the monthly bonuses are already stored in each employee’s record, and we have to calculate the monthly paycheck and update the yearToDatePaid amount. The following loop computes and prints the employee’s paycheck for the month: double payCheck; //variable to calculate the paycheckfor(counter = 0; counter < 50; counter++) { printf(“%s %s”, employees[counter].firstName, employees[counter].lastName); payCheck = employees[counter].monthlySalary + employees[counter].monthlyBonus; employees[counter].yearToDatePaid = employees[counter].yearToDatePaid + payCheck; } EKT 150 SEM I 10/11

  23. Arrays in Structures • Example const arraySize = 5; struct listType { int listElem[arraySize]; //array containing the list int listLength; //length of the list }; struct listType list; EKT 150 SEM I 10/11

  24. How it looks like • struct listType listElem listLength EKT 150 SEM I 10/11

  25. Structure Within a Structure struct contactType { string phone; string cellphone; string fax; string pager; string email; }; struct employeeType { struct nameType name; string emplID; struct addressType address; struct dateType hiredate; struct dateType quitdate; struct contactType contact; string deptID; double salary; }; struct nameType { string first; string middle; string last; }; struct addressType { string address1; string address2; string city; string state; string zip; }; struct dateType { string month; string day; string year; }; EKT 150 SEM I 10/11

  26. Structure Within a Structure : How to access?? //variable declaration struct employeeType newEmployee; //declare 100 employees' records struct employeeType newEmployee[100]; newEmployee.salary = 45678.00; newEmployee.name.first = "Mary"; newEmployee.name.middle = "Beth"; newEmployee.name.last = "Simmons"; EKT 150 SEM I 10/11

  27. Structure Within a Structure : How to access?? • The statement scanf(“%s”, &newEmployee.name.first); reads and stores a string into newEmployee.name.first. • The statement newEmployee.salary = newEmployee.salary * 1.05; updates the salary of newEmployee EKT 150 SEM I 10/11

More Related