43
One-Dimensional Arrays

One-Dimensional Arrays. Introduction A one-dimensional array is a sequence of homogenous elements stored in contigous memory locations Motivating example:

Embed Size (px)

Citation preview

Page 1: One-Dimensional Arrays. Introduction A one-dimensional array is a sequence of homogenous elements stored in contigous memory locations Motivating example:

One-Dimensional Arrays

Page 2: One-Dimensional Arrays. Introduction A one-dimensional array is a sequence of homogenous elements stored in contigous memory locations Motivating example:

Introduction• A one-dimensional array is a sequence of homogenous elements stored in contigous memory

locations

• Motivating example: Suppose we need to store 100 scores in main memory.

//using simple variablesint x0, x1, x2, …, x99; x0 x1 … x99cin>>x0;cin>>x1;cin>>x2;…cin>>x99;

x[0] x[1] … x[99]//using arraysint x[100];for(int i=0; i<=99; i++) cin>>x[i];

Page 3: One-Dimensional Arrays. Introduction A one-dimensional array is a sequence of homogenous elements stored in contigous memory locations Motivating example:

Declaring One-Dimensional Arrays

• The general form of an array declaration

data_type array_name[expression]; • The data_type is the type of array elements. The array_name is a user defined identifier

(similar to variable name). The expression must evaluate to a positive integer and it cannot contain variables.

• Examplesint x[100] ; //x is an array of 100 integers (200 bytes)double z,w[50],u[30];char name[20], ch;

int n, m=5;#define k 5cin>>n;int d[n]; // compiler errorint d[m]; // compiler errorint d[k]; // ok

Page 4: One-Dimensional Arrays. Introduction A one-dimensional array is a sequence of homogenous elements stored in contigous memory locations Motivating example:

Array Initiliazation

• An array can be declared and initialized to some values

• Examplesint a[5]={2,3,1,1,0}; //valid a[0]=2, a[1]=3, a[2]=1, a[3]=1int b[5]={2}; //valid b[0] = 2, b[1] = 0, b[2] = 0int d[5]={1,2,3,4,5,6}; //compiler errorint c[ ]={1,3}; //validint e[ ]; // compiler error (unknown size)char f[3]={‘a’,’b’,’c’}; //validdouble h[2]={1.1,-1.7};

Page 5: One-Dimensional Arrays. Introduction A one-dimensional array is a sequence of homogenous elements stored in contigous memory locations Motivating example:

Using Array Elements

Array elements can be used wherever simple variables can be used. Examples:

int A[5]={2,5,12,4,0};A[2]++; //A[2] = A[2] + 1;cout<<A[2]; //13a[0]=a[1]+a[2]*3%a[3]; //if A array is used, 5 is displayedint I=4;A[I-1]=A[I];cout<<A[3];A[A[4]]++;cout<<A[A[4]]++; //3 displayed //cout<<A[3]>A[2];A[3]=A[2]=A[1]; //5I=2;if (A[I]>A[I-1]) //4 displayed cout<<A[I+1];else cout<<A[I-2];for(A[I]=0; A[I]>A[I+2]; I++) cout<<A[I]; //nothing displayed

Page 6: One-Dimensional Arrays. Introduction A one-dimensional array is a sequence of homogenous elements stored in contigous memory locations Motivating example:

Example: Given

float B[100]={ …};Write a code segment to print the values of B each element on a separate line.

int I;

for( I=0; I <=99; I++ )

cout<<B[I]<<endl;

Page 7: One-Dimensional Arrays. Introduction A one-dimensional array is a sequence of homogenous elements stored in contigous memory locations Motivating example:

Example: Given

float B[100]={ …};Write a code segment to print the values of B each two elements on a separate line.

int I;

for( I=0; I <=98; I+=2 )

cout<<B[I]<<“ ”<<B[I+1]<<endl;

Page 8: One-Dimensional Arrays. Introduction A one-dimensional array is a sequence of homogenous elements stored in contigous memory locations Motivating example:

Example: Given

float B[100]={ …};Write a code segment to print the values of B in reverse order.

int I;

for( I=99; I >=0; I-- )

cout<<B[I]<<endl;

Page 9: One-Dimensional Arrays. Introduction A one-dimensional array is a sequence of homogenous elements stored in contigous memory locations Motivating example:

Example: Given

