Presentation is loading. Please wait.

Presentation is loading. Please wait.

2/17/2016IT 2791 Homogeneous aggregate // Using array string name[20]; int mid1[20]; int final[20]; double GPA[20]; name[0] = "Tom"; GPA[2] = 3.21; name:

Similar presentations


Presentation on theme: "2/17/2016IT 2791 Homogeneous aggregate // Using array string name[20]; int mid1[20]; int final[20]; double GPA[20]; name[0] = "Tom"; GPA[2] = 3.21; name:"— Presentation transcript:

1 2/17/2016IT 2791 Homogeneous aggregate // Using array string name[20]; int mid1[20]; int final[20]; double GPA[20]; name[0] = "Tom"; GPA[2] = 3.21; name: Tom, John, student-3, student_4,........, student-20 mid1: 70, 67, 86, 59,........, 80 final: 69, 77, 79, 64,........, 90 GPA: 3.02, 2.89, 3.21, 2.78,........, 3.67 // Using tvector class #include "tvector.h".............. tvector name(20); tvector mid1(20); tvector final(20); tvector GPA(20); name[1] = "John"; GPA[19] = 3.67; in STL (Standard Template Library)

2 2/17/2016IT 2792 Search in a tvector (or an array) // Using tvector class #include "tvector.h".............. tvector name(20); tvector mid1(20); tvector final(20); tvector GPA(20);..... // What is Susan's GAP? for (int i=0; i < name.length(); i++) { if (name[i] == "Susan") cout << GPA[i]; } Sequentially

3 2/17/2016IT 2793 What can be in an Array // Using tvector class..... struct student { string name; int mid1; int final; double GPA; };...... struct student class279[20];..... // What is Susan's GAP? for (int i=0; i < class279.length(); i++) { if ( (class279[i]).name == "Susan") cout << (class279[i]).GPA; } A bit old fashioned

4 2/17/2016IT 2794 The index can be an Enumerated Type enum day {Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday}; tvector MyclassHr(7); MyclassHr[Monday] = 2; MyclassHr[Tuesday] = MyclassHr[Thursday] = 0; MyclassHr[Wednesday] = 4; enum day ThreeDays[3]; enum day ADay; ThreeDay[0]=Saturday;...... if (ADay == Saturday || ADay == Sunday) cout << "It's weekend"; day FirstDay = day(0); Sunday Monday Tuesday Wednesday Thursday Friday Saturday Monday Tuesday Wednesday Thursday Friday Saturday Sunday

5 2/17/2016IT 2795 Two dimensional array, Matrix // Using array int A[3][3]; int B[3][3]; int C[3][3]; A[1][2] = 3; A[1][1] = 1; C[2][1] = A[2][1]+B[2][1]; // Using apmatrix class #include "apmatrix.h".............. apmatrix A(3,3); apmatrix B(3,3); apmatrix C(3,3); A[1][2] = 3; A[1][1] = 1; C[2][1] = A[2][1]+B[2][1]; 132 113 012 240 211 021 372 324 033 + =

6 2/17/2016IT 2796 in STL (Standard Template Library) #include.............. struct student { string name; int ssn; };............... student s; vector IT279; while (true) { cout << "Input SSN:"; cin >> s.ssn; if (s.ssn == 0) break; cout << "Input name:"; cin >> s.name; IT279.push_back(s); } for (int i=0;i< IT279.size();i++) { cout << "\nName:" << IT279[i].name << " "; cout << "SSN:" << IT279[i].ssn; } student 1 student 2 student 3 student 4 IT279 IT279[3] IT279[2] IT279[1] IT279[0]

7 2/17/2016IT 2797 Resize a vector student 1 student 2 student 3 student 4 x#@%.. CS CS[3] CS[2] CS[1] CS[0] CS[4] CS[5] the last push back here CS.resize(6)

8 2/17/2016IT 2798 Reserve a vector student 1 student 2 student 3 student 4 x#@%.. CS CS[3] CS[2] CS[1] CS[0] CS[4] CS[5] the last push back here CS.resize(6) CS.reserve(8)

9 2/17/2016IT 2799 pop back a vector student 1 student 2 student 3 student 4 x#@%.. CS2 CS2[3] CS2[2] CS2[1] CS2[0] CS2[4] CS2[5].... CS2.resize(6); CS2.pop_back(); reserved size

10 2/17/2016IT 27910 Stack and Queue Stack: LCFS (Last Come First Service) c1c2 c3 c5 c4 c2c3c4 c5 c1 Queue: FCFS (First Come First Service) Front Back

