Дефиниране и използване на масиви,
масивите като параметри
* Дефиниране и използване:
-- дефиниция
double salaries[10];
-- използване
salaries[4] = 355;
-- номериране на индекси
salaries[0] -
първи елемент
salaries[1] -
втори елемент
salaries[2] -
трети елемент
salaries[3] -
четвърти елемент
...
salaries[9] -
десети елемент
Обхождане на елементите на масив:
const int SAL_MAXSIZE = 10;
double sal[SAL_MAXSIZE];
int sal_size = 0;
bool more = true;
while (more and sal_size < SAL_MAXSIZE)
{ cout << "Enter salary or 0 to
quit";
double x;
cin >> x;
if (cin.fail()) more = false
else
{ sal[sal_size] = x;
sal_size++; }
}
* Mасивите като параметри на функции
Масивите винаги се предават по псевдоним.
double maximum(const double a[], int a_size)
{ if (a_size == 0) return 0;
double highest = a[0];
int i;
for (i = 1; i < a_size;
i++)
if (a[i]
> highest) highest = a[i];
return highest;
}
Следващата програма чете заплати от стандартен вход и отпечатва максималната
заплата.
// salarray.cpp
#include <iostream>
using namespace std;
void read_data(double a[], int a_maxsize,
int& a_size)
{ a_size = 0;
double x;
while (a_size < a_maxsize
and (cin >> x))
{ a[a_size] = x;
a_size++; }
}
double maximum(const double a[], int a_size)
{ if (a_size == 0) return 0;
double highest = a[0];
int i;
for (i = 1; i < a_size;
i++)
if (a[i]
> highest) highest = a[i];
return highest;
}
int main()
{ const int SALARIES_MAXSIZE = 100;
double salaries[SALARIES_MAXSIZE];
int salaries_size = 0;
cout << "Please enter
all salary data: ";
read_data(salaries, SALARIES_MAXSIZE,
salaries_size);
if (salaries_size == SALARIES_MAXSIZE
and not cin.fail())
cout <<
"Sorry--extra data ignored\n";
double maxsal = maximum(salaries,
salaries_size);
cout << "The maximum
salary is " << maxsal << "\n";
return 0;
}
Масиви от символи
char input = 'y';
char greeting[6] = "Hello";
char greeting[] = "Hello";
char greeting[10] = "Hello";
Проблемът със символа за край на низ при използване на масиви от символи.
Двумерни масиви
// matrix.cpp
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
const int BALANCES_ROWS = 11;
const int BALANCES_COLS = 6;
double future_value(double initial_balance,
double p, int nyear)
{ double b = initial_balance * pow(1
+ p/12/100, 12*nyear);
return b; }
void print_table(const double table[][BALANCES_COLS],
int table_rows)
{ int i, j;
cout << fixed <<
setprecision(2);
for (i = 0; i < table_rows;
i++)
{ for (j = 0; j <
BALANCES_COLS; j++)
cout << setw(10) << table[i][j];
cout <<
"\n";
}
}
int main()
{ double balances[BALANCES_ROWS][BALANCES_COLS];
int i;
int j;
for (i = 0; i < BALANCES_ROWS;
i++)
for (j
= 0; j < BALANCES_COLS; j++)
balances[i][j] = future_value(10000, 5 + i * 0.5,
5 + j * 5);
print_table(balances, BALANCES_ROWS);
return 0;
}