float B[100]={ …};Write a code segment to count the number of negative values in B.

int I,count=0;

for( I=0; I <=99; I++ )

if (B[I]<0) count++;

cout<<count;

Page 10: One-Dimensional Arrays. Introduction A one-dimensional array is a sequence of homogenous elements stored in contigous memory locations Motivating example:

Example: Given double B[100]={ …};double C[100]={ …};double D[100];

Write a code segment to add B and C and store the result in D.

int I;

for( I=0; I <=99; I++ )

D[I]=B[I]+C[I];

Page 11: One-Dimensional Arrays. Introduction A one-dimensional array is a sequence of homogenous elements stored in contigous memory locations Motivating example:

Example: Given double B[100]={ …};double C[100]={ …};

Write a code segment to compute the dot product B.C

int I,result=0;

for( I=0; I <=99; I++ )

result+=B[I]*C[I];

Page 12: One-Dimensional Arrays. Introduction A one-dimensional array is a sequence of homogenous elements stored in contigous memory locations Motivating example:

Example: Given

long X[100]={ …};Write a code segment to print the maximum value in X.

int I, max;

for( max=X[0], I=1; I <=99; I++ )

if (X[I]>max) max=X[I];

cout<<max;

Page 13: One-Dimensional Arrays. Introduction A one-dimensional array is a sequence of homogenous elements stored in contigous memory locations Motivating example:

Example: Given

long X[100]={ …};Write a code segment to print the location of the maximum value in X.

int I, max, L;for( max=X[0],L=0, I=1; I <=99; I++ )

if (X[I]>max){ max=X[I]; L=I;}

printf(“the location is %d”,L);

Page 14: One-Dimensional Arrays. Introduction A one-dimensional array is a sequence of homogenous elements stored in contigous memory locations Motivating example:

Example: Given

long X[100]={ …};Write a code segment to count the number of values below average in X.

int I, sum, avg, count;for( I=0, sum=0; I <=99; I++ )

sum+=X[I];avg=sum/100;for( I=0, count=0; I <=99; I++ )

if (X[I]<avg) count++;printf(“the number of values =%d”,count);

Page 15: One-Dimensional Arrays. Introduction A one-dimensional array is a sequence of homogenous elements stored in contigous memory locations Motivating example:

Example: Given long X[100]={ …};

Write a code segment to test if elements in X are sorted.

int I;

for( I=0; I <=98 && X[I]<=X[I+1]; I++ );

if (I==99)

cout<<“sorted”;

else

cout<<“not sorted”;

Page 16: One-Dimensional Arrays. Introduction A one-dimensional array is a sequence of homogenous elements stored in contigous memory locations Motivating example:

Example: Given long X[100]={ …};long Y[100]={ …};

Write a code segment to test if X=Y.

int I;

for( I=0; I <=99 && X[I]==Y[I]; I++ );

if (I==100)

cout<<“equal”;

else

cout<<“not equal”;

Page 17: One-Dimensional Arrays. Introduction A one-dimensional array is a sequence of homogenous elements stored in contigous memory locations Motivating example:

Example: Given long X[100]={ …};

Write a code segment to reverse the values in X.

int I, Y[100];

for( I=0; I <=99; I++ ) Y[I]=X[99-I];

for( I=0; I <=99; I++ ) X[I]=Y[I];

Page 18: One-Dimensional Arrays. Introduction A one-dimensional array is a sequence of homogenous elements stored in contigous memory locations Motivating example:

Example: Givenint X[100]={ …};

Assume all values in X are between 0 and 19.Write a code segment to histogram the values in X

#include <iostream.h>void main(){int i,j;int a[100]={1,2,3,4,5,5,5,6,7,6,7,8,9,6,7,8,9,6, 7,8,9,0,0,0,1,1,1,3,3,5,2,1,1,1,1,4, 4,4,4,1,1,1,3,4,0,5,1,8,9,9,

11,12,3,14,15,15,15,16,17,16,17,18,19,6,7,8,9,6, 17,8,9,10,10,1,1,11,1,13,13,15,12,1,1,1,1,14, 14,4,4,1,11,1,13,14,10,5,1,18,9,19};

int count[20]={0};for(i=0; i<=99; i++) count[a[i]]++; //the value in the big array is the subscript in the

