Download ARRAYS_OLD

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Matrix multiplication wikipedia , lookup

Gaussian elimination wikipedia , lookup

Transcript
Arrays
Array is data structure used to share multiple data elements under a
single name declaration.
It's important that every single element of data, we wish to assign to
array, belongs to the same data type.
Arrayâ's elements are easily accessed we use index; a number that must be nonnegative integer (constant,
variable, integer expression).
Element's index is a number between 0 and the number of elements minus
one, including. In short: Index ( [0, NrOfElements-1].
Declaration of an array:
data_type array_name[index];
Array's definition in C:
int x[20] - array consisted of 20 integer numbers
char symbols[2] - array consisted of 2 characters
float sequence[MAX] - MAX is constant
Assigning element's values definition:
int array[
array[0] =
array[1] =
array[2] =
] = {1, 2, 3};
1
2
3
int array [4] = {1, 2};
array[0] = 1
array[1] = 2
array[2] = 0
array[3] = 0
Accessing array's elements:
x[0] - first element of an array
sequence[i] -i. element of an array, 0 <= i <= NrOfElements-1
sequence[MAX-1] last element of an array
Common Wrong access to array's elements:
int array[10] = {0};
int x = sequence[10];
float a = 1.;
int x = array[a];
int a = 1, b = 0, c = 1;
int x = array[(a && b) - c];
Example:
Write your own program that asks user to input sequence of numbers,
afterwards it calculates arithmetic middle of the given sequence.
Program also prints numbers smaller than arithmetic middle, and
afterwards prints numbers bigger than arithmetic middle.
#include <stdio.h>
#define DIMENSION 10
int main(void) {
int i;
float sum = 0., arit_midd = 0., sequence[DIMENSION]={0};
for (i = 0; i < DIMENSION; i++) {
printf("Input number: ");
scanf("%f",&sequence[i]);
sum += sequence[i];
}
arit_midd = sum / DIMENSION;
printf("Arithmetic middle of the sequence is %6.2f.\n", arit_midd);
for (i = 0; i < DIMENSION; i++) {
if (sequence[i] < arit_midd) {
printf("%6.2f is smaller than arithmetic middle.\n",
sequence[i]);
}
}
for (i = 0; i < DIMENSION; i++) {
if (sequence[i] > arit_midd) {
printf("%6.2f is bigger than arithmetic middle.\n", sequence[i]);
}
}
// What happens if the number is equal to arithmetic middle?
}
Example:
Write your own program that asks for input of sequence of numbers.
After the program reads given numbers,
it divides every number with the biggest sequence element and shows
them in a way relative to the biggest element.
#include <stdio.h>
#define DIMENSION 10
int main(void) {
int i;
float max, array[DIMENSION];
for (i = 0; i < DIMENSION; i++) {
printf("array[%d] = ", i);
scanf("%f",& array[i]);
if (i == 0) {
max = array[i];
}
if (max < array[i]) {
max = array[i];
}
}
printf("Biggest element in array is %f.\n\n", max);
for (i = 0; i < DIMENSION; i++) {
array[i] /= max;
printf("array[%d] = %f\n", i, array[i]);
}
}
Example:
Compose your own program that reads given natural numbers that belong
in [10, 99] interval and counts how many times each number showed up.
Program stops reading numbers when element that doesn’t belong to
interval is given. Af
afterwards, program prints each number from the interval that has
showed at least once, and number of times it has really been given.
#include <stdio.h>
#define LL 10
#define UL 99
/* lower limit of the interval */
/* upper limit of the interval */
int main(void) {
int number, i;
int counter[UL – LL + 1] = { 0 };
do {
printf("\nInput number from interval [%d, %d]: ", LL, UL);
scanf("%d", &number);
if (number >= LL && number <= UL) {
counter[number - LL]++;
}
} while (number >= LL && number <= UL);
for (i = DG; i <= UL; i++) {
if (counter[i - LL] > 0) {
printf("\nNumber %d showed up %d times", i, counter [i - LL]);
}
}
}
Multi dimensional Arrays:
Often there is a need to store and manipulate two dimensional data structure such as
matrices & tables. Here the array has two subscripts. One subscript denotes the row & the
other the column.
The declaration of two dimension arrays is as follows:
data_type array_name[row_size][column_size];
int m[10][20]
Here m is declared as a matrix having 10 rows( numbered from 0 to 9) and 20
columns(numbered 0 through 19). The first element of the matrix is m[0][0] and the last
row last column is m[9][19]
Elements of multi dimension arrays:
A 2 dimensional array marks [4][3] is shown below figure. The first element is given by
marks [0][0] contains 35.5 & second element is marks [0][1] and contains 40.5 and so on.
marks [0][0]
35.5
marks [0][1]
40.5
marks [0][2]
45.5
marks [1][0]
50.5
marks [1][1]
55.5
marks [1][2]
60.5
marks [2][0]
marks [2][1]
marks [2][2]
marks [3][0]
marks [3][1]
marks [3][2]
Initialization of multidimensional arrays:
Like the one dimension arrays, 2 dimension arrays may be initialized by following their
declaration with a list of initial values enclosed in braces
Example:
int table[2][3]={0,0,0,1,1,1};
Initializes the elements of first row to zero and second row to 1. The initialization is done
row by row. The above statement can be equivalently written as
int table[2][3]={{0,0,0},{1,1,1}}
By surrounding the elements of each row by braces.
C allows arrays of three or more dimensions. The compiler determines the maximum
number of dimension. The general form of a multidimensional array declaration is:
date_type array_name[s1][s2][s3]…..[sn];
Where s is the size of the ith dimension. Some examples are:
int survey[3][5][12];
float table[5][4][5][3];
Survey is a 3 dimensional array declared to contain 180 integer elements. Similarly table
is a four dimensional array containing 300 elements of floating point type.
/* example program to add two matrices & store the results in the 3rd
matrix */
#include< stdio.h >
void main()
{
int a[10][10],b[10][10],c[10][10],i,j,m,n,p,q;
printf(“enter the order of the matrix\n”);
scanf(“%d%d”,&p,&q);
if(m==p && n==q)
{
printf(“matrix can be added\nn”);
printf(“enter the elements of the matrix a”);
for(i=0;i < m;i++)
for(j=0;j < n;j++)
scanf(“%d”,&a[i][j]);
printf(“enter the elements of the matrix b”);
for(i=0;i < p;i++)
for(j=0;j < q;j++)
scanf(“%d”,&b[i][j]);
printf(“the sum of the matrix a and b is”);
for(i=0;i < m;i++)
for(j=0;j < n;j++)
c[i][j]=a[i][j]+b[i][j];
for(i=0;i < m;i++)
{
for(j=0;j < n;j++)
printf(“%dt”,&a[i][j]);
printf(“n”);
}
}