1 / 24

Engineering Problem Solving With C++ An Object Based Approach

Engineering Problem Solving With C++ An Object Based Approach. Chapter 6 One-Dimensional Arrays. Arrays. An array is a collection of data which shares a common identifier and data type. Individual elements of the array are specified using offsets referred to as subscripts or indices .

owen-brewer
Download Presentation

Engineering Problem Solving With C++ An Object Based Approach

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. Engineering Problem Solving With C++An Object Based Approach Chapter 6 One-Dimensional Arrays

  2. Arrays • An array is a collection of data which shares a common identifier and data type. • Individual elements of the array are specified using offsets referred to as subscripts or indices. • In C++ the offsets or subscripts always start with 0.

  3. Defining Arrays • General form data_type array_identifier[size]; The size of the array may be specified by a defined constant or constant literal. • Example: double m[8]; m[0] m[1] m[2] m[3] m[4] m[5] m[6] m[7]

  4. 'a' 'e' 'i' 'o' 'u' Initializing Arrays • Initializing the array when declared char vowels[5] = {'a', 'e', 'i', 'o', 'u'}; bool ansKey[] ={true, true, false, true, false, false}; char word[] = "Hello"; double rainfall[] = {.25, 0.0, 0.0, .5, .3, 0.0, 0.0} vowels ansKey true true false true false false word 'H' 'e' 'l' 'l' 'o' '\0' rainfall .25 0.0 0.0 .5 .3 0.0 0.0

  5. Accessing Array Elements • Subscripts are used to access individual elements of an array. • General format: array_identifier[index] • Example for (int I=0; I<8; I++) m[I] = double(I) + 0.5; • Subscripts may be any integer expression.

  6. Functions and arrays • An array identifier references the first element of the array. When arrays are passed as arguments to functions, the address of the array is passed, thus by default, arrays are always passed by reference. • Generally we specify additional parameters with the array to provided information regarding the number of elements in the array.

  7. Example #include <iostream> using namespace std; const int maxSize=20; //function prototypes void ReadArray(double a[], int &howMany); int FindMin(const double a[], int howMany); int main( ) { double darr[maxSize]; int cnt, where; ReadArr(darr, cnt); where = FindMin(darr, cnt); cout << "The smallest value in the array is " << darr[where] << endl; }

  8. // This function inputs values into an array until –99 or array // limit reached void ReadArray(double a[], int & howMany) { double temp; howMany = 0; cin >> temp; while ((howMany < maxSize) && (temp != -99)) { a[howMany] = temp; howMany++; cin >> temp; } }

  9. //This function returns the subscript of the minimum value // in an array int FindMin(const double a[], int howMany) { int minElem = 0; for (int I=1; I<howMany; I++) if (a[I] < a[minElem]) minElem = I; return minElem; }

  10. Function overloading • In C++ we can have many functions with the same name provided the function signature is different. • The function signature includes the name of the function and the parameter list.

  11. #include <iostream> using namespace std; int Area (int Side);// Area of Square int Area (int Length, int Width);// Area of Rectangle double Area (double Radius);// Area of Circle const double PI= 3.14159; int main() { cout << "Area of Square:" << Area(10) << endl; cout << "Area of Rect:" << Area(8,12) << endl; cout << "Area of Circle: " << Area(2.5) << endl; return 0; } Example

  12. Overloaded Function Implementations int Area (int Side)// Area of Square { return (Side * Side); } int Area (int Length, int Width)// Area of Rectangle { return (Length * Width); } double Area (double Radius)// Area of Circle { return (PI* Radius * Radius); }

  13. Sorting Algorithms • Sorting algorithms arrange the data into either ascending or descending order, based on the values in the array. • Sorting algorithms to be discussed • Selection sort • Quick sort – covered in Data Structures

  14. Basic Premise of Selection Sort • Find minimum value, place it in the first position. • Find next minimum value, place it in the second position. • Continue doing this until you have placed the second to the largest value in the second to the last position.

  15. Practice! • Fill in the following table to show how the array is sorted into ascending order using the selection sort. arr[0] arr[1] arr[2] arr[3] arr[4] swap min and arr[0] swap min and arr[1] 18 2945 51 36 18 29 36 51 45 18 29 36 4551

  16. Searching Unordered Arrays • Simple Sequential Search • Examine each element starting with the first one, until either a match is found or the end of the list is reached • Can be implemented with a function which returns true if in the list and false if not found • Can be implemented with a function which returns the location of the element if found, or –1 if not found

  17. Searching Ordered Lists • Modified Sequential Search • Stops either when item is found, or when the element examined is past where the item should be in the list. • Binary Search • Examine middle element, if not found determine if item should be in top part or bottom part of list. • Repeat with appropriate sublist, until sublist is empty.

  18. 37 43 Example of Binary Search for 48 5 11 14 22 28 37 43 56 59 70 arr[0] arr[mid] arr[9] 37 43 56 59 70 mid is 7 arr[5] arr[mid] arr[9] mid is 5 arr[5] arr[6] mid is 6 43 arr[6]

  19. Character Strings • C style strings • array of characters terminated by \0 character • remember when declaring the character array to add an extra space to the array for '\0' • literal string constants are enclosed in double quote marks, "a string" • file names when using file I/O must be C style strings.

  20. Input and strings • >> uses whitespace (' ', '\t', '\n') to determine the beginning and end of data • whitespace characters can not be read using >>, to read strings with embedded whitespace use getline() char phrase[30]; getline(phrase, 30); • peek() returns the next character in a stream without removing it from the stream

  21. C++ functions for C style strings #include <iostream> #include <cstring> uses namespace std; int main() { char str1[30]="John", str2[30]="Johnson"; char phrase[20]="'s shirt was green", sentence[30]; if (strcmp(str1,str2) < -1) strcpy (sentence, str1); // puts "John" into sentence else strcpy (sentence,str2); // puts "Johnson into sentence strcat(sentence, phrase); cout << "Sentence is: " << sentence << endl; return 0; }

  22. The string class • include <string> • declaring string objects string word="Engineering"; string word2; • string member functions • size( ) • empty( ) • substr (int start, int len) • c_str()

  23. Overloaded operators for string class • relational operators < > == <= >= • concatenation + += • assignment =

  24. Example Using string Class #include <iostream> #include <string> uses namespace std; int main() { string str1="John", str2="Johnson"; string phrase = "'s shirt was green", sentence; if (str1 < str2) sentence = str1; // puts "John" into sentence else sentence = str2; // puts "Johnson into sentence sentence += phrase; cout << "Sentence is: " << sentence << endl; return 0; }

More Related