Presentation is loading. Please wait.

Presentation is loading. Please wait.

C++ Program A sequence of structured statements written by programmer using C++ language to solve a problem. Using Visual C++ to write your.

Similar presentations


Presentation on theme: "C++ Program A sequence of structured statements written by programmer using C++ language to solve a problem. Using Visual C++ to write your."— Presentation transcript:

1 C++ Program A sequence of structured statements written by programmer using C++ language to solve a problem. Using Visual C++ to write your program 1- Start  Programs  Microsoft Visual Studio 6  Microsoft Visual C++ 6 2- File  New  Files  C++ Source file  oK 3- Write your program using C++ statements 4- Compilation: Ctrl + F7 to see if the program has error's 5- Execution: to display the program’s result وائل قصاص

2 General form of C++ Program
#include <iostream.h> void main() { C++ statements } Remark: C++ language is case sensitive وائل قصاص

3 Problem : Compute and print the summation of two numbers.
Program #include <iostream.h> void main() { int a, b, s; cout<<"Please Enter two numbers:"; cin>>a>>b; s = a + b; cout<<"s="<<s<<endl; }

4 Remarks: - iostream.h: C++ library that contains all input/output statements and other constrols. - main(): the main function of the program which represents the program’s life time. - a, b, and s are three variables of type integer. Their values can be any integer and can be changed. - cin>>: C++ statement to take value(s) from the user. - cout<<: C++ statements to display value(s) to the output screen. - " ": must be around any character constants. - \n or endl: to start new line at output screen. وائل قصاص

5 Variables Variables: - Variable is one memory location.
-The name of the location is the variable name. -The location content is the value of the variable - You can change the content of the variable at any time in the statements of the algorithm. e.g. Name of the location Inside Memory location employee_name "Ali Ahmed" age hourly_rate وائل قصاص

