0% found this document useful (0 votes)
10 views

Lecture C Plus-Arrays

arrays

Uploaded by

wwerazo8
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views

Lecture C Plus-Arrays

arrays

Uploaded by

wwerazo8
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 34

Computer Programming II

Lecture 3: Arrays

Dr. Khari Armih

khari.armih@gmail.com

June 1, 2023

Dr. Khari Armih (khari.armih@gmail.com) Computer Programming II June 1, 2023 1 / 34


Outline
¶ 1D arrays
· Initialization
¸ Access 1D arrays
¹ 2D array
º Passing Array to Function
¼ Lab 3

Dr. Khari Armih (khari.armih@gmail.com) Computer Programming II June 1, 2023 2 / 34


Arrays
• Special variable
– group of variables have one name
• Array can be any type
– e.g. int, float, char ......
• N elements, numbered from 0 to N-1
• The Size can be given as:
– non-negative integer, or
– an expression that evaluates to a non-negative integer
• Arrays in C++
– One-dimensional array (1D)
– Two-dimensional array (2D)

Dr. Khari Armih (khari.armih@gmail.com) Computer Programming II June 1, 2023 3 / 34


1D arrays
• Declaration
type name [size]
– type = data type
– name = name of array
– size = number of elements in the array
• E.g. int ages[];

Dr. Khari Armih (khari.armih@gmail.com) Computer Programming II June 1, 2023 4 / 34


Access 1D array
• Using index

ages[2]= 30;
ages[1]++;
int myAge = ages[0];
cout << ages[3];
cin >> ages[1];

Dr. Khari Armih (khari.armih@gmail.com) Computer Programming II June 1, 2023 5 / 34


Access 1D array
• Using loop

1 int scores [20];


2 for(int i=0; i<20; i++)
3 {
4 scores[i] = i*i;
5 }

Dr. Khari Armih (khari.armih@gmail.com) Computer Programming II June 1, 2023 6 / 34


Array Initialisation
1 int ages[4] = {20,40,25,18};

• ages is associated with an array of int of length


4 where:
ages[0] => 20
ages[1] => 40
ages[2] => 25
ages[3] => 18

Dr. Khari Armih (khari.armih@gmail.com) Computer Programming II June 1, 2023 7 / 34


Example
sumOfAll.cpp
1 #include<iostream>
2 using namespace std;
3 int main()
4 {
5 int grades[7] = {55,87,66,70,77,59,80};
6 int sum = 0;
7

8 for(int i=0; i<7; i++)


9 {
10 sum+=grades[i];
11 }
12 cout << "Sum of the element is " << sum << endl;
13 return 0;
14 }

Dr. Khari Armih (khari.armih@gmail.com) Computer Programming II June 1, 2023 8 / 34


Sample run
Sum of the element is 494

Dr. Khari Armih (khari.armih@gmail.com) Computer Programming II June 1, 2023 9 / 34


Example: sum and average
sumave.c
1 #include<iostream>
2 using namespace std;
3 int main()
4 {
5 int grades[10];
6 int sum;
7 float average;
8 for(int i=0; i<10; i++)
9 {
10 cin >> grades[i];
11 }
12
13 sum = 0;
14 for(int i=0; i<10; i++)
15 {
16 sum = sum + grades[i];
17 }
18 average = sum / 10.0;
19 cout << "Sum: " << sum << endl << "average: " << average;
20 return 0;
21 }

Dr. Khari Armih (khari.armih@gmail.com) Computer Programming II June 1, 2023 10 / 34


Sample run
1
2
3
4
5
6
7
8
9
10
Sum: 55
average: 5.5

Dr. Khari Armih (khari.armih@gmail.com) Computer Programming II June 1, 2023 11 / 34


In-Class Exercise
1 #include<iostream>
2 using namespace std;
3 int main()
4 {
5 int a[5] = {11,22,33,44,55};
6 int b[5];
7 int i = 0;
8 while(i < 5)
9 {
10 b[i] = a[i];
11 i++;
12 }
13 for(i=0; i<5; i++)
14 cout << b[i] << endl;
15 return 0;
16 }
Dr. Khari Armih (khari.armih@gmail.com) Computer Programming II June 1, 2023 12 / 34
Sorting Array

Dr. Khari Armih (khari.armih@gmail.com) Computer Programming II June 1, 2023 13 / 34


Sorting Array
1 #include<iostream>
2 using namespace std;
3 main()
4 {
5 int arr[5];
6 int i,j,temp;
7
8 for(i=0; i<5; i++)
9 cin >> arr[i];
10
11 for(i=0; i<5; i++)
12 {
13 for(j=i+1; j<5; j++)
14 {
15 if(arr[i] > arr[j])
16 {
17 temp = arr[i];
18 arr[i] = arr[j];
19 arr[j] = temp;
20 }
21 }
22 }
23
24 for(i=0; i<5; i++)
25 cout << arr[i] << endl;
26
27 return 0;
28 }