//small arrayfor(i=0; i<=19; i++){//to display the elements in the count array cout<<i<<” ”; for(j=1; j<=count[i]; j++) cout<<”*”;//to display stars count[i] times cout<<endl; } }

Page 19: One-Dimensional Arrays. Introduction A one-dimensional array is a sequence of homogenous elements stored in contigous memory locations Motivating example:

Example: Givenint X[100]={ …};

Write a code segment to compute the standard deviation of values in Xstandard deviation = √∑(xi – µ)2/n-1

int I, sum;double avg;for(I=0, sum=0; I<=99;I++) sum+=X[I];

avg=(double) sum/100;

for(I=0, sum=0; I<=99; I++) sum+=pow(X[I]-avg, 2);

cout<<sqrt(sum/99);

Page 20: One-Dimensional Arrays. Introduction A one-dimensional array is a sequence of homogenous elements stored in contigous memory locations Motivating example:

Example: Write a program to convert from decimal into binary

#include <iostream.h>

void main( ){

int num, I, count, A[1000];

cin>>num;

for (count=0; num ; num/=2) {

A[count]=num%2;

count++;

};

for(I=count-1; I>=0; I--) cout<<A[I];

}

Page 21: One-Dimensional Arrays. Introduction A one-dimensional array is a sequence of homogenous elements stored in contigous memory locations Motivating example:
Page 22: One-Dimensional Arrays. Introduction A one-dimensional array is a sequence of homogenous elements stored in contigous memory locations Motivating example:

Arrays of Characters

• One-dimensional arrays of characters are used to store names (strings). • Names stored in an array must terminate with NULL character. Also

represented as ‘\0’• The array

char N[4]; can store a name consisting of at most 3 characters.

• Arrays of characters can be declared and assigned strings in many ways: char N[4]=”Ali”; // stores the 4 characters ‘A’ ‘l’ ‘i’ NULL in array Nchar N[ ]=”Ali”; // defines an array of 4 elements and stores the 4

// characters ‘A’ ‘l’ ‘i’ and NULL in array Nchar N[4]={ ‘A’ , ‘l’ , ‘i’ , NULL}; // stores the 4 characters ‘A’ ‘l’

// ‘i’ NULL in array N• Extra Elements Are Filled Automatically With NULL

char N[4]={ ‘A’ , ‘l’ }; //Fills the last two elements with NULLchar N[5]={ ‘A’ , ‘h’,’m’,’a’,’d’ }; // Logical error: the string does not

// end with NULL

A L i \0

Page 23: One-Dimensional Arrays. Introduction A one-dimensional array is a sequence of homogenous elements stored in contigous memory locations Motivating example:

String Assigment and I/O

char N[10];

N=”ali”; //syntax errorN={‘A’ , ‘l’ , ‘i’ , NULL}; //syntax error

cin>>N; //ok

N[0]= ‘A’; N[1]= ‘l’; N[2]= ‘i’; N[3]= NULL; //okcout<<N; // prints Ali

cin>>N[0]; cin>>N[1]; cin>>N[2]; N[3]= NULL; //ok

char N[20]=”ahmad”;N[2]=NULL;cout<<N; // prints ah. cout keeps printing until NULL is reached.

Page 24: One-Dimensional Arrays. Introduction A one-dimensional array is a sequence of homogenous elements stored in contigous memory locations Motivating example:

Some Differences Between Character Arrays and Other Arrays

char N[10]={…};int A[5]={…};

cin >>N// okcin>>A// compiler error

cout<<N; //ok, prints the string in Ncout<<A; //Does not print the values in A

Page 25: One-Dimensional Arrays. Introduction A one-dimensional array is a sequence of homogenous elements stored in contigous memory locations Motivating example:

Write a program to read a string and print the number of characters in the string.

#include <iostream.h>

void main(){

int i;

char N[20];

cin>>N;

for(i=0; N[i]; i++);

cout<<i;

}

Page 26: One-Dimensional Arrays. Introduction A one-dimensional array is a sequence of homogenous elements stored in contigous memory locations Motivating example:

Write a program to read a string and print the last character in the string.

#include <iostream.h>

void main(){

int i;

char N[20];

cin>>N;

for(i=0; N[i]; i++);

cout<<N[i-1];

}

Page 27: One-Dimensional Arrays. Introduction A one-dimensional array is a sequence of homogenous elements stored in contigous memory locations Motivating example:

