EX3 Code Review. Instructor: Tsung-Che Chiang

Size: px
Start display at page:

Download "EX3 Code Review. Instructor: Tsung-Che Chiang"

Transcription

1 EX3 Code Review Instructor: Tsung-Che Chiang Department of Computer Science and Information Engineering National Taiwan Normal University The Practice of Programming, Fall, 2010

2 Exercise Write a classstring to simulatestd::string. class String public: // 1. default constructor // 2. copy constructor // 3. constructor with one parameter with type const char * // 4. destructor // 5. size() // 6. c_str() // 7. copy assignment // 8. operator [] // 9. operator += private: char *str_; ; // A. operator < // B. operator << 2

3 String(const char *) String::String(const char *from) ptr = (char*) malloc(strlen(from)+1); strcpy(ptr, from); ptr[strlen(from)] = '\0'; redundant String::String(const char* s) str_ = new char[ strlen(s + 1) ]; for( int i=0; i<strlen(s); i++ ) str_[i] = s[i]; str_[strlen(s)] = '\0'; wrong size

4 String(const char *) String::String(const char *ptr) int length = 0; while(ptr[length]!= '\0') length++; length++; str_ = new char[length]; for(int i = 0; i < length;i++) str_[i] = ptr[i]; Use library to save your time.

5 String & operator = (const String &) String & operator = ( const String &assign ) str_ = new char[strlen(assign.str_)+1]; strcpy( str_, assign.str_ ); memory leak return? String & String:: operator =(const String &rhs ) if( this == &rhs ) return *this ; delete str_; use delete [] this-> str_ = rhs.str_; return *this ; double pointers to same location

6 String & operator = (const String &) String & String::operator = (const String &rhs) if(this == &rhs) return *this; delete [] this->str_; int rhs_length = rhs.size(); this->str_ = new char[rhs_length+1]; //strcpy(this->str_, rhs.c_str()); memcpy(this->str_, rhs.c_str(), rhs_length+1); delete too early why memcpy for strcpy? return *this;

7 String & operator = (const String &) String String::operator=(const char * input) size_t newsize=strlen(input); if(size_!=newsize) delete [] str; size_=newsize; str=new char[size_+1]; strcpy(str,input); return *this; delete too early Copy-and-swap is still applicable. String& String::operator= (const String &rhs) strcpy(str, rhs.str); return *this; enough space?

8 String & operator += (const String &) String & operator += (const String & tail) char *temp = (char *)malloc(sizeof(char)*strlen(str_)+1); strcpy(temp, str_); free(str_); redundant str_=(char*)malloc(sizeof(char)*strlen(temp)+ sizeof(char)*strlen(tail.str_)+1); strcpy(str_, temp); strcat(str_, tail.str_); free(temp); return *this; ; String & String::operator += ( const String &tail) String temp( str_); str_ = new char [strlen(str_)+strlen(tail.str_)+1]; strcpy( str_, temp.str_); strcat( str_, tail.str_); memory leak return? 8

9 String & operator += (const String &) String & String::operator += (const String &tail) char *temp = new char[strlen(str_) + 1]; strcpy (temp, str_); delete []str_; redundant str_ = new char[strlen(temp) + strlen(tail.str_) + 1]; strcpy (str_, temp); strcat (str_, tail.str_); delete []temp; return *this; String & operator += ( const String &tail ) strcat( str_, tail.str_ ); enough space? return?

10 String & operator += (const String &) String & operator +=(const String &tail) char * temp=new char[strlen(str_)+1]; temp=str_; str_=new char[strlen(str_)+strlen(tail.str_)+1]; strcat(strcpy(str_,temp),tail.str_); delete temp; delete [] String & operator +=(const String &tail) int totallen=strlen(str_)+strlen(tail.str_); char *newstr; newstr =new char[totallen + 1]; memset(newstr,'\0',totallen + 1); strcat(newstr,(*this).str_); strcat(newstr,tail.str_); str_=newstr; return (*this); memory leak return? initialization memory leak

11 String & operator += (const String &) String &String::operator += (const String &tail) char * str = new char[ strlen(tail.str_) + strlen( str_ ) + 1 ]; strcpy( str, str_ ); strcat( str, tail.str_ ); str[ strlen(tail.str_) + strlen( str_ ) ] = '\0'; delete [] str_; str_ = str; return *this; redundant

12 String & operator += (const String &) String& String::operator += (const String &from) char *ans = (char*) malloc( this->size() + from.size() + 1 ); ans = strcpy(ans, ptr); ans = strcat(ans, from.ptr); String anst(ans); free(ans); String::swap(&anst, this); redundant return *this;

13 String & operator += (const String &) char & String::operator+=( const String & tial) size_=size_+tial.size(); char* temp=new char[size_+1]; temp[0]='\0'; strcat(temp,str); strcat(temp,tial.c_str()); delete[] str; str=temp; return *str;

14 bool operator < (const String &, const String &) bool operator < (const String & lhs, const String &rhs) //strcmp if(strcmp(lhs.c_str(), rhs.c_str())==-1) return true; else return false; not following the standard bool operator < ( const String &lhs, const String &rhs) if( strcmp( lhs.c_str(), rhs.c_str()) < 0) return true; else return false; redundant