6 Data Types Variable declaration
Predefined Data Types: int : values (e.g , , 12) operations (e.g. + , - , * , / , % , >, <, = =, !=, > =, <= ) float (double) : values (e.g , 1.23E+5 , 0.34E-2) operations (e.g. +, -, *, /, , >, <, = =, !=, > =, <= ) bool : values (true , false) operations (e.g. AND, OR, NOT) char : values (e.g. ‘A’ , ‘t’ , ‘(‘ , ‘5’ , ‘;’ ) operations (e.g. <, > , ≤, etc.) Variable declaration Type Variable_name وائل قصاص

7 Constant Values: can be numerical (3, 100, -5, 3
Constant Values: can be numerical (3, 100, -5, 3.14) or string (‘A’, ‘$’, ‘Ahmad’, Amman). Constant identifier: one memory location take a value at a first time, which can not be changed. const float pi = 3.14 وائل قصاص

8 Variable names int X,x,Number, IF,If,iF,a7,Total_sum; float _abc;
وائل قصاص

9 Problem : Compute and print the average of three numbers.
Program #include <iostream.h> void main() { int n1, n2, n3; float s, average; cout<<"Please Enter three integers: "; cin>>n1>>n2>>n3; s = n1 + n2 + n3; average = s / 3; cout<<"Average = \t"<<average<<endl; } Remark: \t to leave tab spaces وائل قصاص

10 Problem : Compute the area of the circle. Where area = π x R2
Program #include <iostream.h> void main() { const double Pi = 3.14; int r; cout<<"Please enter r : "; cin>>r; double a; a = Pi * r * r; cout<<"Circle's Area = "<<a<<endl; } وائل قصاص

11 Examples on integer division
#include <iostream.h> void main( ) { int x; x=1/3*3; // /3=0 cout<<x<<endl; x=1.0/3*3; } وائل قصاص

12 Boolean variables and relational operations
#include <iostream.h> void main( ) { bool x,y; x= 5 > 7; cout<<x<<endl; y= 5 < 7; cout<<y<<endl; x=true; y=false; x=5; cout<<x; } وائل قصاص

13 Misleading examples X= 7 > 5 > 3;
This expression gives false because its evaluated as follows X=(7>5) >3; = > 3; // False; The relational operations are executed from left to right < ,<= ,> , >= have the same priority == , != have lower priority than the above. X = 1 == 1>3; X = 3>4 == 4>3; وائل قصاص

14 Priority * , / , % have the same priority ( High )
+ , - have the same priority (Low) وائل قصاص

15 Examples on arithmetic operations
The order of execution is as follows: * , then + , then - X= * 3 – 7 / 3 Execution order : * , + , / , - X= 5+2*3/4%1-7/3 …………………….. وائل قصاص

16 If Statement in C++ One way if if ( Condition ) statement;
if ( Condition ) { statements; } وائل قصاص

17 Problem : Read any number from the user, then print positive if it is positive.
Program #include <iostream.h> void main() { int Num; cout<<"Please Enter an integer number:"; cin>>Num; if (Num > 0) cout<<" Positive\n"; } وائل قصاص

18 Another Version #include <iostream.h> void main() { int Num; bool w; cout<<"Please Enter an integer number:"; cin>>Num; w=Num>0; if (w) cout<<" Positive\n"; } وائل قصاص

19 If Statement in C++ Two way if
if ( Condition ) statement; else statement; if ( Condition ) { statements; } else { statements;} وائل قصاص

20 Write a program that reads a mark, if mark is 60 or greater, the program prints PASS, else it will print FAIL #include <iostream.h> void main() { int mark; cout<<"Please Enter your mark: "; cin>>mark; if (mark>=60) cout<<" PASS\n"; else cout<<"FAIL\n"; } وائل قصاص

21 More than one statement in the if
#include <iostream.h> void main() { int mark; cout<<"Please Enter your mark: "; cin>>mark; if (mark>=60) { cout<<" PASS\n"; cout<<" you can take Object course now\n"; } else { cout<<"FAIL "; cout<<"You must take this course again\n"; وائل قصاص

22 Write a program that prints the fraction a/b in the form c d/b Example: 7/3 = 2 1/3
#include <iostream.h> void main ( ) { int a,b,c,d; cout<<"To convert the fraction from the format a/b to c d/b, Enter a,b"; cin>>a>>b; c=a/b; d=a%b; cout<<a<<"/"<<b<<"="<<c<<" "<<d<<"/"<<b<<endl; } وائل قصاص

23 Enhancement on the previous example
#include <iostream.h> void main ( ) { int a,b,c,d; cout<<"To convert the fraction from the format a/b to c d/b, Enter a,b"; cin>>a>>b; c=a/b; d=a%b; cout<<a<<"/"<<b<<"="; if ( c != 0) cout<<c; if (d!=0) cout<<" "<<d<<"/"<<b; cout<<endl; } وائل قصاص

24 Arithmetic Expressions
Condition Condition: An expression that is evaluated to produce only true or false values. Arithmetic Expressions - It is composed of operands and arithmetic operations ( + , - , *, /, %). - Its result is a numeric value (e.g gives 7) - Operands may be numbers and/or identifiers that have numeric values. وائل قصاص

25 Relational Expressions
- It is composed from operands and operators. - Operands may be numbers and/or identifiers that have numeric values - Its result is a logical value (true or false). - Operators are relational operators: < , > , <= , >= , = =, != e.g. (a < b) gives true, if value of a is less than value of b false, if value of a is not less than value of b (x != y) also gives true or false according to the values of x and y وائل قصاص

26 Logical Expressions - It is called also Boolean expression.
- It is composed from operands and operators. - Operands are identifiers that have logical values - Its result is a logical value (true or false) (see later). - Operators are logical: &&(AND) , ||(OR), !(NOT) e.g. X && Y a && b || c وائل قصاص

27 Evaluating Logical Expressions
The truth table AND table && True False True True False False False False وائل قصاص

28 (2) OR table || True False True True True False True False
(3) NOT table ! True False False True وائل قصاص

29 Arithmetic  Relational  Logical
NOTES A relational expression may contain arithmetic sub expressions, e.g. ( ) < (12 * 4 ) < 12 * 4 2) A logical expression may contain relational and arithmetic subexpressions, e.g. x && y && ( a > b ) (2 + t ) < (6 * w ) && ( p = =q ) وائل قصاص

30 Operator Precedence Precedence Description Operator Highest
parentheses ( ) unary plus, unary minus, Not +, – , ! *, /, % Binary plus, binary minus + , - <, <=, >, >= Equal, not equal == , != && || Lowest Assignment = وائل قصاص

31 Examples Find the value of the following expression: (1) 5 + 8 * 2 / 4
(1) * / 4 16 4 (This is the final result) وائل قصاص

32 Find the value of the following expression
( ) / 12 2 10` (this is the final result) وائل قصاص

33 Find the value of the following Expression
If x = True, y = False, z = False, find the value of the expression x && y || z x && y || z False False (the final result) وائل قصاص

34 Another example X=true, Y=false, Z= true X || Y && Z true
X=true, Y=false, Z= false وائل قصاص

35 Find the value of the following Expression
If a = 3, b = 5, x = true, y = false, find the value of the expression: ( a < b ) AND y OR x ( a < b ) && y || x True False True (the final result) وائل قصاص

36 What is the output of the following code:
Program #include <iostream.h> void main() { int a=10, b=3; cout<<"\n a+b= \t"<<a+b; cout<<"\n a+b*2= \t"<<a+b*2; cout<<"\n (a+b)*2 \t"<<(a+b)*2<<endl; cout<<a<<"<"<<b<<" is\t"<<(a<b); cout<<"\n a+b != a+3 is \t"<<(a+b != a+3); cout<<"\n a+b >= b*2 || a>b+9 is \t"<<(a+b >= b*2 || a>b+9); cout<<endl; } وائل قصاص

37 Problem : Read any number from the user, then print positive if it is positive and print negative otherwise. Program #include <iostream.h> void main() { int Num; cout<<"Please Enter Number:"; cin>>Num; if (Num < 0) cout<<"Negative\n"; else cout<<"Positive\n"; } وائل قصاص

38 Problem : Read Two numbers from the user, then print the greatest one.
Program #include <iostream.h> void main() { int x,y; cout<<"Please Enter two numbers:"; cin>>x>>y; cout<<"Max = "; if (x > y) cout<<x<<endl; else cout<<y<<endl; } وائل قصاص

39 Problem : Read three numbers to print the smallest one.
Program #include <iostream.h> void main() { int a, b, c; cout<<"Please Enter three numbers:"; cin>>a>>b>>c; cout<<"Min= "; if ((a < b) && (a < c)) cout<<a; if ((b < a) && (b < c)) cout<<b; if ((c < a) && (c < b)) cout<<c; cout<<endl; } وائل قصاص

40 Program2 (Nested if) #include <iostream.h> void main() { int a, b, c; cout<<"\nPlease Enter three numbers:"; cin>>a>>b>>c; cout<<"\nMin= "; if (a < b) if (a < c) cout<<a; else cout<<c; else if (b < c) cout<<b; else cout<<c; cout<<endl; } وائل قصاص

41 Problem : Read number, if it is positive, Add number 10 to it and print the Number "is positive", but otherwise, subtract number 10 from it and print the Number "is negative". Program #include <iostream.h> void main() { int Number; cout<<"Please enter Number:"; cin>>Number; if (Number>0) { Number = Number + 10; cout<<Number<<" is Positive\n";} else { Number = Number - 10; cout<<Number<<" is Negative\n";} } وائل قصاص

42 Example on dangling else
if ( x>y) if ( x<z) cout<<" Hello"; else cout<<"Hi"; وائل قصاص

43 Another idea if ( x>y) {if ( x<z) cout<<" Hello";} else
cout<<"Hi"; وائل قصاص

44 Assignment Statement Simple Assignment: Max = 5 ; Max = A ; F = A+B*2;
Compound Assignment: A += 10 ;  A = A + 10; A -= C ;  A = A – C; I *= 4 ;  I = I * 4; r /= 2;  r = r / 2; S %= 3 ;  S = S % 3 ; B &= true;  B = B && true; B |= true;  B = B || true; وائل قصاص

45 Increment and Decrement
Postfix C++;  use the value of C, then increment (C = C+1) it. C--;  use the value of C, then decrement (C = C-1) it. Prefix ++C; increment the value of C (C = C+1), then use it . --C; Decrement the value of C (C = C-1), then use it . وائل قصاص

46 What is the output of the following C++ Source Code
Program #include <iostream.h> void main( ) { int A=10, B=4, R; cout<<"A="<<A<<"\tB="<<B; A += B; B *= 2; cout<<"\nA="<<A<<"\tB="<<B; R = ++A % B--; cout<<"\nR="<<R; R = A B ; cout<<"\nA="<<A<<"\tB="<<B<<"\tR="<<R; bool a=true, b=false; a &= b; if (a == 0) cout<<"\n a = false\n"; else cout<<"\n a = true\n"; } وائل قصاص

47 Examples X=5; Y=7; X++; cout<<X<<endl; ++X;
Z=X++ + Y; // Z=X+Y; X=X+1; cout<<X<<" "<<Y<<" "<<Z<<endl; Z=++X +Y; // X=X+1; Z=X+Y; Z=X++ + Y++; // Z=X+Y; X++;Y++; وائل قصاص

48 Loop (iteration statements) used to repeat subcode number of times there three loop techniques: 1- for Loop. 2- while Loop. 3- do … while Loop وائل قصاص

49 For Loop Technique General Form: for (counter_var=initial_val; condition; increasing or decreasing counter_var) { . Statement(s); . } Statements will be executed repeatedly while condition is true. When the condition become false, the loop will be terminated and the execution sequence will go the first statement after for loop. If the loop body contains only one statement, there is no need to begin{ and end } the loop body. وائل قصاص

50 Problem : Print the word "Amman" five times.
Program #include <iostream.h> void main( ) { for (int i=1; i<=5; i++) cout<<"Amman\n"; } Another Program #include <iostream.h> void main() { for (int i=5; i>=1; i--) cout<<"Amman\n"; } وائل قصاص

51 Problem : Print the following numbers. 1 3 5 7 9 11
Program #include <iostream.h> void main( ) { for (int k=1; k<=11; k+=2) cout<<k<<"\t"; cout<<endl; } وائل قصاص

52 Problem : Print the following numbers. 20 17 14 11 8 5 2
Program #include <iostream.h> void main() { for (int m=20; m>=2; m-=3) cout<<m<<"\t"; cout<<endl; } وائل قصاص

53 Another Version of the previous example
#include <iostream.h> void main( ) { int m; for (m=20; m>=2; m-=3) cout<<m<<"\t"; cout<<endl; } وائل قصاص

54 Another Version of the previous example
#include <iostream.h> void main( ) { int m=20; for ( ; m>=2; m-=3) cout<<m<<"\t"; cout<<endl; } وائل قصاص

55 Quiz Write a program that prints the numbers from X to Y, with step Z , using for statement. The program should read X, Y, Z then start the loop وائل قصاص

56 Problem : Print the following numbers. 1 2 3 4 … n(entered by user)
Program #include <iostream.h> void main() { int n; cout<<"\nPlease enter the upper limit:"; cin>>n; for (int i=1; i<=n; i++) cout<<i<<"\t"; cout<<endl; } وائل قصاص

57 Problem : Print the following numbers
Problem : Print the following numbers. L (entered By user) (L+1) (L+2) … U (entered By user) Program #include <iostream.h> void main() { int L,U; cout<<"Enter the start value:"; cin>>L; cout<<"Enter the end value:"; cin>>U; for (int i=L; i<=U; i++) cout<<i<<"\t"; cout<<endl; } وائل قصاص

58 Problem : Read five numbers from the user and print the positive numbers only.
Program #include <iostream.h> void main() { int num; for (int i=1; i<=5; i++) { cout<<"Please Enter No "<<i<<':'; cin>>num; if (num > 0) cout<<num<<" is positive\n"; } } وائل قصاص

59 Problem : Read five numbers from the user and print the positive numbers only.
#include <iostream.h> void main() { int num; for (int i=1; i<=5; i++) { cout<<"Please Enter No "<<i<<':'; cin>>num; if (num < 0) continue; cout<<num<<" is positive\n"; } } وائل قصاص

60 Problem : Compute and print S, Where S = 1+ 2+ 3+ 4+ 5
#include <iostream.h> void main() { int S=0; for (int i=1; i<=5; i++) S+=i; cout<<"Sum is "<<S<<endl; } Program وائل قصاص

61 Problem : Compute and print S, Where Sum = 1+ 3+ 5+ 7+ … + n
Program #include <iostream.h> void main( ) { int Sum=0, n; cout<<"Please Enter n"; cin>>n; for (int i=1; i<=n; i+=2) Sum+=i; cout<<"Sum="<<Sum<<endl; } وائل قصاص

62 Problem : print the following formula Sum = 1+ 3+ 5+ 7+ … + n
Program #include <iostream.h> void main( ) { int n; cout<<"Please Enter n"; cin>>n; cout<<"Sum= "; for (int i=1; i<=n; i+=2) cout<<i<<"+"; cout<<"\b \n"; } وائل قصاص

63 Problem : Compute and print the summation of any 10 numbers entered by the user.
Program #include <iostream.h> void main() { int S=0, N; for (int i=10; i>=1; i--) { cout<<"Please Enter the next number:"; cin>>N; S+=N;} cout<<"S="<<S<<endl; } وائل قصاص

64 Problem : Compute and Print the factorial of the number 5. (Fact = 5 * 4 * 3 * 2 * 1)
Program #include <iostream.h> void main( ) { int Fact=1; for (int j=5; j>=1; j--) Fact *= j; cout<<"5! = "<<Fact<<endl; } وائل قصاص

65 A program to find n! #include <iostream.h> void main( ) { int Fact=1,n; cout<<"Enter an integer to find its factorial"; cin>>n; for (int j=n; j>=1; j--) Fact *= j; cout<<n<<"!= "<<Fact<<endl; } Try it on n = 17 ??? وائل قصاص

66 Problem : Compute and Print the value of M where M = 2 * 4 * 6 * … * n
Program #include <iostream.h> void main( ) { long M=1; int n; cout<<"please enter the upper Limit:"; cin>>n; for (int i=2; i<=n; i+=2) M *= i; cout<<"M= "<<M<<endl; } وائل قصاص

67 Problem : Compute and Print Mn
Program #include <iostream.h> void main() { long Result=1; int M, n; cout<<“Enter the Base number:"; cin>>M; cout<<“Enter the exponent:"; cin>>n; for (int i=1; i<=n; i++) Result *= M; cout<<"Result= "<<Result<<endl; } وائل قصاص

68 Write a program that finds Mn for positive & negative n
H.W. وائل قصاص

69 General Form: while (Condition) { . Statement(s); . }
While Technique General Form: while (Condition) { . Statement(s); . } Statements will be executed repeatedly while condition is true. When the condition become false, the loop will be terminated and the execution sequence will go to the first statement after While loop. If the loop body contains only one statement, there is no need to begin{ and end } the loop body. وائل قصاص

70 Problem : Print the word "Amman" five times.
Program #include <iostream.h> void main() { int i=1; while (i<=5) { cout<<"Amman\n"; i++; } وائل قصاص

71 #include <iostream.h> void main() { int i=1; while (i++<=5) {
cout<<"Amman\n"; } cout<<i<<endl; وائل قصاص

72 Problem : Print the following numbers. 1 3 5 7 9 11
Program #include <iostream.h> void main() { int i=1; while (i <= 11) { cout<<i<<'\t'; i+=2; } } Remark: Write ((i+=2) <= 11 ) condition instead of the above one. What changes you have to do to produce the same output. وائل قصاص

73 Problem : Print the following numbers. 20 17 14 … n
Program #include <iostream.h> void main() { int n, k=20; cout<<"Enter the lower limit:"; cin>>n; while ( k >= n) { cout<<k<<'\t'; k -= 3; } cout<<endl; } Remark: Write k-=3 instead of k in the above condition. What you have to do to produce the same output. وائل قصاص

74 Problem : Read five numbers from the user and print the positive numbers only.
Program #include <iostream.h> void main() { int num, j=0; while ( j++ < 5 ) { cout<<"Enter the next num:"; cin>>num; if (num > 0) cout<<num<<endl; } } Remark: Solve the above problem by using continue statement. وائل قصاص

75 #include <iostream.h> void main() { int sum=0,i,x,y;
cout<<"Enter x,y please: "; cin>>x>>y; i=x; while ( i <=y) { sum=sum+i; i=i+1; } cout<<"The Sum for the numbers from "<<x<<" to " <<y<<" = "<<sum<<endl; وائل قصاص

76 Problem : Compute and print S, Where Sum = 1+ 3+ 5+ 7+ … + n
Program #include <iostream.h> void main() { int n, Sum=0, i=1; cout<<"Enter the upper limit:"; cin>>n; while ( i <= n ) { Sum += i; i += 2; } cout<<"\nSum="<<Sum; } وائل قصاص

77 Problem : Read 10 numbers by the user and compute and print the summation of numbers, which are divisible by 3. Program #include <iostream.h> void main() { int Num, Sum=0, i=1; while ( i <= 10 ) { cout<<"Enter a number:"; cin>>Num; if (Num % 3 == 0) Sum += Num; i++; } cout<<"\nSum="<<Sum; وائل قصاص

78 Problem : Compute and Print the value of M where M = 2 * 4 * 6 * … * n
Program #include <iostream.h> void main() { int N, M=1, i=2; cout<<"Enter the upper limit:"; cin>>N; while ( i <= N ) { M *= i; i += 2; } cout<<"\nM="<<M; } وائل قصاص

79 #include <iostream.h> void main() { int N, M=1, i=2;
cout<<"Enter the upper limit:"; cin>>N; cout<<"\nM=1"; while ( i <= N ) { M *= i; cout<<" x "<<i; i += 2; } cout<<"="<<M<<endl; } وائل قصاص

80 General Form: do { . Statement(s); . } while (Condition) ;
Do .. While Technique General Form: do { . Statement(s); . } while (Condition) ; Statements will be executed repeatedly while condition is true. When the condition become false, the loop will be terminated and the execution sequence will go to the first statement after the loop. The loop body will be executed at least one. وائل قصاص

81 Problem : Print the word "Amman" five times.
Program #include <iostream.h> void main( ) { int i = 1; do { cout<<"Amman\n"; i++; } while (i <= 5); } وائل قصاص

82 Execute the following program
#include <iostream.h> void main() { int Choice, Num; do { cout<<"\n Enter the New Number"; cin>>Num; if (Num % 2 == 0) cout<<Num<<" is Even\n"; else cout<<Num<<" is Odd\n"; cout<<"Select your choice.\n"; cout<<"1- Exit. (Terminate the Run)\n"; cout<<"2- Enter New Number to Check.\n"; cin>>Choice; } while (Choice != 1); } وائل قصاص

83 #include <iostream.h> void main() { int Num; char Choice; do {
cout<<"\n Enter the New Number"; cin>>Num; if (Num % 2 == 0) cout<<Num<<" is Even\n"; else cout<<Num<<" is Odd\n"; cout<<"Enter Y to continue, any other character to exit \n"; cin>>Choice; } while (Choice == ‘Y’); } وائل قصاص

84 #include <iostream.h> void main() { int Num; char Choice; do {
cout<<"\n Enter the New Number"; cin>>Num; if (Num % 2 == 0) cout<<Num<<" is Even\n"; else cout<<Num<<" is Odd\n"; cout<<"Enter Y to continue, any other character to exit \n"; cin>>Choice; } while ((Choice == 'Y') || (Choice=='y')); } وائل قصاص

85 Homework Resolve all problems in the presentation 5 and 6 by using the three loop techniques: For, While, and Do … while Loops. وائل قصاص

86 2.10 break and continue Statements
break statement Immediate exit from while, for, do/while, switch Program continues with first statement after structure Common uses Escape early from a loop Skip the remainder of switch وائل قصاص

87 2 // Using the break statement in a for structure.
// Fig. 2.26: fig02_26.cpp // Using the break statement in a for structure. #include <iostream> 4 using std::cout; using std::endl; 7 // function main begins program execution int main() 10 { 11 int x; // x declared here so it can be used after the loop 13 // loop 10 times for ( x = 1; x <= 10; x++ ) { 16 // if x is 5, terminate loop if ( x == 5 ) break; // break loop only if x is 5 20 cout << x << " "; // display value of x 22 } // end for Exits for structure when break executed. وائل قصاص

88 27 return 0; // indicate successful termination 28
24 25 cout<< "\nBroke out of loop when x became "<< x <<endl; 26 return 0; // indicate successful termination 28 29 } // end function main Broke out of loop when x became 5 وائل قصاص

89 2.10 break and continue Statements
Used in while, for, do/while Skips remainder of loop body Proceeds with next iteration of loop while and do/while structure Loop-continuation test evaluated immediately after the continue statement for structure Increment expression executed Next, loop-continuation test evaluated وائل قصاص

90 2 // Using the continue statement in a for structure.
// Fig. 2.27: fig02_27.cpp // Using the continue statement in a for structure. #include <iostream> 4 using std::cout; using std::endl; 7 // function main begins program execution int main() 10 { // loop 10 times for ( int x = 1; x <= 10; x++ ) { 13 // if x is 5, continue with next iteration of loop if ( x == 5 ) continue; // skip remaining code in loop body 17 cout << x << " "; // display value of x 19 } // end for structure Skips to next iteration of the loop. وائل قصاص

91 Used continue to skip printing the value 5
21 22 cout<< "\nUsed continue to skip printing the value 5" << endl; 24 return 0; // indicate successful termination 26 27 } // end function main Used continue to skip printing the value 5 وائل قصاص

92 2.8 switch Multiple-Selection Structure
Test variable for multiple values Series of case labels and optional default case switch ( variable ) { case value1: // taken if variable == value1 statements break; // necessary to exit switch case value2: case value3: // taken if variable == value2 or == value3 break; default: // taken if variable matches no other cases statements break; } وائل قصاص

93 2.8 switch Multiple-Selection Structure
93 2.8 switch Multiple-Selection Structure وائل قصاص

94 Example on switch statement
#include<iostream.h> void main() { int a; cout<<“ Enter an Integer between 0 and 10: “; cin>>a; switch(a) { case 0: case 1: cout<<“hello ”; case 2: cout<<“there ”; case 3: cout<<“Welcome to ”; case 4: cout<<“C++ ”<<endl; break; case 5: cout<<“How “; case 6: case 7: case 8: cout<<“are you “<<endl; case 9: break; case 10: cout<<“Have a nice day. “<<endl; default: cout<<“Sorry, the number is out of range.”<<endl; } cout<< “ out of switch structure.”<<endl; } //main Example on switch statement 94 وائل قصاص

95 Another switch example
void main( ) { int score; char grade; cin>>score; switch(score/10) { case 0: case 1: case 2: case 3: case 4: case 5: grade = ‘F’; break; case 6: grade = ‘D’; case 7: grade = ‘C’; case 8: grade = ‘B’; case 9: case 10: grade = ‘A’; default: cout<<“Invalid test score.”<<endl; } cout<<“Grade is”<<grade<<endl; } // end main 95 Another switch example وائل قصاص

96 switch examples void main( ) { char grade;
96 switch examples void main( ) { char grade; cout <<“ Enter grade as a letter : ” ; cin>>grade; switch(grade) {case ‘A’: cout<<“The Grade is A”; break; case ‘B’: cout<<“The Grade is B”; case ‘C’: cout<<“The Grade is C”; case ‘D’: cout<<“The Grade is D”; case ‘F’: cout<<“The Grade is F”; default: cout<< “The Grade is invalid”; } وائل قصاص

97 switch examples void main( ) { int age;
97 switch examples void main( ) { int age; cout<<“Enter your age: “; cin>>age; switch (age>=18) case 1: cout<<“old enough to take a driving license.”<<endl; cout<< “old enough to vote.”<<endl; break; case 0: cout<<“Not old enough to take a driving license”<<endl; cout<< “Not old enough to vote.”<<endl; } وائل قصاص

98 cout<<"Enter ur mark "; cin>>score; char grade;
void main() { int score; cout<<"Enter ur mark "; cin>>score; char grade; switch(score/10) { case 0: case 1: case 2: case 3: case 4: case 5: grade = 'F'; break; case 6: grade = 'D'; break; case 7: grade = 'C'; case 8: grade = 'B'; case 9: case 10: grade = 'A'; default: cout<<"Invalid test score."<<endl; } //End of switch cout<<"Your grade is "<<grade<<endl; } وائل قصاص

99 Nested for Print the following shape ***** cin>>n;
for(int i=1;i<=n;i++) { for (int j=1;j<=n;j++) cout<<"*"; cout<<endl; } وائل قصاص

100 Problem : Draw the following shape * ** *** **** *****
Nested for Problem : Draw the following shape * ** *** **** ***** #include <iostream.h> void main( ) { for (int raw=1; raw<=5; raw++) { for (int C=1; C<=raw; C++) cout<<'*'; cout<<endl; } } وائل قصاص

101 Problem : Draw the following shape ***** **** *** ** *
#include <iostream.h> void main() { for (int i=1; i<=5; i++) { for (int j=i; j<=5; j++) cout<<'*'; cout<<endl; } } وائل قصاص

102 What is the output for the following program
for(int i=1;i<=5;i++) { for (int j=1;j<=5;j++) if (i==j) cout<<"*"; else if (i+j==6) cout<<"*"; cout<<" "; Cout<<endl;} وائل قصاص

103 Problem : display the multiplication table for the number 3.
#include <iostream.h> void main() { for (int i=1; i<=10; i++) cout<<"3 x "<<i<<" = "<<3*i<<endl; } وائل قصاص

104 Problem : display the multiplication table for the numbers from 1 to 5.
وائل قصاص

105 for (int i=1;i<=5;i++) { for(int j=1;j<=5;j++)
cout<<i*j<<"\t"; cout<<endl; } وائل قصاص

106 Problem : Read any number from the user and print Prime if it is a prime number, or Not prime otherwise. #include <iostream.h> void main() { bool Prime = true; int i, num; cout<<"Please enter the number:"; cin>>num; for ( i=2; i<num; i++) if (num%i==0) { Prime = false; break; } if (Prime) cout<<num<<" is a Prime number\n"; else cout<<num<<" is not a Prime number\n"; } وائل قصاص

107 S=m0 + m1 + … +mn #include <iostream.h> void main()
{int s=0,n,m; int t=1; cout<<"Enter m please "; cin>>m; cout<<"Enter n please "; cin>>n; for (int i=0;i<=n;i++) { t=1; for (int j=1;j<=i;j++) t=t*m; s=s+t; } cout<<s<<endl; وائل قصاص

108 #include <iostream.h> void main() {int s=0,n,m; int t=1;
cout<<"Enter m please "; cin>>m; cout<<"Enter n please "; cin>>n; for (int i=0;i<=n;i++) { s=s+t; t=t*m; } cout<<s<<endl; وائل قصاص

109 Nested Loops #include <iostream.h> 1 2 3 4 void main() {
int i,j=1; while(j<=4){ i=1; while(i<=4){ cout<<i<<"\t"; i++; } j++; cout<<endl; وائل قصاص

110 Problem : Draw the following shape * ** *** **** *****
#include <iostream.h> void main() { int i=1; while (i<=5) { int j=1; while (j<=i) { cout<<'*'; j++;} cout<<endl; i++; } } وائل قصاص

111 for (int i=1;i<=4;i++) {int x=1; for(int j=1;j<=i;j++)
1 2 1 2 4 for (int i=1;i<=4;i++) {int x=1; for(int j=1;j<=i;j++) {cout<<x<<" "; x=x*2;} cout<<endl;} وائل قصاص

112 for (int i=1;i<=4;i++) {for(int j=0;j<i;j++) {int x=1;
for( int k=1;k<=j;k++) x=2*x; cout<<x<<" ";} cout<<endl;} وائل قصاص

113 Functions Chapter 3 وائل قصاص

114 Topics to be covered C++ pre defined functions: User Functions:
Math library functions Random function Examples on rand with switch statments User Functions: Function proto type Function definition: Square, Cube examples Examples on the four forms of functions, And their meaning ( when to use each form): void F(void) void F(int) int F(void) int F(int) وائل قصاص

115 Call by value & call By reference Functions on arrays
Scope of variables &Global variables Recursion : Factorial Febonacci, Sum of numbers from x to y وائل قصاص

116 Math library functions:
ceil(x),floor(x) fabs(x), fmod(x,y), pow(x,y),sqrt(x) sin(x), cos(x), tan(x) These functions are of type double, and take also double arguments They belong to the library #include <cmath> وائل قصاص

117 Examples double Y; Y=pow( 5,4); Y=pow(5,-4); Y=pow(5.2,3);
Y=pow(-4,0.5); runtime error Y=pow(x*3/7,y-1); Y=pow(floor(x/3),ceil(x/4)); Y=sqrt(9); Y=sqrt(10); Y=sqrt(0.09); Y=sqrt(-16); runtime error cout<<ceil(5.2); ceil(0.1); ceil(-0.1); ceil(-1.1); floor(5.2); floor(0.1); floor(-0.1); floor(-1.1); ceil(5.2/3); floor(ceil(5.2/3)); fabs( ); fmod(5,3) ≡ 5%3 fmod(4.2,2); fmod(5.1,2.5) fmod(7.7,2.5) Examples وائل قصاص

118 #include <iostream.h> #include <cmath> void main() {
double A,B,C,X,Y; cout<<"Enter a number :"; cin>>X; Y=X/180* ; A=sin(Y); B=cos(Y); C=tan(Y); cout<<"sin("<<X<<") = "<<A<<endl; cout<<"cos("<<X<<") = "<<B<<endl; cout<<"tan("<<X<<") = "<<C<<endl; } وائل قصاص

119 Problem : Read any number from the user and print it is prime if it is, or not prime otherwise.
#include <iostream.h> #include <cmath> void main() { bool Prime = true; int i, num; cout<<"Please enter the number:"; cin>>num; for ( i=2; i<=sqrt(num); i++) if (num%i==0) { Prime = false; break; } if (Prime) cout<<num<<" is a Prime number\n"; else cout<<num<<" is not a Prime number\n"; } وائل قصاص

120 Random number generator
#include <cstdlib> X=rand(); // gives a random number // between وائل قصاص

121 #include <iostream.h> #include <cstdlib> void main() {
int x; for( int i=1;i<=100;i++) {x=rand(); cout<<x<<endl;} } وائل قصاص

122 Generate 20 random numbers between 0 - 9
#include <iostream.h> #include <cstdlib> void main() { int x; for( int i=1;i<=20;i++) {x=rand()%10; cout<<x<<endl;} } وائل قصاص

123 20 numbers between 1 - 10 #include <iostream.h>
#include <cstdlib> void main() { int x; for( int i=1;i<=20;i++) {x=rand()%10+1; cout<<x<<endl;} } وائل قصاص

124 Generate 10 integer random numbers between 5 - 7
وائل قصاص

125 Using srand function #include <cstdlib> void main() {
int x,seed; cout<<"Enter the seed for the random generater "; cin>>seed; srand(seed); for( int i=1;i<=10;i++) x=rand(); cout<<x<<endl;} } وائل قصاص

126 Q: Write a program that generates 1200 random numbers between 1-6, and also counts the occurrence of each number? Its expected that the occurrence of each number will be about 200 times. But remember we are talking about random number. No exact values. وائل قصاص

127 #include <iostream.h> #include <cstdlib> void main()
{ int x,count1=0, count2=0, count3=0, count4=0, count5=0, count6=0; for( int i=1;i<=1200;i++) { x=rand()%6 +1; if (x==1) count1++; if (x==2) count2++; if (x==3) count3++; if (x==4) count4++; if (x==5) count5++; if (x==6) count6++; cout<<x<<endl;} cout<<1<<" : "<<count1<<endl; cout<<2<<" : "<<count2<<endl; cout<<3<<" : "<<count3<<endl; cout<<4<<" : "<<count4<<endl; cout<<5<<" : "<<count5<<endl; cout<<6<<" : "<<count6<<endl; } وائل قصاص

128 A program to count the occurrence of each random number
#include <iostream.h> #include <cstdlib> void main() { int x,count[7]={0}; for( int i=1;i<=1200;i++) { x=rand()%6 +1; if (x==1) count[1]++; if (x==2) count[2]++; if (x==3) count[3]++; if (x==4) count[4]++; if (x==5) count[5]++; if (x==6) count[6]++; cout<<x<<endl;} for(i=1;i<=6;i++) cout<<i<<" : "<<count[i]<<endl; } A program to count the occurrence of each random number وائل قصاص

129 The same example using Switch statement
#include <iostream.h> #include <cstdlib> void main() { int x,count[7]={0}; for( int i=1;i<=1200;i++) { x=rand()%6 +1; switch(x) case 1: count[1]++; break; case 2: count[2]++; case 3: count[3]++; case 4: count[4]++; case 5: count[5]++; case 6: count[6]++; } for(i=1;i<=6;i++) cout<<i<<" : "<<count[i]<<endl; The same example using Switch statement وائل قصاص

130 Do the same prev. example,
Count the number of even numbers, and the number of odd numbers. وائل قصاص

131 #include <iostream.h> #include <cstdlib> void main()
{ int x,even=0,odd=0; for( int i=1;i<=1200;i++) { x=rand()%6 +1; switch(x) case 1: case 3: case 5: odd++; break; case 2: case 4: case 6: even++; } cout<<"Even count is "<<even<<endl; cout<<"Odd count is "<<odd<<endl; وائل قصاص

132 #include <iostream.h> #include <cstdlib> void main() {
int x,count[7]={0}; for( int i=1;i<=1200;i++) x=rand()%6 +1; count[x]++; cout<<x<<endl;} for(i=1;i<=6;i++) cout<<i<<" : "<<count[i]<<endl; } وائل قصاص

133 User Defined Functions
Write a function that calculates and returns the square value of a double number: وائل قصاص

134 #include <iostream.h>
double square(double); // function prototype void main( ) {double x,y; cout<<"Enter a number :"; cin>>x; y=square(x); cout<<x<<" squared = "<<y<<endl; } double square(double a) { double b; b=a*a; return b; وائل قصاص

135 Another user defined function
Write a program to calculate and print a rectangle area, the program should use a function to calculate and returns the area of a rectangle to the main program? This function should take the length and the width , and should return the area وائل قصاص

136 #include <iostream.h>
double area(double,double); // function prototype void main( ){ double L,W,A; cout<<"Enter the length:"; cin>>L; cout<<"Enter the width:"; cin>>W; A=area(L,W); cout<<"The area of the recangle is "<<A; } double area(double X,double Y) { double Z; Z=X*Y; return Z; وائل قصاص

137 Write a program that finds and prints the maximum of three integer numbers, The program should use a function to find the maximum value. وائل قصاص

138 #include <iostream.h> int max(int,int,int); void main(){
int x,y,z; cout<<"Enter 3 numbers please :"; cin>>x>>y>>z; cout<<"The Maximum is "<<max(x,y,z)<<endl; } int max(int a,int b,int c) {int m; m=a; if (m<b) m=b; if (m<c) m=c; return m;} وائل قصاص

139 #include <iostream.h> #include <cmath> bool prime(int);
void main(){ int x; cout<<"Enter a number please :"; cin>>x; if (prime(x)) cout<<x<<" is a prime number\n"; else cout<<x<<" is not a prime number\n"; } bool prime(int a) {bool p=true; for(int i=2;i<=sqrt(a);i++) if (a%i==0) { p=false; break;} return p;} وائل قصاص

140 Build your own fabs function
#include <iostream.h> double fabs(double); void main(void) { double x,y; cout<<"Enter a number "; cin>>x; y=fabs(x); cout<<"The absolute value of "<<x<<" is "<<y<<endl; } double fabs(double m) if (m>=0) return m; else return -m; وائل قصاص

141 Forms of functions Functions that take inputs and returns output:
double square(double), int max(int a, int b, int c) …. Functions that take inputs but don’t return output void Printsum(int x,int y) Functions that don’t take any inputs but returns an output: int Read_number(void); Functions that don’t take and inputs and don’t return any input void Print_hello(void); وائل قصاص

142 Write a program that uses a function to calculate and print the sum of two numbers.
#include <iostream.h> void print_sum(int,int); void main() {int x,y; cout<<"Enter two numbers please :"; cin>>x>>y; print_sum(x,y); } void print_sum(int x,int y) {int s; s=x+y; cout<<x<<"+"<<y<<" = "<<s<<endl; وائل قصاص

143 Write a program that reads two numbers and prints the sum of them, This program should use a function to read the numbers and use another function to calculate and print the sum of two numbers وائل قصاص

144 #include <iostream.h> void print_sum(int,int);
int read_number(void); void main() {int x,y; x=read_number(); y=read_number(); print_sum(x,y); } void print_sum(int x,int y) {int s; s=x+y; cout<<x<<"+"<<y<<" = "<<s<<endl; int read_number(void) {int A; cout<<"Enter a number please "; cin>>A; return A; وائل قصاص

145 Write a progam that uses a function to print a welcome message
#include <iostream.h> void print_welcome(void); void main(){ print_welcome(); } void print_welcome(void) { cout<<"Hello, Welcome in C++ functions\n"; وائل قصاص

146 Modify the previous example, make the main calls the print function 10 times
Also, make the print_welcome function print a random message from 3 different messages وائل قصاص

147 #include <iostream.h> #include<cstdlib>
void print_welcome(void); void main(){ for(int i=1;i<=10;i++) print_welcome(); } void print_welcome(void) {int x=rand()%3; switch(x) {case 0: cout<<"Hello \n"; break; case 1: cout<<"Welcome \n";break; case 2: cout<<"Hi, how are u \n"; وائل قصاص

148 Inputs for any function
The inputs for a function could be: constants: x=sqrt( 9); Variables x=sqrt(y); Expression x=sqrt(y+3*z); Or even another function x=sqrt(ceil(y/3)); This is valid for library functions , and user defined functions also وائل قصاص

149 Scope of variables with functions
#include <iostream.h> int x=10; // global variables int f1(int); void f2(int); int f3(void); // int f3(); void main(void) {cout<<x<<endl; int x=15; cout<<x<<endl; cout<<::x<<endl; for (int i=1;i<3;i++) { int x=5; int y=x+::x; cout<<y<<" "<<x<<" "<<::x<<endl; } cout<<f1(x)<<endl; وائل قصاص

150 cout<<x<<endl; int x=13; f2(x);
int f1(int a) { cout<<x<<endl; int x=13; f2(x); cout<<::x<<endl; return x+a; } void f2(int b) {cout<<x<<endl; x=x-b; وائل قصاص

151 Aliasing #include<iostream.h> int main() { int x; int &y=x; x=5;
int &z=y; cout<<x<<"\t"<<y<<"\t"<<z<<endl; y=7; y=x+z-3; return 0; } وائل قصاص

152 Call By value & call By reference
#include <iostream.h> int square(int); void main() { int x,y; cout<<"Enter a number "; cin>>x; y=square(x); cout<<x<<" squared is "<<y<<endl; } int square(int a) // call by value a=a*a; return a; } وائل قصاص

153 #include <iostream.h> void square(int &); void main() { int x;
cout<<"Enter a number "; cin>>x; cout<<x<<" squared is "; square(x); cout<<x<<endl; } void square(int & a) // call by reference a=a*a; وائل قصاص

154 #include<iostream.h> void read_two_numbers(int &,int &);
void main() {int x,y; read_two_numbers (x,y); cout<<x<<" "<<y<<endl; } void read_two_numbers (int & a,int &b) { cout<<"Enter two numbers please " cin>>a>>b; وائل قصاص

155 Static variables and default arguments
#include <iostream.h> void f(int x=10 ); void main() { f(); f(5); f(7); } void f(int x) {static int abc=17; abc++; cout<<abc<<"\t"<<x<<endl; وائل قصاص

156 Recursive functions Factorial Febonacci series Sum between X, Y
وائل قصاص

157 Recursive fact #include <iostream.h> int fact(int); void main()
{ int x; cout<<"Enter a number to calculate its factorial "; cin>>x; cout<<x<<"! = "<<fact(x)<<endl; } int fact(int n) if (n==1) return 1; else return n*fact(n-1); Recursive fact وائل قصاص

158 Recursive fact #include <iostream.h> int fact(int); void main()
{ int x; cout<<"Enter a number to calculate its factorial "; cin>>x; cout<<x<<"! = "<<fact(x)<<endl; } int fact(int n) if (n==1) {cout<<"Now returning fact 1\n"; return 1; else {cout<<"Now calling fact "<<n-1<<endl; return n*fact(n-1); Recursive fact وائل قصاص

159 #include <iostream.h> int fact(int); void main() { int x;
cout<<"Enter a number to calculate its factorial "; cin>>x; cout<<x<<"! = "<<fact(x)<<endl; } int fact(int n) if (n==1) {cout<<"Now returning fact 1\n"; return 1; else {cout<<"Now calling fact "<<n-1<<endl; int m= n*fact(n-1); cout<<"Returning "<<n<<"!="<<m<<endl; return m; وائل قصاص

160 Feb(n)=feb(n-1)+feb(n-2)
وائل قصاص

161 #include <iostream.h> int feb(int); void main() { int x;
cout<<"Enter a number to calculate its febonacci "; cin>>x; cout<<"Feb("<<x<<") = "<<feb(x)<<endl; } int feb(int n) if (n==0) return 0; else if (n==1) return 1; return feb(n-1)+feb(n-2); وائل قصاص

162 #include <iostream.h> int feb(int); void main() { int x;
cout<<"Enter a number to calculate its febonacci "; cin>>x; cout<<feb(x)<<endl; } int feb(int n){ if (n==0) return 0; else if (n==1) return 1; return feb(n-1)+feb(n-2); وائل قصاص

163 Febonacci using for #include <iostream.h> int feb(int);
void main() { int x; cout<<"Enter a number to calculate its febonacci "; cin>>x; cout<<feb(x)<<endl; } int feb(int n){ int fn_2=0; int fn_1=1; int fn; for(int i=2;i<=n;i++) {fn=fn_2+fn_1; fn_2=fn_1; fn_1=fn; return fn; Febonacci using for وائل قصاص

164 Sum of numbers from 1 to n #include <iostream.h> int sum(int);
void main() { int x; cout<<"Enter a number to calculate the sum "; cin>>x; cout<<"Sum of the series "<<sum(x)<<endl; } int sum(int n) if (n==1) return 1; else return n+sum(n-1); وائل قصاص

165 Write a function that returns the sum of numbers from X to Y
Write a function that returns the sum of numbers from X to Y. The function should calculate the sum recursively ∑ i = y+ ∑ i y y-1 i=x i=x وائل قصاص

166 Sum of numbers from X to Y
#include <iostream.h> int sum(int,int); void main() { int x,y; cout<<"Enter two numbers to calculate the sum "; cin>>x>>y; cout<<"Sum of the series "<<sum(x,y)<<endl; } int sum (int a, int b) if (a==b) return b; else return b+sum(a,b-1); وائل قصاص

167 Array One Dimensional array Two Dimensional array
Array is a set of adjacent memory locations of the same data type. All of them have one name, which is the array name. each location has subscript number started by zero. One Dimensional array Data_Type array_name[How many elements] ; Two Dimensional array Data_Type array_name[#Rows][#Columns] ; وائل قصاص

168 One Dimensional array int List[5];
List[0] List[1] list[2] list[3] list[4] Print Elements for(i=0; i<5; i++) cout<<List[i]; Read Elements List[0] = 100; List[1] = 30; List[2] = 10; List[3] = -20; List[4] = 5; وائل قصاص

169 Definitions and initial values
int X[4]={4,2,3,1}; int A[10]={0}; int B[100]={1}; int C[7]={1,2,6}; int d[5]; int E[ ]={4,6,2}; وائل قصاص

170 Not accepted Statements
int A[4]={4,2,4,5,2}; int E[ ]; int n=5; int X[n]; Corrected by: const int n=5; وائل قصاص

171 #include <iostream.h> void main() {
int A[5] = {10,20,15,100,30}; for (int i=0; i<5; i++) cout<<A[i]<<'\t'; for (i=0; i<5; i++) { cout<<"\nPlease Enter A["<<i<<"]:"; cin>>A[i]; } for (i=0; i<5; i++) cout<<endl; } وائل قصاص

172 #include <iostream.h> void main() {
int A[5] = {10,20,15,100,30}; for (int i=0; i<5; i++) cout<<A[i]<<'\t'; for (i=0; i<5; i++) { cout<<"\nPlease Enter A["<<i<<"]:"; cin>>A[i]; } for (i=0; i<5; i++) cout<<endl; } وائل قصاص

173 #include <iostream.h> void main() {
const int Size = 10; char KeyBSym[Size]={ ')', '!', '#', '$', '%', '^', '&', '*', '(' }; for (int i=0; i<Size; i++) cout<<"Shift + number "<<i<<" Give Symbol "<<KeyBSym[i]<<endl; } وائل قصاص

174 #include <iostream.h> const int S = 10; void main() { int A[S];
for(int i=0; i<S; i++) { cout<<"\nEnter A["<<i<<"]:"; cin>>A[i]; } int PositiveSum = 0, EvenSum = 0, Gthan10_Count = 0; for (i=0; i<S; i++) { if (A[i]>0) PositiveSum += A[i]; if (A[i]%2 == 0) EvenSum += A[i]; if (A[i]>10) Gthan10_Count++; } cout<<"\nSummation of positive Elements: "<<PositiveSum; cout<<"\nSummation of Even Elements: "<<EvenSum; cout<<"\n# Element, which are greater than 10: "<<Gthan10_Count; cout<<endl; وائل قصاص

175 #include <iostream.h> const int S = 10; void main() { int A[S];
for(int i=0; i<S; i++) { cout<<"\nEnter A["<<i<<"]:"; cin>>A[i]; } long Even_Position_Mul = 1, Odd_Position_Mul = 1; for (i=0; i<S; i++) if(i%2==0) Even_Position_Mul *= A[i]; else Odd_Position_Mul *=A[i]; cout<<"\nMultiplication of elements at Even position: "<<Even_Position_Mul; cout<<"\nMultiplication of elements at Odd position: "<<Odd_Position_Mul; cout<<endl; } وائل قصاص

176 Find the Maximum element
#include <iostream.h> const int Size = 10; void main() { int Vector[Size]; for(int i=0; i<Size; i++) cin>>Vector[i]; for(i=0; i<Size; i++) cout<<Vector[i]<<'\t'; cout<<endl; int Max = Vector[0]; for(i=1; i<Size; i++) if (Max<Vector[i]) Max=Vector[i]; cout<<"\nMax= "<<Max<<endl; } وائل قصاص

177 Search #include <iostream.h> const int Size = 10; void main() {
int Vector[Size]; for(int i=0; i<Size; i++) cin>>Vector[i]; cout<<endl; int Element; cout<<"What is the element that you looking for"; cin>>Element; bool Found = false; for(i=0; i<Size; i++) if(Element = = Vector[i]){ Found = true; break; } if (Found) cout<<Element<<" Found at position "<<i<<endl; else cout<<Element<<" is not in the array \n";} وائل قصاص

178 Another version of search example
#include <iostream.h> const int Size = 10; void main() { int Vector[Size]; for(int i=0; i<Size; i++) cin>>Vector[i]; cout<<endl; int Element; cout<<"What is the element that you are looking for: "; cin>>Element; bool Found = false; for(i=0; i<Size; i++) if(Element == Vector[i]){ cout<<Element<<" is found at position "<<i<<endl; Found=true; } if (!Found) cout<<Element<<" is not in the array \n"; } وائل قصاص

179 Sort the elements: #include <iostream.h> const int Size = 5;
void main() { int Vector[Size]; for(int i=0; i<Size; i++) cin>>Vector[i]; for(i=0; i<Size; i++) cout<<Vector[i]<<'\t'; cout<<endl; for(i=0; i<Size - 1; i++) for(int j=i+1; j<Size; j++) if (Vector[i]>Vector[j]) { int Temp = Vector[i]; Vector[i] = Vector[j]; Vector[j] = Temp;} cout<<endl; } وائل قصاص

180 build a swap function function
void swap(int & x,int & y) { int temp; temp=x; x=y; y=temp; } وائل قصاص

181 Bubble sort using the swap function
#include <iostream.h> void swap(int &,int &); const int Size = 5; void main() { int Vector[Size]; for(int i=0; i<Size; i++) cin>>Vector[i]; for(i=0; i<Size - 1; i++) for(int j=i+1; j<Size; j++) if (Vector[i]>Vector[j]) swap(Vector[i],Vector[j]); for(i=0; i<Size; i++) cout<<Vector[i]<<'\t'; cout<<endl; } void swap(int & x,int & y) { int temp; temp=x; x=y; y=temp; } Bubble sort using the swap function وائل قصاص

182 Arrays and Call by reference
We can’t return the array using return statement. We need to use the call by reference technique. BUT when passing an array to a function, it is sent as call by reference. No need to declare it as int &[ ] وائل قصاص

183 Write a function that return the sum of an array
#include <iostream.h> int Arr_Sum(int [ ],int); void main( ) { int A[5]={2,3,4,5,6}; int B[4]={5,3,1,7}; cout<<"The sum of A is "<<Arr_Sum(A,5)<<endl; cout<<"The sum of B is "<<Arr_Sum(B,4)<<endl; } int Arr_Sum(int x[ ],int size) {int S=0; for(int i=0;i<size;i++) S=S+x[ i ]; return S; وائل قصاص

184 Functions to Read and print arrays
#include <iostream.h> void Arr_read(int [ ],int); void Arr_print(int[ ],int); void main(){ int A[5]; int B[4]; Arr_read(A,5); Arr_read(B,4); Arr_print(A,5); Arr_print(B,4);} void Arr_read(int x[ ],int size) { for(int i=0;i<size;i++) {cout<<"Enter a number please "; cin>>x[i];} } void Arr_print(int x[ ],int size) {for(int i=0;i<size;i++) cout<<x[i]<<" "; cout<<endl; Functions to Read and print arrays وائل قصاص

185 Function to calculate the sum of two arrays
#include <iostream.h> void sum(int [ ],int [ ],int[ ],int); void main() { int a[4]={4,3,2,1}; int b[4]={2,2,4,4}; int c[4]; sum(a,b,c,4); Arr_print(c,4); } void sum(int x[ ],int y[ ],int z[ ],int s) for (int i=0;i<s;i++) z[i]=x[i]+y[i]; وائل قصاص

186 cout statement with setw( )
#include <iostream.h> #include <iomanip.h> void main() { for(int i=1; i<= 5;i++) // without using setw( ) cout<<i<<" "<<i*i<<" "<<i*i*i<<endl; cout<<endl; for(i=1; i<= 5;i++) // with using setw( ) cout<<setw(4)<<i<<setw(4)<<i*i<<setw(4)<<i*i*i<<endl; } وائل قصاص

187 Strings #include <iostream.h> void main() { char n[10];
char a[10]={'A','h','m','e','d'}; for(int i=0; a[i]!=0 ; i++) cout<<a[i]<<endl; cout<<endl; } وائل قصاص

188 Q1 in the exam #include <iostream.h> void main() { int a[4][3];
for(int i=0;i<4;i++) for(int j=0;j<3;j++) { cout<<"Enter a number "; cin>>a[i][j]; } for(int k=0;k<3;k++) int s=0; for(int m=0;m<4;m++) s=s+a[m][k]; cout<<s<<endl; وائل قصاص

189 Two Dimensional array int Matrix[3][4];
30 1 2 Assign values to Elements Matrix[0][1] = 30; Matrix[1][0] = 100; Matrix[1][2] = 10; Matrix[2][3] = -20; Matrix[2][0]=Matrix[1][2]; Print Elements for(i=0; i<3; i++){ for(j=0; j<4; j++) cout<<Matrix[i][j]<<"\t"; cout<<endl; } وائل قصاص

190 int A[2][3] = { {1 ,2 , 3 }, {10,20,30}}; int Matrix[3][4]= {{0,30 },
{100,0,10}, {0,0,0,-20}}; وائل قصاص

191 #include <iostream.h> void main() {
int A[2][3] = {{1,2,3},{10,20,30}}; int B[2][3] = {100,200,300,40,50,60}; int C[2][3] = {{15,25},{105,205}}; for( int i=0; i<2; i++){ for( int j=0; j<3; j++) cout<<A[i][j]<<'\t'; cout<<endl; } cout<<endl; for( i=0; i<2; i++){ cout<<B[i][j]<<'\t'; cout<<C[i][j]<<'\t'; } وائل قصاص

192 #include <iostream.h> const int Rows = 3, Columns = 4;
void main() { int A[Rows][Columns]; for (int i=0; i<Rows; i++) for (int j=0; j<Columns; j++) { cout<<"\nEnter A["<<i<<"]["<<j<<"]:"; cin>>A[i][j]; } for (i=0; i<Rows; i++){ for(int j=0; j<Columns; j++) cout<<A[i][j]<<'\t'; cout<<endl; } } وائل قصاص

193 Find The sum of 2-D arrays using functions`
#include <iostream.h> int A_sum(int [ ][2],int); void main(){ int x[3][2]={6,5,4,3,2,1}; int y[4][2]={5,4,3,2,3,4,1}; cout<<"The sum of the array x is " <<A_sum(x,3)<<endl; cout<<"The sum of the array y is " <<A_sum(y,4)<<endl; } int A_sum(int a[ ][2],int r) { int s=0; for(int i=0;i<r;i++) for(int j=0;j<2;j++) s=s+a[i][j]; return s; Find The sum of 2-D arrays using functions` وائل قصاص

194 Diagonal Summation #include <iostream.h>
const int Rows = 4, Columns = 4; void main() { int A[Rows][Columns]; for (int i=0; i<Rows; i++) for (int j=0; j<Columns; j++) { cout<<"\nEnter A["<<i<<"]["<<j<<"]:"; cin>>A[i][j]; } int DSum = 0; for (i=0; i<Rows; i++) DSum += A[i][i]; cout<<"Diagonal Sum = "<<DSum<<endl; } وائل قصاص

195 Inverse Diagonal Summation
#include <iostream.h> const int Rows = 4, Columns = 4; void main() { int A[Rows][Columns]; for (int i=0; i<Rows; i++) for (int j=0; j<Columns; j++) { cout<<"\nEnter A["<<i<<"]["<<j<<"]:"; cin>>A[i][j]; } int DSum = 0; for (i=0; i<Rows; i++) for (int j=0; j<Columns; j++) if ( i+j= = 3) DSum += A[i][j]; cout<<"Diagonal Sum = "<<DSum<<endl; } وائل قصاص

196 Lower Triangular Multiplication
#include <iostream.h> const int Rows = 4, Columns = 4; void main() { int A[Rows][Columns]; for (int i=0; i<Rows; i++) for (int j=0; j<Columns; j++) { cout<<"\nEnter A["<<i<<"]["<<j<<"]:"; cin>>A[i][j]; } long LTmul = 1; for (i=1; i<Rows; i++) for(int j=0; j<i; j++) LTmul *= A[i][j]; cout<<"Lower Traingular Mul = "<<LTmul<<endl; } وائل قصاص

197 Lower Triangular Multiplication
#include <iostream.h> const int Rows = 4, Columns = 4; void main() { int A[Rows][Columns]; for (int i=0; i<Rows; i++) for (int j=0; j<Columns; j++) { cout<<"\nEnter A["<<i<<"]["<<j<<"]:"; cin>>A[i][j]; } long LTmul = 1; for (i=0; i<Rows; i++) for(int j=0; j<Columns,; j++) if (i>j) LTmul *= A[i][j]; cout<<"Lower Traingular Mul = "<<LTmul<<endl; } وائل قصاص

198 Write a Program that copies an array to another
#include <iostream.h> const int R = 4, C= 3; void main() { int A[R][C]; int B[R][C]; for (int i=0; i<R; i++) for (int j=0; j<C; j++) { cout<<"\nEnter A["<<i<<"]["<<j<<"]:"; cin>>A[i][j]; } for (i=0 ;i<R;i++) for(int j=0;i<C;j++) B[i][j]=A[i][j]; for (i=0; i<R; i++){ for(int j=0; j<C; j++) cout<<B[i][j]<<'\t'; cout<<endl; } } وائل قصاص

199 Write a function that copies a 2-D array to another
void copyA(int x[ ][3],int y[ ][3],int r) { for(int i=0;i<r;i++) for(int j=0;j<3;j++) y[i][j]=x[i][j]; } وائل قصاص

200 Write a Program that copies an array to another
#include <iostream.h> const int R = 4, C= 3; void main() { int A[R][C]; int B[R][C]; for (int i=0; i<R; i++) for (int j=0; j<C; j++) { cout<<"\nEnter A["<<i<<"]["<<j<<"]:"; cin>>A[i][j]; } copyA(A,B,4); for (i=0; i<R; i++){ for(int j=0; j<C; j++) cout<<B[i][j]<<'\t'; cout<<endl; } } وائل قصاص

201 Store the following symbols in the array Symbol.
* $ $ $ # * $ $ # # * $ #include <iostream.h> const int Rows = 4, Columns = 4; void main() { char Symbol[Rows][Columns]; for (int i=0; i<Rows; i++) for (int j=0; j<Columns; j++) if (i == j) Symbol[i][j] = '*'; else if (i > j) Symbol[i][j] = '#'; else Symbol[i][j] = '$'; for (i=0; i<Rows; i++){ for(int j=0; j<Columns; j++) cout<<Symbol[i][j]; cout<<endl; } } # # # * وائل قصاص

202 Matrix Matrix Summation
#include <iostream.h> const int Rows = 4, Columns = 4; void main() { int A[Rows][Columns], B[Rows][Columns], C[Rows][Columns]; cout<<"\nEnter Matrix A elements:\n"; for (int i=0; i<Rows; i++) for( int j=0; j<Columns; j++) cin>>A[i][j]; cout<<"\nEnter Matrix B elements:\n"; for (i=0; i<Rows; i++) cin>>B[i][j]; for(i=0; i<Rows; i++) for(int j=0; j< Columns; j++) C[i][j] = A[i][j] + B[i][j]; for(i=0; i<Rows; i++){ for(int j=0; j<Columns; j++) cout<<C[i][j]<<'\t'; cout<<endl; } } وائل قصاص

203 Write a function to add two Arrays
void add(int x[ ][4],int y[ ][4],int z[ ][4],int r) { } وائل قصاص

204 Compute the average for 5 marks for 10 students
int marks [10][5]; for(int i=0;i<10;i++) for(int j=0;j<5;j++) { cout<<"Enter mark"<<j+1<<" for student"<<i+1; cin>>marks[i][j];} float av[10]; for(i=0;i<10;i++) { float sum=0; sum=sum+marks[i][j]; av[i]=sum/5;} printing…… وائل قصاص

205 for(int i=0;i<3;i++) for(int j=0;j<4;j++) cin>>A[i][j];
int A[3][4], B[4][3]; for(int i=0;i<3;i++) for(int j=0;j<4;j++) cin>>A[i][j]; for(i=0;i<3;i++) B[ j][i]=A[i][j] Printing B …….. وائل قصاص

206 Function to calculate the Transpose of an array 3x4
void trans34(int x[3][4],int y[4][3]) { for(int r=0;r<3;r++) for(int c=0;c<4;c++) y[c][r]=x[r][c]; } وائل قصاص

207 Homework 1- Write program to compute and print the result of Matrix A[n][n] multiplied by Matrix B[n][n] and store the result within Matrix C[n][n]. 2- Write program to Compute and print the result of Matrix A[n][n] multiplied by Vector V[n] and store the result within Vector C[n]. وائل قصاص

208 Second exam topics 1- do-while statement. 2- nested for loop
3- nested while statement 4- math library functions. 5- functions prototype and definitions. 6- rand () and srand() functions 7- scope rules (local, global and static variables) 8- Recursion 9- call by value and reference 10- Inline function 11- :: scope resolution operator. 12- one dim array only ( definition and passing one dim array to a function). وائل قصاص

209 Strings #include <iostream.h> void main() { char n[10];
char a[10]={'A','h','m','e','d'}; for(int i=0; i<5 ; i++) cout<<a[i]<<endl; } وائل قصاص