Dr. Khari Armih (khari.armih@gmail.com) Computer Programming II June 1, 2023 14 / 34


Sample run
Input:
5
4
3
2
1
Output:
1
2
3
4
5

Dr. Khari Armih (khari.armih@gmail.com) Computer Programming II June 1, 2023 15 / 34


In-Class Exercise
1 #include<iostream>
2 using namespace std;
3 int main()
4 {
5 int arr1[5], arr2[5];
6 int i,j;
7
8 for(i=0; i<5; i++)
9 {
10 cin >> arr1[i];
11 }
12
13 j = 4;
14 i = 0;
15 while(i<5)
16 {
17 arr2[j] = arr1[i];
18 j--;
19 i++;
20 }
21
22 for(i=0; i<5; i++)
23 {
24 cout << arr2[i] << endl;
25 }
26 return 0;
27 }

Dr. Khari Armih (khari.armih@gmail.com) Computer Programming II June 1, 2023 16 / 34


2D arrays
• Declaration
type name [int1 ][int2 ]

– int1 = rows
– int2 = columns
– name = name of array
– size = number of elements in the array

• e.g. int a[3][3];

Column 0 Column 1 Column 2


Row 0 a[0][0] a[0][1] a[0][2]
Row 1 a[1][0] a[1][1] a[1][2]
Row 2 a[2][0] a[2][1] a[2][2]

Dr. Khari Armih (khari.armih@gmail.com) Computer Programming II June 1, 2023 17 / 34


2D arrays
• Allocate: int a [2][3]
– programmer’s view

Column 0 Column 1 Column 2


Row 0 a[0][0] a[0][1] a[0][2]
Row 1 a[1][0] a[1][1] a[1][2]

– storage for 2D array

Row 0 Row 1
a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2]

Dr. Khari Armih (khari.armih@gmail.com) Computer Programming II June 1, 2023 18 / 34


Array Initialisation
1 int ages[2][3]={20,15,88,50,20,11};

Or
1 int ages[2][3]={{20,15,88},{50,20,11}};

Or
1 ages[0][0] = 20
2 ages[0][1] = 15
3 ages[0][2] = 88
4 ages[1][0] = 50
5 ages[1][1] = 20
6 ages[1][2] = 11

Dr. Khari Armih (khari.armih@gmail.com) Computer Programming II June 1, 2023 19 / 34


Access 2D array
• Accessing elements in 2D array
– name
– index

• ages[2][2]= 30;
• int myAge = ages[0][0];
• cout << ages[1][2];
• cin >> ages[2][1];

Dr. Khari Armih (khari.armih@gmail.com) Computer Programming II June 1, 2023 20 / 34


Iterating Through 2D arrays
• Nested-Loops

1 // rows
2 for(rows=0; rows<no-rows; rows++)
3 {
4 // columns
5 for(columns=0; columns<no_columns; columns++)
6 {
7 // access the elements
8 arr[rows][columns];
9 }
10 }

Dr. Khari Armih (khari.armih@gmail.com) Computer Programming II June 1, 2023 21 / 34


Example: Print 2D Array
1 #include<iostream>
2 using namespace std;
3 int main()
4 {
5 int a[5][2]={{0,1},{2,3},{4,5},{6,7},{8,9}};
6

7 for(int i=0;i<5;i++)
8 {
9 for(int j=0;j<2;j++)
10 {
11 cout <<"a["<<i<<"]["<<j<<"] = "<<a[i][j];
12 }
13 cout << endl;
14 }
15 return 0;
16 }
Dr. Khari Armih (khari.armih@gmail.com) Computer Programming II June 1, 2023 22 / 34
Output
a[0][0]=0 a[0][1]=1
a[1][0]=2 a[1][1]=3
a[2][0]=4 a[2][1]=5
a[3][0]=6 a[3][1]=7
a[4][0]=8 a[4][1]=9

Dr. Khari Armih (khari.armih@gmail.com) Computer Programming II June 1, 2023 23 / 34


Example: Sum and Average
1 #include<iostream>
2 using namespace std;
3 int main()
4 {
5 int a[5][2];
6 int i, j, sum;
7 float ave;
8 for(i=0;i<5;i++)
9 for(j=0;j<2;j++)
10 cin >> a[i][j];
11
12 sum=0;
13 for(i=0;i<5;i++)
14 for(j=0;j<2;j++)
15 sum+=a[i][j];
16
17 ave=sum/10.0;
18 cout<<"Sum = "<<sum<<" Count = "<<10<<" Average = "<<ave;
19 return 0;
20 }
Dr. Khari Armih (khari.armih@gmail.com) Computer Programming II June 1, 2023 24 / 34
In-Class Exercise
1 #include<iostream>
2 using namespace std;
3
4 int main()
5 {
6 int a[5][2];
7 int i,j,sum;
8 float ave;
9 for(i=0;i<5;i++)
10 {
11 for(j=0;j<2;j++)
12 {
13 cout <<"> ";
14 cin >> a[i][j];
15 }
16 }
17
18 for(i=0;i<5;i++)
19 {
20 sum=0;
21 for(j=0;j<2;j++)
22 {
23 sum+=a[i][j];
24 }
25 ave=sum/2.0;
26 cout << "Row("<< i <<"): Sum = " << sum << ", Count =" <<2<< ", Average = " << ave << endl;
27 }
28 return 0;
29 }