15 bool operator < (const String &, const String &) bool operator < (const String &lhs, const String &rhs) for(int i=0;i<lhs.size()&&i<rhs.size();i++) if(lhs[i]==rhs[i]) continue; if(lhs[i] < rhs[i]) return true; else return false; if(lhs.size() < rhs.size()) return true; else return false; Library is better than your handmade codes.

16 bool operator < (const String &, const String &) bool operator < (const String &a, const String &b) int al = a.size(); What if a and b are the same? for(int i = 0; i <= al; i++) if(a[i] < b[i]) return true; if(a[i] > b[i]) return false; Library is better than your handmade codes. bool operator< ( const String & lhs, const String & rhs) if(strcmp(lhs.c_str(),rhs.c_str())<0) return true; Else?

17 bool operator < (const String &, const String &) bool operator < (const String &lhs, const String &rhs) return ((strcmp (lhs.c_str(), rhs.c_str()) < 0)? true : false); redundant bool operator < (const String& lhs, const String& rhs) return strcmp(lhs.c_str(), rhs.c_str()) == -1; bool operator < (const String &left, const String &right) return(left.size() < right.size()); non-standard unusual

18 Misc istream &operator>>( istream & input, String &data) char temp[100]; input >> temp; data=temp; return input; char String::operator [] (int index) const if (index < strlen(str_)) return str_[index]; Else?

19 Misc Const-ness int size() return strlen( str_); char *c_str()const return str_; Incomplete implementation void String::swap(String & input) char * tempptr=str; str = input.str; input.str=tempptr; size_t tempsize=size_; size_=input.size_;

20 Organization bool operator <(const String &lhs,const String &rhs) return strcmp ( lhs.c_str(), rhs.c_str() )<0; ostream& operator <<(ostream &output, const String &rhs) output <<rhs.c_str()<<endl; return output; Do not put non-inline functions in.h. Remember to add #include guard.

21 Exercise #ifndef NTNU_MYSTRING #define NTNU_MYSTRING MyString.h #include <iosfwd> class String public: String(); String(const String &rhs); String & operator= (const String &rhs); String(const char *rhs); ~String(); unsigned int size() const; const char *c_str() const; char operator[] (int index) const; char & operator[] (int index); String & operator += (const String &tail); void swap(string &rhs); private: char *str_; ; bool operator < (const String &lhs, const String &rhs); std::ostream & operator << (std::ostream &os, const String &rhs); #endif

22 Exercise #include "MyString.h" #include <iostream> #include <algorithm> #include <cstring> using std::ostream; MyString.cpp (1/3) String::String() str_ = new char [1]; str_[0] = '\0'; // String::String(const String &rhs) str_ = new char[sizeof(rhs.str_)+1]; strcpy(str_, rhs.str_); // String::String(const char *rhs) str_ = new char[sizeof(rhs)+1]; strcpy(str_, rhs); // String::~String() delete [] str_;

23 Exercise unsigned int String::size() const MyString.cpp (2/3) return strlen(str_); // a lazy and inefficient implementation // const char * String::c_str() const return str_; // void String::swap(String &rhs) std::swap(str_, rhs.str_); // String & String::operator= (const String &rhs) String temp(rhs); swap(temp); return *this; //

24 Exercise char String::operator[] (int index) const return str_[index]; // note. I do not check the boundary. // char & String::operator[] (int index) return str_[index]; // note. I do not check the boundary. // String & String::operator += (const String &tail) char *old = str_; str_ = new char [strlen(str_)+strlen(tail.str_)+1]; strcat(strcpy(str_, old), tail.str_); delete [] old; return *this; // bool operator < (const String &lhs, const String &rhs) return strcmp(lhs.c_str(), rhs.c_str()) < 0; // ostream & operator << (ostream &os, const String &rhs) os << rhs.c_str(); return os; MyString.cpp (3/3)

25 Exercise #include <cstdlib> #include <iostream> #include "MyString.h" main.cpp (1/2) using namespace std; void readonly(const String &s) cout << s[0] << endl; // s[0] = 'b'; // compilation error int main(int argc, char *argv[]) String empty, ntnu("ntnu"), ntnu2(ntnu); cout << empty << ' ' << ntnu << ' ' << ntnu2 << endl; empty = ntnu; // copy assignment cout << empty << endl; // << operator char cstr[] = "aab"; ntnu = "aaa"; ntnu2 = cstr; // conversion + copy assignment // conversion + copy assignment

26 Exercise int main() //... main.cpp (2/2) if (ntnu < ntnu2) // operator < cout << "aaa < aab" << endl; readonly(ntnu); // operator [] const ntnu[0] = 'd'; // operator [] cout << ntnu << endl; (ntnu += ntnu2) += " haha"; // operator += cout << ntnu << endl; system("pause"); return 0;

Linked List using a Sentinel

Linked List using a Sentinel Linked List using a Sentinel Linked List.h / Linked List.h Using a sentinel for search Created by Enoch Hwang on 2/1/10. Copyright 2010 La Sierra University. All rights reserved. / #include

More information

Operator Overloading

Operator Overloading Operator Overloading Introduction Operator overloading Enabling C++ s operators to work with class objects Using traditional operators with user-defined objects Requires great care; when overloading is

More information

Introduction. W8.2 Operator Overloading

Introduction. W8.2 Operator Overloading W8.2 Operator Overloading Fundamentals of Operator Overloading Restrictions on Operator Overloading Operator Functions as Class Members vs. as friend Functions Overloading Stream Insertion and Extraction