210 #include <iostream.h> void main() {
char a[10]={'I','b','r','a','h','e','e','m‘}; for(int i=0; a[i]!=0 ; i++) cout<<a[i]<<endl; } وائل قصاص

211 #include <iostream.h> void main() {
char a[10]={'A','h','m','e','d'}; for(int i=0; a[i]!=0 ; i++) {for(int j=0;j<i;j++) cout<<" "; cout<<a[i]<<endl; } وائل قصاص

212 #include <iostream.h> void main() { char a[10]="Ahmed";
for(int i=0; a[i]!=0 ; i++) {for(int j=0;j<i;j++) cout<<" "; cout<<a[i]<<endl; } وائل قصاص

213 #include <iostream.h> void main() { char a[10];
cout<<"Enter a name : "; cin>>a; cout<<a<<endl; for(int i=0; a[i]!=0 ; i++) {for(int j=0;j<i;j++) cout<<' '; cout<<a[i]<<endl; } وائل قصاص

214 #include <iostream.h> void main() { char a[10]; char b[10];
cout<<"Enter ur first name : "; cin>>a; cout<<"Enter ur second name : "; cin>>b; cout<<"Hello "<<a<<" "<<b<<endl; for(int i=0; a[i]!=0 ; i++) {for(int j=0;j<i;j++) cout<<' '; cout<<a<<endl; } وائل قصاص

215 #include <iostream.h> void main() { char a[10];
cout<<"Enter a name : "; cin>>a; cout<<a<<endl; for(int i=0; a[i]!=0 ; i++) {for(int j=0;j<i;j++) cout<<' '; } cout<<i<<endl; وائل قصاص

216 Final exam question Write a function that returns the length of a string or array of characters. The function prototype is int length(char[ ]); وائل قصاص

217 int length(char name[ ]) { for(int i=0;name[i]!=0;i++) ; return i; }
وائل قصاص

218 Ex: Write a program that prints the name inversed( from the last char to the first character
#include <iostream.h> void main() { char name[10]; cout<<"Enter ur name : "; cin>>name; for(int i=0; name[i]!=‘\0’ ; i++); for(int j=i-1;j>=0;j--) cout<<name[j]; cout<<endl; } وائل قصاص

219 Chapter 5 - Pointers and Strings
Outline 5.1 Introduction 5.2 Pointer Variable Declarations and Initialization 5.3 Pointer Operators 5.4 Calling Functions by Reference 5.7 Pointer Expressions and Pointer Arithmetic 5.8 The Relationship Between Pointers and Arrays 5.9 Arrays of Pointers 5.12 Introduction to Character and String Processing Fundamentals of Characters and Strings String Manipulation Functions of the String-handling Library وائل قصاص

220 5.1 Introduction Pointers Powerful, but difficult to master
Simulate call-by-reference Close relationship with arrays and strings وائل قصاص

221 5.2 Pointer Variable Declarations and Initialization
Pointer variables Contain memory addresses as their values Normal variables contain a specific value (direct reference) Pointers contain the address of a variable that has a specific value (indirect reference) Indirection Referencing a pointer value Pointer declarations * indicates variable is a pointer int *myPtr; declares a pointer to an int, a pointer of type int * Multiple pointers require multiple asterisks int *myPtr1, *myPtr2; count 7 count 7 countPtr وائل قصاص

222 5.2 Pointer Variable Declarations and Initialization
Can declare pointers to any data type Pointers initialization Initialized to 0, NULL, or an address 0 or NULL points to nothing وائل قصاص

223 5.3 Pointer Operators & (address operator)
Returns the address of its operand Example int y = 5; int *yPtr; yPtr = &y; // yPtr gets address of y yPtr "points to" y yPtr y 5 yptr 500000 600000 address of y is value of yptr وائل قصاص

224 5.3 Pointer Operators * (indirection/dereferencing operator)
Returns the value of what its operand points to *yPtr returns y (because yPtr points to y). * can be used to assign a value to a location in memory *yptr = 7; // changes y to 7 Dereferenced pointer (operand of *) must be an lvalue (no constants) * and & are inverses Cancel each other out *&myVar == myVar and &*yPtr == yPtr وائل قصاص

225 ---------- 10 ---------- ---------- 12FF7C ----------
Pointer Pointer is a memory location, which contains a memory address of another memory location, which belong to a variable. We say that the pointer points to the variable. FF7C 12FF7C 12FB8D a ptr #include <iostream.h> void main() { int a = 10; int *ptr = &a; cout<<ptr<<endl; cout<<&a<<endl; cout<<*ptr<<endl; cout<<a<<endl; } وائل قصاص

226 Pointers #include <iostream.h> void main() { int x=5;
int* y; // pointer to an integer y=&x; cout<<x<<endl<<&x<<endl; cout<<y<<endl<<*y<<endl; } وائل قصاص

227 2 // Using the & and * operators 3 #include <iostream> 4
1 // Fig. 5.4: fig05_04.cpp 2 // Using the & and * operators 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 8 int main() 9 { 10 int a; // a is an integer 11 int *aPtr; // aPtr is a pointer to an integer 12 13 a = 7; 14 aPtr = &a; // aPtr set to address of a 15 16 cout << "The address of a is " << &a << "\nThe value of aPtr is " << aPtr; 18 19 cout << "\n\nThe value of a is " << a << "\nThe value of *aPtr is " << *aPtr; 21 22 cout << "\n\nShowing that * and & are inverses of" << " each other.\n&*aPtr = " << &*aPtr << "\n*&aPtr = " << *&aPtr << endl; 25 return 0; 26 } وائل قصاص

228 Output The address of a is 006AFDF4 The value of aPtr is 006AFDF4
The value of a is 7 The value of *aPtr is 7 Showing that * and & are inverses of each other. &*aPtr = 006AFDF4 *&aPtr = 006AFDF4 وائل قصاص

229 Example 1 #include <iostream.h> void main( ) {
int a = 10, b = 20; int *ptr_a, *ptr_b; ptr_a = &a; ptr_b = &b; cout<<"a="<<*ptr_a<<"b="<<*ptr_b<<endl; a += 10; b += 20; ++*ptr_a; ++*ptr_b; cout<<"a="<<a<<"b="<<b<<endl; ptr_a = ptr_b; cout<<"b="<<*ptr_a<<endl; } وائل قصاص

230 Example 2 (String) #include <iostream.h> void main() {
----- A H m a d L i St_name #include <iostream.h> void main() { char *St_name; St_name = "Ahmad Ali"; cout<<endl<<St_name<<endl; } وائل قصاص

231 Example 3 (String) #include <iostream.h> void main() {
----- A H m a d L i St_name[0] St_name[1] St_name[2] St_name[3] St_name[4] St_name[5] St_name[6] St_name[7] St_name[8] #include <iostream.h> void main() { char St_name[20]; cout<<"Please enter your name: "; cin.getline(St_name,20,'\n'); cout<<endl<<St_name<<endl; } وائل قصاص

232 Example 4 (array name is a static pointer)
----- F1 1.2 2.2 3.2 4.2 5.2 Vector ptr Vactor[0] Vactor[1] Vactor[2] Vactor[3] Vactor[4] B1 B2 F1 F2 F3 F4 F5 #include <iostream.h> void main() { float Vector[5] = {3.2, 2.2, 6.2, 4.2, 9.2}; float *ptr; ptr = Vector; // ptr=&Vector[0]; for (int i=0; i<5; i++) { cout<<"\n"<<*ptr; ++ptr; } } وائل قصاص

233 5.4 Calling Functions by Reference
Call by reference with pointer arguments Pass address of argument using & operator Allows you to change actual location in memory Arrays are not passed with & because the array name is already a pointer * operator used as alias/nickname for variable inside of function void doubleNum( int *number ) { *number = 2 * ( *number ); } *number used as nickname for the variable passed in When the function is called, must be passed an address doubleNum( &myNum ); وائل قصاص

234 2 // Cube a variable using call-by-reference
1 // Fig. 5.7: fig05_07.cpp 2 // Cube a variable using call-by-reference 3 // with a pointer argument 4 #include <iostream> 5 6 using std::cout; 7 using std::endl; 8 9 void cubeByReference( int * ); // prototype 10 11 int main() 12 { 13 int number = 5; 14 15 cout << "The original value of number is " << number; 16 cubeByReference( &number ); 17 cout << "\nThe new value of number is " << number << endl; 18 return 0; 19 } 20 21 void cubeByReference( int *nPtr ) 22 { 23 *nPtr = *nPtr * *nPtr * *nPtr; // cube number in main 24 } وائل قصاص

235 The original value of number is 5 The new value of number is 125
وائل قصاص

236 5.7 Pointer Expressions and Pointer Arithmetic
Increment/decrement pointer (++ or --) Add/subtract an integer to/from a pointer( + or += , - or -=) Pointers may be subtracted from each other Pointer arithmetic is meaningless unless performed on an array 5 element int array on a machine using 4 byte ints vPtr points to first element v[ 0 ], which is at location 3000 vPtr = 3000 vPtr += 2; sets vPtr to 3008 vPtr points to v[ 2 ] pointer variable vPtr v[0] v[1] v[2] v[4] v[3] 3000 3004 3008 3012 3016 location وائل قصاص

237 cout<<*vp<<endl; cout<<*(vp+2)<<endl; vp+=2;
void main( ) { int v[5]={4,2,7,3,10}; int *vp; vp=&v[0]; cout<<*vp<<endl; cout<<*(vp+2)<<endl; vp+=2; cout<<*vp; } وائل قصاص

238 cout<<*(vp++)<<endl; }
void main( ) { int v[5]={5,2,7,3,10}; int *vp; vp=&v[0]; for(i=0;i<5;i++) cout<<*(vp++)<<endl; } وائل قصاص