Write a program to read a string and delete the last (not NULL) character in the string.

#include <iostream.h>

void main(){

int i;

char N[20];

cin>>N;

for(i=0; N[i]; i++);

N[i-1]=NULL;

}

Page 28: One-Dimensional Arrays. Introduction A one-dimensional array is a sequence of homogenous elements stored in contigous memory locations Motivating example:

Write a program to read a string and print the characters of the string each on a separate line.

#include <iostream.h>

void main(){

int i;

char N[20];

cin>>N;

for(i=0; N[i]; i++)

cout<<N[i]<<endl;

}

Page 29: One-Dimensional Arrays. Introduction A one-dimensional array is a sequence of homogenous elements stored in contigous memory locations Motivating example:

Write a program to read a string and print it in reverse order.

#include <iostream.h>

void main(){

int i;

char N[20];

cin>>N;

for(i=0; N[i]; i++);

for(int j=i-1; j>=0; j--)

cout<<N[j];

}

Page 30: One-Dimensional Arrays. Introduction A one-dimensional array is a sequence of homogenous elements stored in contigous memory locations Motivating example:

Example: Givenchar X[100]={ …};

Write a code segment to capitalize every character in the string X

for(int i=0; X[i]; i++)

if(X[i]>=‘a’ &&X[i]<=‘z’)

X[i]=X[i]-’a’+’A’;

Page 31: One-Dimensional Arrays. Introduction A one-dimensional array is a sequence of homogenous elements stored in contigous memory locations Motivating example:

Example: Givenchar X[100]= … ;char Y[100]= … ;

Write a code segment to append the string Y at end of X.

int i;

for(i=0; X[i]; i++);

for(int j=0; Y[j]; i++, j++) X[i]=Y[j];

X[i]=NULL;

Page 32: One-Dimensional Arrays. Introduction A one-dimensional array is a sequence of homogenous elements stored in contigous memory locations Motivating example:

Example: Write a program to read a string consisting of small letters and print the number of occurrences of each letter a..z in this string.

#include <iostream.h>void main(){

int i,count[26]={0};char name[20];cout<<”Enter Name:”;cin>>name;for(i=0; name[i]!=NULL; i++)

count[name[i]-‘a’]++;

for(i=0; i<=25; i++) cout<<endl<<”count(”<<(char) (‘a’+i)<<”)=”<<count[i]; }

Page 33: One-Dimensional Arrays. Introduction A one-dimensional array is a sequence of homogenous elements stored in contigous memory locations Motivating example:

Example: Write a program to read a string consisting of small letters and print the number of occurrences of each letter a..z in this string.

#include <iostream.h>void main(){

int i,count[26]={0};char name[20];cout<<”Enter Name:”;cin>>name;for(i=0; name[i]!=NULL; i++)

count[name[i]-‘a’]++;

for(i=0; i<=25; i++) cout<<endl<<”count(”<<(char) (‘a’+i)<<”)=”<<count[i]; }

Page 34: One-Dimensional Arrays. Introduction A one-dimensional array is a sequence of homogenous elements stored in contigous memory locations Motivating example:

Example: Write a program to read 10 names and find the number of names starting with a.

#include <iostream.h>void main(){

char name[20];int i, count=0;for(i=1; i<=10; i++){

cin>>name;if (name[0]=='a') count++;

}cout<<endl<<"Number of names starting with a ="<<count;

}

Page 35: One-Dimensional Arrays. Introduction A one-dimensional array is a sequence of homogenous elements stored in contigous memory locations Motivating example:

Example: Write a program that reads 20 strings and finds the length of the shortest string .

#include <iostream.h>void main(){

char name[20];int shortestLength=1000, j ,i;for(i=1; i<=20; i++){

cin>>name;for(j=0; name[j]; j++);if(j<shortestLength) shortestLength=j;

}cout<<endl<<“shortest string length is "<<shortestLength;

}

Page 36: One-Dimensional Arrays. Introduction A one-dimensional array is a sequence of homogenous elements stored in contigous memory locations Motivating example:

Example:Write a program to determine the location of a character in a string (if it occurs) .

#include <iostream.h>void main(){

char name[20], ch;int i;cin>>name;cin>>ch;for(i=0; name[i]!=ch && name[i]!=NULL ; i++);if (name[i]==ch)