More information

CS 115 Exam 3, Spring 2010

CS 115 Exam 3, Spring 2010 Your name: Rules You must briefly explain your answers to receive partial credit. When a snippet of code is given to you, you can assume o that the code is enclosed within some function, even if no function

More information

W8.2 Operator Overloading

W8.2 Operator Overloading 1 W8.2 Operator Overloading Fundamentals of Operator Overloading Restrictions on Operator Overloading Operator Functions as Class Members vs. as friend Functions Overloading Stream Insertion and Extraction

More information

Due Date: See Blackboard

Due Date: See Blackboard Source File: ~/2315/45/lab45.(C CPP cpp c++ cc cxx cp) Input: under control of main function Output: under control of main function Value: 4 Integer data is usually represented in a single word on a computer.

More information

Note 11/13/2014. They are like those i s, j s, and temp s that appear and disappear when the function starts and finishes...

Note 11/13/2014. They are like those i s, j s, and temp s that appear and disappear when the function starts and finishes... CISC 2000 Computer Science II Fall, 2014 Note 11/13/2014 1 Review of operator overloading (a) Lab class: take-away ############################ # Pass-by-value parameters # ############################

More information

Dynamic arrays / C Strings

Dynamic arrays / C Strings Dynamic arrays / C Strings Dynamic arrays syntax why use C strings Ex: command line arguments Call-by-pointer Dynamic Arrays / C Strings [Bono] 1 Announcements Final exam: Tue, 5/8, 8 10 am SGM 124 and

More information

C-String Library Functions

C-String Library Functions Strings Class 34 C-String Library Functions there are several useful functions in the cstring library strlen: the number of characters before the \0 strncat: concatenate two strings together strncpy: overwrite

More information

Operator Overloading

Operator Overloading Operator Overloading Introduction Operator overloading Enabling C++ s operators to work with class objects Using traditional operators with user-defined objects Requires great care; when overloading is

More information

Fast Introduction to Object Oriented Programming and C++

Fast Introduction to Object Oriented Programming and C++ Fast Introduction to Object Oriented Programming and C++ Daniel G. Aliaga Note: a compilation of slides from Jacques de Wet, Ohio State University, Chad Willwerth, and Daniel Aliaga. Outline Programming

More information

CSCE 110 PROGRAMMING FUNDAMENTALS

CSCE 110 PROGRAMMING FUNDAMENTALS CSCE 110 PROGRAMMING FUNDAMENTALS WITH C++ Prof. Amr Goneid AUC Part 15. Dictionaries (1): A Key Table Class Prof. amr Goneid, AUC 1 Dictionaries(1): A Key Table Class Prof. Amr Goneid, AUC 2 A Key Table

More information

Strings and Stream I/O

Strings and Stream I/O Strings and Stream I/O C Strings In addition to the string class, C++ also supports old-style C strings In C, strings are stored as null-terminated character arrays str1 char * str1 = "What is your name?

More information

Engineering Problem Solving with C++, Etter

Engineering Problem Solving with C++, Etter Engineering Problem Solving with C++, Etter Chapter 6 Strings 11-30-12 1 One Dimensional Arrays Character Strings The string Class. 2 C style strings functions defined in cstring CHARACTER STRINGS 3 C

More information

Lab 2: ADT Design & Implementation

Lab 2: ADT Design & Implementation Lab 2: ADT Design & Implementation By Dr. Yingwu Zhu, Seattle University 1. Goals In this lab, you are required to use a dynamic array to design and implement an ADT SortedList that maintains a sorted

More information

Program template-smart-pointers-again.cc

Program template-smart-pointers-again.cc 1 // Illustrate the smart pointer approach using Templates 2 // George F. Riley, Georgia Tech, Spring 2012 3 // This is nearly identical to the earlier handout on smart pointers 4 // but uses a different

More information

CS 222: Pointers and Manual Memory Management

CS 222: Pointers and Manual Memory Management CS 222: Pointers and Manual Memory Management Chris Kauffman Week 4-1 Logistics Reading Ch 8 (pointers) Review 6-7 as well Exam 1 Back Today Get it in class or during office hours later HW 3 due tonight

More information

Object Oriented Programming COP3330 / CGS5409

Object Oriented Programming COP3330 / CGS5409 Object Oriented Programming COP3330 / CGS5409 Multiple Inheritance Template Classes and Functions Inheritance is supported by most object oriented languages C++ allows a special kind of inheritance known

More information

Set Implementation Version 1

Set Implementation Version 1 Introduction to System Programming 234122 Set Implementation Version 1 Masha Nikolski, CS Department, Technion 1 // Version 1.0 2 // Header file for set class. 3 // In this implementation set is a container

More information

CSE 303, Autumn 2006, Final Examination 12 December 2006

CSE 303, Autumn 2006, Final Examination 12 December 2006 CSE 303, Autumn 2006, Final Examination 12 December 2006 Solutions Please do not turn the page until everyone is ready. Rules: The exam is closed-book, closed-note, except for one two-sided 8.5"x11" piece

More information

Object oriented programming

Object oriented programming Exercises 12 Version 1.0, 9 May, 2017 Table of Contents 1. Virtual destructor and example problems...................................... 1 1.1. Virtual destructor.......................................................

More information

Data Structures and Algorithms(4)