239 vp=v; // v is a pointer to v[0] for(i=0;i<5;i++)
void main( ) { int v[5]={5,2,7,3,10}; int *vp; vp=v; // v is a pointer to v[0] for(i=0;i<5;i++) cout<<*(vp++)<<endl; } وائل قصاص

240 5.7 Pointer Expressions and Pointer Arithmetic
Subtracting pointers Returns the number of elements between two addresses vPtr2 = v[ 2 ]; vPtr = v[ 0 ]; vPtr2 - vPtr == 2 Pointer comparison Test which pointer points to the higher numbered array element Test if a pointer points to 0 (NULL) if ( vPtr == ‘0’ ) statement وائل قصاص

241 5.7 Pointer Expressions and Pointer Arithmetic
Pointers assignment If not the same type, a cast operator must be used Exception: pointer to void (type void *) Generic pointer, represents any type No casting needed to convert a pointer to void pointer void pointers cannot be dereferenced وائل قصاص

242 5.8 The Relationship Between Pointers and Arrays
Arrays and pointers closely related Array name like constant pointer Pointers can do array subscripting operations Having declared an array b[ 5 ] and a pointer bPtr bPtr is equal to b bptr == b bptr is equal to the address of the first element of b bptr == &b[ 0 ] وائل قصاص

243 5.8 The Relationship Between Pointers and Arrays
Accessing array elements with pointers Element b[ n ] can be accessed by *( bPtr + n ) Called pointer/offset notation Array itself can use pointer arithmetic. b[ 3 ] same as *(b + 3) Pointers can be subscripted (pointer/subscript notation) bPtr[ 3 ] same as b[ 3 ] وائل قصاص

244 Arrays and Pointers #include<iostream.h> void main( ) {
int a[10]={1,5, 7, 4, 3, 2, 8, 9, 11, 12}; int *p; p = a; for (int i=0; i<10; i++) cout<<a[i]<<endl; // الطريقة التقليدية لطباعة المصفوفة cout<<endl; for (i=0; i<10; i++) { cout<<*p<<endl; // طريقة لطباعة المصفوفة عن باستخدام العناوين p++; } } وائل قصاص

245 #include<iostream.h> void main( ) {
int a[10]={1,5, 7, 4, 3, 2, 8, 9, 11, 12}; int *p; p = a; for (int i=0; i<10; i++) cout<<a[i]<<endl; cout<<endl; for (i=0; i<10; i++) cout<<*(p+i)<<endl; // نفس المثال السابق ولكن بدون تعديل قيمة المؤشر } وائل قصاص

246 Example 2: Write a program to compare two arrays if they are equivalent or not.
#include <iostream.h> void main( ) {int a[5]={1, 3, 5, 7, 9}; int b[5]={1, 3, 5, 8, 9}; bool flag=true; for (int i=0; i<5; i++) { if (*(a+i)!=*(b+i)) // تكافئ if(a[i] != b[i]) { flag = false; break; } } if (flag) cout<<"Two arrays are equivalent "; else cout<<"Two arrays are not equivalent"; وائل قصاص

247 Difference between arrays of char and arrays of int
#include <iostream.h> void main() { char a[10]="Ahmad"; // prints Ahmed cout<<a<<endl; int b[10]={1,2,3,4,5}; cout<<b<<endl; // prints the address of //the first element in the array } وائل قصاص

248 #include <iostream.h> void main() {
char a[10]="Ahmad"; // prints Ahmed cout<<a<<endl; int b[10]={1,2,3,4,5}; cout<<b<<endl; // prints the address of //the first element in the array int x=5; int* y; // pointer to an integer y=&x; cout<<x<<endl<<&x<<endl; cout<<y<<endl<<*y<<endl; } وائل قصاص

249 5.9 Arrays of Pointers Arrays can contain pointers
Commonly used to store an array of strings char *suit[ 4 ] = {"Hearts", "Diamonds", "Clubs", "Spades" }; Each element of suit is a pointer to a char * (a string) The strings are not in the array, only pointers to the strings are in the array suit array has a fixed size, but strings can be of any size suit[3] suit[2] suit[1] suit[0] ’H’ ’e’ ’a’ ’r’ ’t’ ’s’ ’\0’ ’D’ ’i’ ’m’ ’o’ ’n’ ’d’ ’C’ ’l’ ’u’ ’b’ ’S’ ’p’ وائل قصاص

250 5.12.1 Fundamentals of Characters and Strings
Character constant Integer value of a character Single quotes 'z' is the integer value of z, which is 122 String Series of characters treated as one unit Can include letters, digits, special characters +, -, * ... String literal (string constants) Enclosed in double quotes, for example: "I like C++" Array of characters, ends with null character '\0' Strings are constant pointers (like arrays) Value of string is the address of its first character وائل قصاص

251 5.12.1 Fundamentals of Characters and Strings
String assignment Character array: char color[] = "blue"; Creates 5 element char array, color, (last element is '\0') variable of type char * char *colorPtr = "blue"; Creates a pointer to string "blue", colorPtr, and stores it somewhere in memory وائل قصاص

252 5.12.1 Fundamentals of Characters and Strings
Reading strings Assign input to character array word[ 20 ] cin >> word Reads characters until whitespace or EOF String could exceed array size cin >> setw( 20 ) >> word; Reads 19 characters (space reserved for '\0') cin.getline Reads a line of text Using cin.getline cin.getline( array, size, delimiter character); وائل قصاص

253 5.12.1 Fundamentals of Characters and Strings
cin.getline Copies input into specified array until either One less than the size is reached The delimiter character is input Example char sentence[ 80 ]; cin.getline( sentence, 80, '\n' ); وائل قصاص

254 5.12.2 String Manipulation Functions of the String-handling Library
String handling library <cstring> provides functions to Manipulate strings Compare strings Search strings Tokenize strings (separate them into logical pieces) ASCII character code Strings are compared using their character codes Easy to make comparisons (greater than, less than, equal to) Tokenizing Breaking strings into tokens, separated by user-specified characters Tokens are usually logical units, such as words (separated by spaces) "This is my string" has 4 word tokens (separated by spaces) وائل قصاص

255 5.12.2 String Manipulation Functions of the String-handling Library
char *strcpy( char *s1, const char *s2 ); Copies the string s2 into the character array s1. The value of s1 is returned. char *strncpy( char *s1, const char *s2, size_t n ); Copies at most n characters of the string s2 into the character array s1. The value of s1 is returned. char *strcat( char *s1, const char *s2 ); Appends the string s2 to the string s1. The first character of s2 overwrites the terminating null character of s1. The value of s1 is returned. char *strncat( char *s1, const char *s2, size_t n ); Appends at most n characters of string s2 to string s1. The first character of s2 overwrites the terminating null character of s1. The value of s1 is returned. int strcmp( const char *s1, const char *s2 ); Compares the string s1 with the string s2. The function returns a value of zero, less than zero or greater than zero if s1 is equal to, less than or greater than s2, respectively. وائل قصاص

256 5.12.2 String Manipulation Functions of the String-handling Library (III)
int strncmp( const char *s1, const char *s2, size_t n ); Compares up to n characters of the string s1 with the string s2. The function returns zero, less than zero or greater than zero if s1 is equal to, less than or greater than s2, respectively. char *strtok( char *s1, const char *s2 ); A sequence of calls to strtok breaks string s1 into "tokens"—logical pieces such as words in a line of text—delimited by characters contained in string s2. The first call contains s1 as the first argument, and subsequent calls to continue tokenizing the same string contain NULL as the first argument. A pointer to the current to­ken is returned by each call. If there are no more tokens when the function is called, NULL is returned. size_t strlen( const char *s ); Determines the length of string s. The number of characters preceding the terminating null character is returned. وائل قصاص

257 String Functions To use string functions we must include the <cstring> library or <string.h> library in the top of the program #include <cstring> String functions that we will cover are: strcpy strncpy strcat Strncat Strcmp Strncmp strlen وائل قصاص

258 Example on strcpy, strncpy
#include <iostream.h> #include<string.h> void main( ) { char x[ ]="Happy Birthday to You"; char y[25]; char z[15]; strcpy(y, x); cout<<x<<" "<<y<<endl; strncpy(z, x,14); z[14]='\0'; // strncpy doesn’t add \0 at the end cout<<z<<endl; } وائل قصاص

259 Output Happy Birthday to You Happy Birthday to You Happy Birthday
Press any key to continue وائل قصاص

260 Example on strcat, strncat
#include <iostream.h> #include<string.h> void main( ) { char s1[20]="Happy"; char s2[ ]="New Year"; char s3[40]=""; // this puts \0 in the whole array cout<<s1<<" "<<s2<<endl; strcat(s1, s2); strncat(s3, s1, 5); cout<<s1<<" "<<s3<<endl; strcat(s3, s1); } وائل قصاص

261 Output Happy New Year HappyNew Year New Year HappyNew Year Happy
HappyNew Year HappyHappyNew Year Press any key to continue وائل قصاص

262 #include <iostream.h> #include<string.h> void main( ) {
char s1[ ]="Happy New Year"; char s2[ ]="Happy New Year"; char s3[ ]="Happy Holidays"; cout<<s1<<"\n"<<s2<<"\n"<<s3<<"\n"; cout<<strcmp(s1, s2)<<"\n" <<strcmp(s1, s3)<<"\n" <<strcmp(s3, s1)<<endl; cout<<strncmp(s1,s3,6)<<"\n" <<strncmp(s1, s3, 7)<<"\n" <<strncmp(s3, s1,7)<<endl; } وائل قصاص

263 Output Happy New Year Happy Holidays 1 -1 Press any key to continue
1 -1 Press any key to continue وائل قصاص


Download ppt "C++ Program A sequence of structured statements written by programmer using C++ language to solve a problem. Using Visual C++ to write your."

Similar presentations


Ads by Google