Dr. Khari Armih (khari.armih@gmail.com) Computer Programming II June 1, 2023 25 / 34


Output: rows average
>1
>2
>3
>4
>5
>6
>7
>8
>9
>10
Row(0): Sum = 3, Average = 1.500000
Row(1): Sum = 7, Average = 3.500000
Row(2): Sum = 11, Average = 5.500000
Row(3): Sum = 15, Average = 7.500000
Row(4): Sum = 19, Average = 9.500000

Dr. Khari Armih (khari.armih@gmail.com) Computer Programming II June 1, 2023 26 / 34


Passing 1D Arrays as Arguments
• To pass an array to a function, you need to specify the name of the
array only!!
• Example:

int arr[10];
• can be passed to a function as follows:

void func(int array[], int size);


• call func as:

func(arr,10);

Dr. Khari Armih (khari.armih@gmail.com) Computer Programming II June 1, 2023 27 / 34


Example: Average
1 #include<iostream>
2 using namespace std;
3
4 float getAverage(int arr[], int size)
5 {
6 float ave, sum=0;
7 int i=0;
8 while(i<size)
9 {
10 sum+=arr[i];
11 i++;
12 }
13 ave = sum/size;
14 return ave;
15 }
16
17 int main()
18 {
19 int a[5] = {1,2,3,4,5};
20 float average = getAverage(a,5);
21 cout << "Average = " << average;
22 return 0;
23 }
Dr. Khari Armih (khari.armih@gmail.com) Computer Programming II June 1, 2023 28 / 34
In-Class Exercise
1 int smallest(int temp[], int size)
2 {
3 int min = temp[0];
4 int i=1;
5 while(i<size)
6 {
7 if(temp[i] < min)
8 min = temp[i];
9 i++;
10 }
11 return min;
12 }

Dr. Khari Armih (khari.armih@gmail.com) Computer Programming II June 1, 2023 29 / 34


Returning an array
• Arrays (so far) disappear at the end of the function: this means
they cannot be safely returned

1 int[] copy(int a[], int size)


2 {
3 int i;
4 int a2[size];
5 for (i = 0; i < size; i++)
6 {
7 a2[i] = a[i];
8 }
9 return a2; // no
10 }

Dr. Khari Armih (khari.armih@gmail.com) Computer Programming II June 1, 2023 30 / 34


Solution
• workaround: create the return array outside and pass it in

1 void copy(int a[], int b[], int size)


2 {
3 int i;
4 for (i = 0; i < size; i++)
5 {
6 b[i] = a[i];
7 }
8 }

Dr. Khari Armih (khari.armih@gmail.com) Computer Programming II June 1, 2023 31 / 34


Solution Cont.
1 #include<stdio.h>
2 main()
3 {
4 int a[5] = {22, 4, 33, 15, 21};
5 int b[5];
6 copy(a,b, 5);
7 int i;
8 for (i = 0; i < 5; i++)
9 {
10 cout << b[i] << endl;
11 }
12 }

Dr. Khari Armih (khari.armih@gmail.com) Computer Programming II June 1, 2023 32 / 34


Passing 2D Arrays as Arguments
1 #include<iostream>
2 using namespace std;
3
4 const int m = 3;
5 const int n = 3;
6
7 float average(int arr[][n])
8 {
9 float sum = 0;
10 int i, j;
11 for (i = 0; i < m; i++)
12 for (j = 0; j < n; j++)
13 sum+=arr[i][j];
14 return sum/(n*m);
15 }
16
17 int main()
18 {
19 int arr[m][n] = 1, 2, 3, 4, 5, 6, 7, 8, 9;
20 float ave = average(arr);
21 cout << "Average: " << ave << endl;
22 return 0;
23 }

Dr. Khari Armih (khari.armih@gmail.com) Computer Programming II June 1, 2023 33 / 34


Lab 3
• Write C++ function to find the sum of principal diagonal elements
of 2D array
• Write C++ function to find the largest number in 2D array
• Write C++ program to read an array of 10x10 and use the above
functions
• Write C++ program to read an array of 5x5 and find the frequency
of given number

Dr. Khari Armih (khari.armih@gmail.com) Computer Programming II June 1, 2023 34 / 34

You might also like