Data Structures and Algorithms(4) Ming Zhang Data Structures and Algorithms Data Structures and Algorithms(4) Instructor: Ming Zhang Textbook Authors: Ming Zhang, Tengjiao Wang and Haiyan Zhao Higher Education Press, 2008.6 (the "Eleventh

More information

CS 115 Final Review Quiz

CS 115 Final Review Quiz CS115FinalReviewQuiz December11,2008 Rules ReferencematerialontheSTLclassesandalgorithms,aswellasfunctions thatoperateonc strings,isincludedattheendofthisdocument. Youmustbrieflyexplainyouranswerstoreceivepartialcredit.

More information

Review Questions for Final Exam

Review Questions for Final Exam CS 102 / ECE 206 Spring 11 Review Questions for Final Exam The following review questions are similar to the kinds of questions you will be expected to answer on the Final Exam, which will cover LCR, chs.

More information

Review Questions for Final Exam KEY

Review Questions for Final Exam KEY CS 102 / ECE 206 Spring 11 Review Questions for Final Exam KEY The following review questions are similar to the kinds of questions you will be expected to answer on the Final Exam, which will cover LCR,

More information

Construction, Destruction, and Assignment

Construction, Destruction, and Assignment Construction, Destruction, and Assignment Instructor: Tsung-Che Chiang tcchiang@ieee.org Department of Computer Science and Information Engineering National Taiwan Normal University The Practice of Programming,

More information

typedef Labeling<unsigned char,short> LabelingBS; typedef Labeling<unsigned char,short>::regioninfo RegionInfoBS;

typedef Labeling<unsigned char,short> LabelingBS; typedef Labeling<unsigned char,short>::regioninfo RegionInfoBS; 2005 7 19 1 ( ) Labeling 2 C++ STL(Standard Template Library) g++ (GCC) 3.3.2 3 3.1 Labeling SrcT DstT SrcT: unsigned char, shoft DstT: short typedef 1. unsigned char, short typedef Labeling

More information

Pointers, Dynamic Data, and Reference Types

Pointers, Dynamic Data, and Reference Types Pointers, Dynamic Data, and Reference Types Review on Pointers Reference Variables Dynamic Memory Allocation The new operator The delete operator Dynamic Memory Allocation for Arrays 1 C++ Data Types simple

More information

Chapter 10 - Notes Applications of Arrays

Chapter 10 - Notes Applications of Arrays Chapter - Notes Applications of Arrays I. List Processing A. Definition: List - A set of values of the same data type. B. Lists and Arrays 1. A convenient way to store a list is in an array, probably a

More information

Advanced Systems Programming

Advanced Systems Programming Advanced Systems Programming Introduction to C++ Martin Küttler September 19, 2017 1 / 18 About this presentation This presentation is not about learning programming or every C++ feature. It is a short

More information

! A C-string is a sequence of characters stored in consecutive memory locations and terminated by a null character ( \0').

! A C-string is a sequence of characters stored in consecutive memory locations and terminated by a null character ( \0'). C-Strings! Problem: A direct-mail advertising agency has decided to personalize its sweepstakes offers. It has prepared a basic letter with a particular customer's name. address, spouse's name, and other

More information

การทดลองท 8_2 Editor Buffer Array Implementation

การทดลองท 8_2 Editor Buffer Array Implementation การทดลองท 8_2 Editor Buffer Array Implementation * File: buffer.h * -------------- * This file defines the interface for the EditorBuffer class. #ifndef _buffer_h #define _buffer_h * Class: EditorBuffer

More information

Characters, c-strings, and the string Class. CS 1: Problem Solving & Program Design Using C++

Characters, c-strings, and the string Class. CS 1: Problem Solving & Program Design Using C++ Characters, c-strings, and the string Class CS 1: Problem Solving & Program Design Using C++ Objectives Perform character checks and conversions Knock down the C-string fundamentals Point at pointers and

More information

Lecture 8: Object-Oriented Programming (OOP) EE3490E: Programming S1 2017/2018 Dr. Đào Trung Kiên Hanoi Univ. of Science and Technology

Lecture 8: Object-Oriented Programming (OOP) EE3490E: Programming S1 2017/2018 Dr. Đào Trung Kiên Hanoi Univ. of Science and Technology Lecture 8: Object-Oriented Programming (OOP) 1 Introduction to C++ 2 Overview Additional features compared to C: Object-oriented programming (OOP) Generic programming (template) Many other small changes

More information

Intermediate Programming, Spring 2017*

Intermediate Programming, Spring 2017* 600.120 Intermediate Programming, Spring 2017* Misha Kazhdan *Much of the code in these examples is not commented because it would otherwise not fit on the slides. This is bad coding practice in general

More information

Operator Overloading in C++ Systems Programming

Operator Overloading in C++ Systems Programming Operator Overloading in C++ Systems Programming Operator Overloading Fundamentals of Operator Overloading Restrictions on Operator Overloading Operator Functions as Class Members vs. Global Functions Overloading

More information

Common Misunderstandings from Exam 1 Material

Common Misunderstandings from Exam 1 Material Common Misunderstandings from Exam 1 Material Kyle Dewey Stack and Heap Allocation with Pointers char c = c ; char* p1 = malloc(sizeof(char)); char** p2 = &p1; Where is c allocated? Where is p1 itself

More information

Lecture Notes CPSC 224 (Spring 2012) Today... Java basics. S. Bowers 1 of 8

Lecture Notes CPSC 224 (Spring 2012) Today... Java basics. S. Bowers 1 of 8 Today... Java basics S. Bowers 1 of 8 Java main method (cont.) In Java, main looks like this: public class HelloWorld { public static void main(string[] args) { System.out.println("Hello World!"); Q: How

More information

Chapter 18 - C++ Operator Overloading

Chapter 18 - C++ Operator Overloading Chapter 18 - C++ Operator Overloading Outline 18.1 Introduction 18.2 Fundamentals of Operator Overloading 18.3 Restrictions on Operator Overloading 18.4 Operator Functions as Class Members vs. as friend

More information

Program template-smart-pointers.cc

Program template-smart-pointers.cc 1 // Illustrate the smart pointer approach using Templates 2 // George F. Riley, Georgia Tech, Spring 2012 3 4 #include 5 #include 6 7 using namespace std; 8 9 // The Ptr class contains

More information

Spring 2008 Data Structures (CS301) LAB

Spring 2008 Data Structures (CS301) LAB Spring 2008 Data Structures (CS301) LAB Objectives The objectives of this LAB are, o Enabling students to implement Singly Linked List practically using c++ and adding more functionality in it. o Enabling

More information

COMS W3101 Programming Language: C++ (Fall 2015) Ramana Isukapalli

COMS W3101 Programming Language: C++ (Fall 2015) Ramana Isukapalli COMS W3101 Programming Language: C++ (Fall 2015) ramana@cs.columbia.edu Lecture-2 Overview of C continued C character arrays Functions Structures Pointers C++ string class C++ Design, difference with C

More information

Due Date: See Blackboard

Due Date: See Blackboard Source File: ~/2305/lab06.(C CPP cpp c++ cc cxx cp) Input: Under control of main function Output: Under control of main function Value: 2 Extend the IntegerSet class from Lab 04 to provide the following

More information

Review: C++ Basic Concepts. Dr. Yingwu Zhu

Review: C++ Basic Concepts. Dr. Yingwu Zhu Review: C++ Basic Concepts Dr. Yingwu Zhu Outline C++ class declaration Constructor Overloading functions Overloading operators Destructor Redundant declaration A Real-World Example Question #1: How to

More information

Pointers and Arrays CS 201. This slide set covers pointers and arrays in C++. You should read Chapter 8 from your Deitel & Deitel book.

Pointers and Arrays CS 201. This slide set covers pointers and arrays in C++. You should read Chapter 8 from your Deitel & Deitel book. Pointers and Arrays CS 201 This slide set covers pointers and arrays in C++. You should read Chapter 8 from your Deitel & Deitel book. Pointers Powerful but difficult to master Used to simulate pass-by-reference

More information

Classes in C++98 and C++11

Classes in C++98 and C++11 Classes in C++98 and C++11 January 10, 2018 Brian A. Malloy Slide 1 of 38 1. When we refer to C++98, we are referring to C++98 and C++03, since they differ only slightly. C++98 contained 3 types of constructors,

More information

pointers & references

pointers & references pointers & references 1-22-2013 Inline Functions References & Pointers Arrays & Vectors HW#1 posted due: today Quiz Thursday, 1/24 // point.h #ifndef POINT_H_ #define POINT_H_ #include using

More information

Object oriented programming

Object oriented programming Exercises 7 Version 1.0, 11 April, 2017 Table of Contents 1. Inheritance.................................................................. 1 1.1. Tennis Player...........................................................

More information

OBJECT ORIENTED PROGRAMMING USING C++

OBJECT ORIENTED PROGRAMMING USING C++ OBJECT ORIENTED PROGRAMMING USING C++ Overview of C++ Overloading Overloading occurs when the same operator or function name is used with different signatures Both operators and functions can be overloaded

More information

COMS W3101 Programming Language: C++ (Fall 2015) Ramana Isukapalli

COMS W3101 Programming Language: C++ (Fall 2015) Ramana Isukapalli COMS W3101 Programming Language: C++ (Fall 2015) ramana@cs.columbia.edu Lecture-2 Overview of C continued C character arrays Functions Structures Pointers C++ string class C++ Design, difference with C

More information

#include <iostream> #include <algorithm> #include <cmath> using namespace std; int f1(int x, int y) { return (double)(x/y); }

#include <iostream> #include <algorithm> #include <cmath> using namespace std; int f1(int x, int y) { return (double)(x/y); } 1. (9 pts) Show what will be output by the cout s in this program. As in normal program execution, any update to a variable should affect the next statement. (Note: boolalpha simply causes Booleans to

More information

Agenda. The main body and cout. Fundamental data types. Declarations and definitions. Control structures

Agenda. The main body and cout. Fundamental data types. Declarations and definitions. Control structures The main body and cout Agenda 1 Fundamental data types Declarations and definitions Control structures References, pass-by-value vs pass-by-references Memory regions 2 EACH C++ VARIABLE IS STORED IN A

More information

G52CPP C++ Programming Lecture 13

G52CPP C++ Programming Lecture 13 G52CPP C++ Programming Lecture 13 Dr Jason Atkin http://www.cs.nott.ac.uk/~jaa/cpp/ g52cpp.html 1 Last lecture Function pointers Arrays of function pointers Virtual and non-virtual functions vtable and

More information

Chapter 2. Procedural Programming

Chapter 2. Procedural Programming Chapter 2 Procedural Programming 2: Preview Basic concepts that are similar in both Java and C++, including: standard data types control structures I/O functions Dynamic memory management, and some basic

More information

Name. CPTR246 Spring '17 (100 total points) Exam 2

Name. CPTR246 Spring '17 (100 total points) Exam 2 Name CPTR246 Spring '17 (100 total points) Exam 2 1. Pointer parameters (the old C way) In the following program, make all of the changes to convert the call-by-reference parameters in the function computeoptions

More information

G52CPP C++ Programming Lecture 14. Dr Jason Atkin

G52CPP C++ Programming Lecture 14. Dr Jason Atkin G52CPP C++ Programming Lecture 14 Dr Jason Atkin 1 Last Lecture Automatically created methods: A default constructor so that objects can be created without defining a constructor A copy constructor used

More information

Object oriented programming

Object oriented programming Exercises 4 Version 1.0, 16 March, 2017 Table of Contents 1. Friend functions, dynamic memory allocation.................................. 1 1.1. Example 1..............................................................

More information

CMSC 202 Midterm Exam 1 Fall 2015

CMSC 202 Midterm Exam 1 Fall 2015 1. (15 points) There are six logic or syntax errors in the following program; find five of them. Circle each of the five errors you find and write the line number and correction in the space provided below.

More information

UEE1303(1070) S 12 Object-Oriented Programming in C++

UEE1303(1070) S 12 Object-Oriented Programming in C++ Computational Intelligence on Automation Lab @ NCTU UEE1303(1070) S 12 Object-Oriented Programming in C++ Lecture 01: C/C++ Overview and OOP by Example Learning Objectives You should be able to review/understand:

More information

Unified Modeling Language a case study

Unified Modeling Language a case study Unified Modeling Language a case study 1 an online phone book use case diagram encapsulating a file 2 Command Line Arguments arguments of main arrays of strings 3 Class Definition the filesphonebook.h

More information

Data Structures and Algorithms

Data Structures and Algorithms Data Structures and Algorithms First Semester 2017/2018 Linked Lists Eng. Anis Nazer Linked List ADT Is a list of nodes Each node has: data (can be any thing, int, char, Person, Point, day,...) link to

More information

Distributed Real-Time Control Systems. Lecture 17 C++ Programming Intro to C++ Objects and Classes

Distributed Real-Time Control Systems. Lecture 17 C++ Programming Intro to C++ Objects and Classes Distributed Real-Time Control Systems Lecture 17 C++ Programming Intro to C++ Objects and Classes 1 Bibliography Classical References Covers C++ 11 2 What is C++? A computer language with object oriented

More information

Due Date: See Blackboard

Due Date: See Blackboard Source File: ~/2315/11/lab11.(C CPP cpp c++ cc cxx cp) Input: Under control of main function Output: Under control of main function Value: 1 The purpose of this assignment is to become more familiar with

More information

EECE.3220: Data Structures Spring 2017

EECE.3220: Data Structures Spring 2017 EECE.3220: Data Structures Spring 2017 Lecture 14: Key Questions February 24, 2017 1. Describe the characteristics of an ADT to store a list. 2. What data members would be necessary for a static array-based

More information

Reference Parameters A reference parameter is an alias for its corresponding argument in the function call. Use the ampersand (&) to indicate that

Reference Parameters A reference parameter is an alias for its corresponding argument in the function call. Use the ampersand (&) to indicate that Reference Parameters There are two ways to pass arguments to functions: pass-by-value and pass-by-reference. pass-by-value A copy of the argument s value is made and passed to the called function. Changes

More information

CSS 342 Data Structures, Algorithms, and Discrete Mathematics I. Lecture 2. Yusuf Pisan

CSS 342 Data Structures, Algorithms, and Discrete Mathematics I. Lecture 2. Yusuf Pisan CSS 342 Data Structures, Algorithms, and Discrete Mathematics I Lecture 2 Yusuf Pisan Compiled helloworld yet? Overview C++ fundamentals Assignment-1 CSS Linux Cluster - submitting assignment Call by Value,

More information

Assignment 2 Solution

Assignment 2 Solution Assignment 2 Solution Date.h #ifndef DATE_H #define DATE_H #include class Date time_t date; public: Date(); Date(const Date&) = default; Date(time_t); // Date in time_t format Date(const char*);

More information

std::string Quick Reference Card Last Revised: August 18, 2013 Copyright 2013 by Peter Chapin

std::string Quick Reference Card Last Revised: August 18, 2013 Copyright 2013 by Peter Chapin std::string Quick Reference Card Last Revised: August 18, 2013 Copyright 2013 by Peter Chapin Permission is granted to copy and distribute freely, for any purpose, provided the copyright notice above is

More information

Due Date: See Blackboard

Due Date: See Blackboard Source File: ~/2315/06/lab06.(C CPP cpp c++ cc cxx cp) Input: Under control of main function Output: Under control of main function Value: 2 Extend the IntegerSet class from Lab 04 to provide the following

More information

CS 211 Winter 2004 Sample Final Exam (Solutions)

CS 211 Winter 2004 Sample Final Exam (Solutions) CS 211 Winter 2004 Sample Final Exam (Solutions) Instructor: Brian Dennis, Assistant Professor TAs: Tom Lechner, Rachel Goldsborough, Bin Lin March 16, 2004 Your Name: There are 6 problems on this exam.

More information

CS 115 Exam 3, Fall 2009

CS 115 Exam 3, Fall 2009 CS115Exam3,Fall2009 Yourname: Rules Youmustbrieflyexplainyouranswerstoreceivepartialcredit. Whenasnippetofcodeisgiventoyou,youcanassume o thatthecodeisenclosedwithinsomefunction,evenifnofunction definitionisshown

More information

G52CPP C++ Programming Lecture 17

G52CPP C++ Programming Lecture 17 G52CPP C++ Programming Lecture 17 Dr Jason Atkin http://www.cs.nott.ac.uk/~jaa/cpp/ g52cpp.html 1 Last Lecture Exceptions How to throw (return) different error values as exceptions And catch the exceptions

More information

Constructors & Destructors

Constructors & Destructors Constructors & Destructors Constructor It is a member function which initializes a class. A constructor has: (i) the same name as the class itself (ii) no return type class rectangle private: float height;

More information

Agenda. The main body and cout. Fundamental data types. Declarations and definitions. Control structures

Agenda. The main body and cout. Fundamental data types. Declarations and definitions. Control structures The main body and cout Agenda 1 Fundamental data types Declarations and definitions Control structures References, pass-by-value vs pass-by-references The main body and cout 2 C++ IS AN OO EXTENSION OF

More information

Homework 5. Yuji Shimojo CMSC 330. Instructor: Prof. Reginald Y. Haseltine

Homework 5. Yuji Shimojo CMSC 330. Instructor: Prof. Reginald Y. Haseltine Homework 5 Yuji Shimojo CMSC 330 Instructor: Prof. Reginald Y. Haseltine July 13, 2013 Question 1 Consider the following Java definition of a mutable string class. class MutableString private char[] chars

More information

Intermediate Programming, Spring 2017*

Intermediate Programming, Spring 2017* 600.120 Intermediate Programming, Spring 2017* Misha Kazhdan *Much of the code in these examples is not commented because it would otherwise not fit on the slides. This is bad coding practice in general

More information

UEE1303(1070) S12: Object-Oriented Programming Operator Overloading and Function Overloading

UEE1303(1070) S12: Object-Oriented Programming Operator Overloading and Function Overloading UEE1303(1070) S12: Object-Oriented Programming Operator Overloading and Function Overloading What you will learn from Lab 7 In this laboratory, you will learn how to use operator overloading and function

More information

Jordan University of Science & Technology Department of Computer Science CS 211 Exam #1 (23/10/2010) -- Form A

Jordan University of Science & Technology Department of Computer Science CS 211 Exam #1 (23/10/2010) -- Form A Jordan University of Science & Technology Department of Computer Science CS 211 Exam #1 (23/10/2010) -- Form A Name: ID#: Section #: Day & Time: Instructor: Answer all questions as indicated. Closed book/closed

More information

CS 115 Final Exam, Spring 2009

CS 115 Final Exam, Spring 2009 CS115FinalExam,Spring2009 Yourname: Rules ReferencematerialontheSTLclassesandalgorithms,aswellasfunctions thatoperateonc strings,isincludedattheendofthisdocument. Youmustbrieflyexplainyouranswerstoreceivepartialcredit.

More information

Discussion 1E. Jie(Jay) Wang Week 10 Dec.2

Discussion 1E. Jie(Jay) Wang Week 10 Dec.2 Discussion 1E Jie(Jay) Wang Week 10 Dec.2 Outline Dynamic memory allocation Class Final Review Dynamic Allocation of Memory Recall int len = 100; double arr[len]; // error! What if I need to compute the

More information

C:\Temp\Templates. Download This PDF From The Web Site

C:\Temp\Templates. Download This PDF From The Web Site 11 2 2 2 3 3 3 C:\Temp\Templates Download This PDF From The Web Site 4 5 Use This Main Program Copy-Paste Code From The Next Slide? Compile Program 6 Copy/Paste Main # include "Utilities.hpp" # include

More information

Chapter 5. Section 5.4 The Common String Library Functions. CS 50 Hathairat Rattanasook

Chapter 5. Section 5.4 The Common String Library Functions. CS 50 Hathairat Rattanasook Chapter 5 Section 5.4 The Common String Library Functions CS 50 Hathairat Rattanasook Library Functions We already discussed the library function fgets() Library functions are available: to find the length

More information

CPSC 427: Object-Oriented Programming

CPSC 427: Object-Oriented Programming CPSC 427: Object-Oriented Programming Michael J. Fischer Lecture 7 September 21, 2016 CPSC 427, Lecture 7 1/21 Brackets Example (continued) Storage Management CPSC 427, Lecture 7 2/21 Brackets Example

More information

Polymorphism Part 1 1

Polymorphism Part 1 1 Polymorphism Part 1 1 What is Polymorphism? Polymorphism refers to a programming language s ability to process objects differently depending on their data type or class. Number person real complex kid

More information

Due Date: See Blackboard

Due Date: See Blackboard Source File: ~/2315/04/lab04.(C CPP cpp c++ cc cxx cp) Input: Under control of main function Output: Under control of main function Value: 3 In this assignment create an IntegerSet class that will provide

More information

12/2/2009. The plan. References. References vs. pointers. Reference parameters. const and references. HW7 is out; new PM due date Finish last lecture

12/2/2009. The plan. References. References vs. pointers. Reference parameters. const and references. HW7 is out; new PM due date Finish last lecture The plan 11/30 C++ intro 12/2 C++ intro 12/4 12/7 12/9 12/11 Final prep, evaluations 12/15 Final HW7 is out; new PM due date Finish last lecture David Notkin Autumn 2009 CSE303 Lecture 25 CSE303 Au09 2

More information

CS 376b Computer Vision

CS 376b Computer Vision CS 376b Computer Vision 09 / 25 / 2014 Instructor: Michael Eckmann Today s Topics Questions? / Comments? Enhancing images / masks Cross correlation Convolution C++ Cross-correlation Cross-correlation involves

More information

MORE STRINGS AND RECURSION

MORE STRINGS AND RECURSION MORE STRINGS AND RECURSION Problem Solving with Computers-I https://ucsb-cs16-wi17.github.io/ Take out your Homework 13 Q1: How are ordinary arrays of characters and C-strings similar and how are they

More information

C++_ MARKS 40 MIN

C++_ MARKS 40 MIN C++_16.9.2018 40 MARKS 40 MIN https://tinyurl.com/ya62ayzs 1) Declaration of a pointer more than once may cause A. Error B. Abort C. Trap D. Null 2Whice is not a correct variable type in C++? A. float

More information

CS 31 Review Sheet. Tau Beta Pi - Boelter Basics 2. 2 Working with Decimals 2. 4 Operators 3. 6 Constants 3.

CS 31 Review Sheet. Tau Beta Pi - Boelter Basics 2. 2 Working with Decimals 2. 4 Operators 3. 6 Constants 3. CS 31 Review Sheet Tau Beta Pi - Boelter 6266 Contents 1 Basics 2 2 Working with Decimals 2 3 Handling Strings and Numbers with stdin/stdout 3 4 Operators 3 5 Common Mistakes/Misconceptions 3 6 Constants

More information

Arizona s First University. More ways to show off--controlling your Creation: IP and OO ECE 373

Arizona s First University. More ways to show off--controlling your Creation: IP and OO ECE 373 Arizona s First University. More ways to show off--controlling your Creation: IP and OO ECE 373 Overview Object Creation Control Distribution Possibilities Impact of design decisions on IP control 2 Good

More information

Abstraction and Encapsulation. Benefits of Abstraction & Encapsulation. Concrete Types. Using Typedefs to streamline classes.

Abstraction and Encapsulation. Benefits of Abstraction & Encapsulation. Concrete Types. Using Typedefs to streamline classes. Classes II: Type Conversion,, For : COP 3330. Object oriented Programming (Using C++) http://www.compgeom.com/~piyush/teach/3330 Abstraction and Encapsulation Abstraction: Separation of interface from

More information

CSE 333 Lecture 9 - intro to C++

CSE 333 Lecture 9 - intro to C++ CSE 333 Lecture 9 - intro to C++ Hal Perkins Department of Computer Science & Engineering University of Washington Administrivia & Agenda Main topic: Intro to C++ But first: Some hints on HW2 Labs: The

More information

3. Functions. Modular programming is the dividing of the entire problem into small sub problems that can be solved by writing separate programs.

3. Functions. Modular programming is the dividing of the entire problem into small sub problems that can be solved by writing separate programs. 1 3. Functions 1. What are the merits and demerits of modular programming? Modular programming is the dividing of the entire problem into small sub problems that can be solved by writing separate programs.

More information

Queue Implementations

Queue Implementations Queue Implementations 1 Circular Queues buffer of fixed capacity improvements and cost estimates 2 Deques the double ended queue queue as double linked circular list MCS 360 Lecture 17 Introduction to

More information

String Class in C++ When the above code is compiled and executed, it produces result something as follows: cin and strings

String Class in C++ When the above code is compiled and executed, it produces result something as follows: cin and strings String Class in C++ The standard C++ library provides a string class type that supports all the operations mentioned above, additionally much more functionality. We will study this class in C++ Standard

More information

Midterm Review. PIC 10B Spring 2018

Midterm Review. PIC 10B Spring 2018 Midterm Review PIC 10B Spring 2018 Q1 What is size t and when should it be used? A1 size t is an unsigned integer type used for indexing containers and holding the size of a container. It is guarenteed

More information

Copying Data. Contents. Steven J. Zeil. November 13, Destructors 2

Copying Data. Contents. Steven J. Zeil. November 13, Destructors 2 Steven J. Zeil November 13, 2013 Contents 1 Destructors 2 2 Copy Constructors 11 2.1 Where Do We Use a Copy Constructor? 12 2.2 Compiler-Generated Copy Constructors............................................

More information

COMSW Introduction to Computer Programming in C

COMSW Introduction to Computer Programming in C OMSW 1003-1 Introduction to omputer Programming in Lecture 23 Spring 2011 Instructor: Michele Merler http://www1.cs.columbia.edu/~mmerler/comsw1003-1.html 1 Today Trees (from PP hapter 17) ++ and object

More information

2 2

2 2 1 2 2 3 3 C:\Temp\Templates 4 5 Use This Main Program 6 # include "Utilities.hpp" # include "Student.hpp" Copy/Paste Main void MySwap (int Value1, int Value2); int main(int argc, char * argv[]) { int A

More information