11 2/17/2016IT 27911 in STL (Double Ended Queue) #include.............. deque CS2;.............. while (true) { cout << "Input SSN:"; cin >> s.ssn; if (s.ssn == 0) break; cout << "Input name:"; cin >> s.name; CS2.push_front(s); CS2.push_back(s); } for (int i=0;i<CS2.size();i++) { cout << "\nName:" << CS2[i].name << " "; cout << "SSN:" << CS2[i].ssn; } student 2 student 1 student 2 CS2 CS2[3] CS2[2] CS2[1] CS2[0]

12 2/17/2016IT 27912 pop back and pop front a deque student 1 student 2 student 3 student 4 student 5 x#@%.. CS2 CS2[3] CS2[2] CS2[1] CS2[0] CS2[4].... CS2.pop_front(); CS2.pop_back(); student 1 student 2 student 3 student 4 student 5 x#@%.. CS2 CS2[2] CS2[1] CS2[0] CS2[4]

13 2/17/2016IT 27913 A Pointer: an address, a reference, a location of the computer memory A pointer of what? int, char, bool, double, or any kind of data type need to know so the computer knows how to read or store the contents of the memory. Can be

14 2/17/2016IT 27914 // define pointers int a, *ap; // can’t use a and *a at the same time; double b, *bp; token k, *kp; a is an integer, ap is a pointer to an integer; b is a double, bp is a pointer to a double; k is a token, kp s a pointer to a token. Define pointers

15 2/17/2016IT 27915 A Pointer points to a location of the computer memory int a=5; int *ap; double b=2.3; double *bp; token k; token *kp; bp = new double; *bp = 3.14; *ap = 7; // not new-ed yet a ap b bp k kp 4 bytes } ? ? 2.3 5 3.14 FFFFA080 FFFFA084 1 1

16 2/17/2016IT 27916 A Pointer points to a location of the computer memory double a=5.1; double *ap; double *b,*c; ap = &a; // &a :the address of a *ap=1.7; b = new double; *b = 3.14; b = &a; c = b; a ap b c 4 bytes } 5.1 3.14 1.7 new FFFFA080 FFFFA084 1 1 2 2 3 4 3 4

17 2/17/2016IT 27917 The name of an array is a pointer int a[4]={5,60,700,8000}; int *p; p=a; cout << *p << endl; cout << *p+1 << endl; cout << *(p+1) << endl; cout << *(p+2) << endl; cout << *(p+3) << endl; cout << *(p+4) << endl; apap 4 bytes } #$&@ 5 60 700 8000 #$&@ FFFFA080 FFFFA084 5 6 60 700 8000 #$&@ 1 1 2 2

18 2/17/2016IT 27918 Dynamic arrays, resizable arrays p = new int[3]; for (int i=0; i<3; i++) p[i] = i; 4 apaapa 1 2 1 2 p = new int[a]; for (int i=0; i<4; i++) p[i] = i*i; int a[3]={5,60,700}; int *p,a=4; 5 60 700 5 60 700 0 1 2 5 60 700 0 1 2 0 1 4 9

19 2/17/2016IT 27919 Create and Delete Dynamic arrays int a[3]={5,60,700}; int *p,a=4; p = new int[3]; for (int i=0; i<3; i++) p[i] = i; delete [] p; p = new int[4]; for (int i=0; i<4; i++) p[i] = i*i; a 1 1 3 5 60 700 p a 4 0 1 2 3 0 1 4 9

20 2/17/2016IT 27920 Forget to Delete Dynamic arrays int a[3]={5,60,700}; int *p,i; p = new int[3]; for (i=0; i<3; i++) p[i] = i; // delete [] p; p = new int[4]; for (i=0; i<4; i++) p[i] = i*i; a 1 1 3 5 60 700 p i 4 0 1 2 3 0 1 4 9

21 2/17/2016IT 27921 An array  pointers int a[4]={0,1,4,9} int *p; p = new int[3]; for (i=0; i<=3; i++) { p[i] = i; *(p+i) *= 2; } // a[4] = 16; *a = a[0]*a[0]; *(a+1) = a[1]*a[1]; *(a+2) = a[2]*a[2]; *(a+3) = a[3]*a[3]; //*(a+4) = a[4]*a[4]; apap 0 1 4 9 0 2 4 6 X 0 1 16 81 X

22 2/17/2016IT 27922 Arrays  Pointers int *a[4]; int **p; a[1] = new int[2]; a[2] = new int[3]; a[3] = new int[3]; p = new int*[3]; p[2] = new int[2]; p[2][0]=5; p[2][1]=7; apap 22 a[0] a[1] a[2] a[3] p[0] p[1] p[2] 5 7 1 1 3 3 4 4 55 7 6 7 6