cout<<“Location=”<<i;else

cout<<ch<<“does not exist in ”<<name;}

Page 37: One-Dimensional Arrays. Introduction A one-dimensional array is a sequence of homogenous elements stored in contigous memory locations Motivating example:

Example:Write a program to determine the location of a substring in a string (if it occurs) .

#include <iostream.h>void main(){

char S1[20], S2[20];int I, J, flag=1;cout<<“input string”;cin>>S1;cout<<“input sustring”;cin>>S2;for(i=0; s1[i] && flag; i++){

int k=i;for(j=0; S2[j]&&S2[j]==S1[k]; j++,k++);if (S2[j]==NULL) flag=0;

}if (flag==0)

cout<<“Location=”<<i;else

cout<<S2 <<“ does not exist in ”<<S1;}

Page 38: One-Dimensional Arrays. Introduction A one-dimensional array is a sequence of homogenous elements stored in contigous memory locations Motivating example:

Parallel Arrays

• Information about an object can be distributed over a number of one-dimentional arrays.

• Example: Information about students can be distributed over several arrays.

int student_id[50]={10432187, … };

int exam1[50]={70, … };

int exam2[50]={72, … };

int final_exam[50]= {68, … };

Page 39: One-Dimensional Arrays. Introduction A one-dimensional array is a sequence of homogenous elements stored in contigous memory locations Motivating example:

Example: Givenint student_id[50]={10432187, … };int exam1[50]={70, … };int exam2[50]={72, … };int final_exam[50]= {68, … };

Write a code segment to compute the final grades of the students. Assume exam1 and exam2 has 25% each and the final exam has 50%.

double G;for(int i=0; i<=49; i++){

G=0.25*exam1[i]+0.25*exam2[i]+ 0.5*final_exam[i];cout<<endl<<student_id[i]<<“

”<<G; }

Page 40: One-Dimensional Arrays. Introduction A one-dimensional array is a sequence of homogenous elements stored in contigous memory locations Motivating example:

Example: Givenint student_id[50]={10432187, … };int exam1[50]={70, … };int exam2[50]={72, … };int final_exam[50]= {68, … };

Write a code segment to print the scores of a student given the ID .

int N;

cin>>N;

for(int i=0; i<=49 &&student_id[i]!=N; i++);

if (i==50)

cout<<“student id does not exist”;

else

cout<<exam1[i]<<exam2[i]<<final_exam[i];

Page 41: One-Dimensional Arrays. Introduction A one-dimensional array is a sequence of homogenous elements stored in contigous memory locations Motivating example:

Example: Givenint student_id[50]={10432187, … };int exam1[50]={70, … };int exam2[50]={72, … };int final_exam[50]= {68, … };

Write a code segment to count the number of students passing in the first exam and failing in the second exam .

int count=0;

for(int i=0; i<=49; i++)

if (exam1[i]>=60 && exam2[i]<60)

count++;

cout<<count;

Page 42: One-Dimensional Arrays. Introduction A one-dimensional array is a sequence of homogenous elements stored in contigous memory locations Motivating example:

Example: Givenint student_id[50]={10432187, … };int exam1[50]={70, … };int exam2[50]={72, … };int final_exam[50]= {68, … };

Write a code segment to print the ID of the student having the maximum score in the first exam.

int max, L;for(int i=0, max=exam2[0], L=0; i<=49; i++)

if (exam2[i]>max){max=exam2[i];L=I;

};cout<<student_id[L];

Page 43: One-Dimensional Arrays. Introduction A one-dimensional array is a sequence of homogenous elements stored in contigous memory locations Motivating example:

Example: Givenint student_id[50]={10432187, … };int exam1[50]={70, … };int exam2[50]={72, … };int final_exam[50]= {68, … };

Write a code segment to find which of the 3 exams has the highest number of passing students.

int count1=0, count2=0, count3=0, i;for(i=0; i<=49; i++) if (exam1[i]>=60)count1++;for(i=0; i<=49; i++) if (exam2[i]>=60)count2++;for(i=0; i<=49; i++) if (final_exam1[i]>=60)count3++;if (count1>=count2)

if(count1>=count3)cout<<“exam1”;

elsecout<<“exam3”;

elseif (count2>=count3)

cout<<“exam2”;else

cout<<“exam3”;