23 2/17/2016IT 27923 Call by value double fun(int n, double p) { for (int i=0; i < 2; i++) p = p-n; return p; } npinpi int main() { int i=1,k=4; double p, s=123.4; p = fun(i+k,s); cout << i << “\n“ << k << “\n“ << p << “\n“ << s; } 1 4 113.4 123.4 1 4 ikpsikps 1+4=5 123.4 118.4 113.4 1 2 5 123.4 0 113.4

24 2/17/2016IT 27924 Call by reference double fun(int n, double & p) { for (int i=0;i < 2;i++) p = p-n; return p; } npinpi int main() { int i=1,k=4; double p, s=123.4; p = fun(i+k,s); cout << i << “\n“ << k << “\n“ << p << “\n“ << s; } 1 4 113.4 1 1 4 123.4 ikpsikps &s 1+4=5 2 118.4 113.4 5 0

25 2/17/2016IT 27925 Call by Value vs. Call by Reference int add_one_V(int n) { n++; cout << “1:“ << n << endl; return n; } 5 n int main() { int a,b=5; a = add_one_V(b); cout << “2:“ << a << “ “ << b << endl; a = sub_one_R(b); cout << “3:“ << a << “ “ << b << endl; } 1:6 2:6 5 3:4 4 abab int sub_one_R(int & n) { n--; return n; } n 6 5 2 4 &b 6 1 1 2 4 3 3

26 2/17/2016IT 27926 Passing Arrays as Parameters int top(int a[]) { int i=0; return a[i]; } 0 aiai int main() { int a[4]={10,200,300,400}; cout << top(a) << endl; cout << third(a) << endl; } 10 200 300 400 a int third(int a[]) { int i=2; return a[i]; } 2 aiai 10 300 a+2

27 2/17/2016IT 27927 Arrays passed as References void fun(int a[]) { int i=2; a[i] += 5; } 2 aiai int main() { int a[4]={10,200,300,400}; fun(a); cout << a[0] << “ “; cout << a[1] << “ “; cout << a[2] << “ “; cout << a[3] << endl; return 1; } 10 200 300 400 a a[2] 10 200 305 400 305

28 2/17/2016IT 27928 Passing the size of an Array int main() { const int size=4; int a[size]={1,2,3,4}; add_one_to_all(a,size); for (int i=0;i<size;i++) cout << a[i] << “ “; return 1; } 4 0 size i a 1 2 void add_one_to_all(int A[], int size) { for (int i=0;i<size;i++) A[i]++; } 0 4 i A size 1 2 3 4 3 4 1 2 3 4 2 3 4 5 2 3 4 5

29 2/17/2016IT 27929 Vector passed as Value ? (right? wrong?) int main() { vector a(4); int i; for (i=0;i<a.size();i++) a[i]=i+1; add_one_to_all(a); for (i=0;i<a.size();i++) cout << a[i] << “ “; } 0 1 2 3 4 iaia void add_one_to_all(vector v) { for (int i=0;i<v.size();i++) v[i]++; } 0 1 2 3 4 iviv 1 2 3 4 2 3 4 5 1 2 3 4

30 2/17/2016IT 27930 Vector passed as Reference int main() { vector a(4); for (int i=0;i<a.size();i++) a[i]=i+1; add_one_to_all(a); for (int i=0;i<a.size();i++) cout << a[i] << “ “; } 0 1 2 3 4 iaia 1 2 void add_one_to_all(vector & v) { for (int i=0;i<a.size();i++) a[i]++; } 0 iviv 1 2 3 4 3 4 2 3 4 5 2 3 4 5 &a

31 2/17/2016IT 27931 C-string is an array of char char *a = "Dennis"; char b[7] = {'D','e','n', 'n','i','s','\0'}; char *c=b; cout << *a << “ “ << b[0] << endl; cout << *(a+2) << “ “ << b[2] << endl; cout << a << “ “ << b << endl; char *d[2] = {c, "Li"}; cout << d[0] << " " << d[1] << endl;; abcdabcd 4 bytes } D n Dennis Dennis Li } 1 byte ‘D’ ‘e’ ‘n’ ‘i’ ‘s’ 0 ‘L’ ‘i’ 0 1 1 d[0] d[1] ‘D’ ‘e’ ‘n’ ‘i’ ‘s’ 0


Download ppt "2/17/2016IT 2791 Homogeneous aggregate // Using array string name[20]; int mid1[20]; int final[20]; double GPA[20]; name[0] = "Tom"; GPA[2] = 3.21; name:"

Similar presentations


Ads by Google