русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Одновимірні масиви


Дата додавання: 2014-04-22; переглядів: 4396.


Одновимірний масив – це лінійна послідовність однотипних елементів. Такі масиви часто називають математичним терміном вектор. Кожен елемент масиву має свій порядковий номер (індекс), який визначає розташування цього елемента в масиві.

Як і звичайні змінні, масиви перед використанням необхідно явно оголошувати. Це виконується за допомогою такої синтаксичної конструкції:

 

тип_елементів ім’я_масиву [ кількість_елементів ];

 

тут тип елементів – довільний допустимий простий або складений тип, ім’я масиву – ідентифікатор, що відповідає правилам запису імен, квадратні дужки – обов’язкова ознака масиву, кількість елементів – константа чи константний вираз, що визначає розмірність даного масиву. Для кожного масиву компілятор виділяє неперервну ділянку пам'яті, обсяг якої дорівнює добутку

 

кількість_елементів × sizeof( тип_елементів )

 

При оголошенні масивів можна відразу виконувати ініціалізацію їх елементів. Застосовують дві форми ініціалізації: з зазначенням кількості елементів масиву і без зазначення кількості елементів масиву.

У першому випадку масив оголошується звичайним чином, після чого в фігурних дужках записують константні значення елементів масиву, починаючи від першого (тобто елемента з індексом нуль). При цьому кількість заданих значень не повинна перевищувати вказану розмірність масиву, але може бути меншою за неї – тоді для перших елементів масиву, для яких вказані значення, присвоюються ці значення, решті присвоюється нуль. Цю властивість мови програмування С++ зручно використовувати для присвоєння нульових значень елементам масиву.

 

int a[5] = { 1, 2, 3, 4, 5 }; // 1 2 3 4 5

int b[5] = { 1, 2, 3 }; // 1 2 3 0 0

int c[5] = { }; // 0 0 0 0 0

 

Якщо в оголошенні масиву виконується його повна ініціалізація, тобто вказані початкові значення для всіх елементів масиву, то кількість елементів масиву можна не опустити. Розмірність масиву визначається кількістю елементів – ініціалізаторів. Розмірність масиву, оголошеного без зазначення кількості елементів, можна визначити за допомогою операції sizeof:

 

кількість_елементів = sizeof(ім’я_масиву) / sizeof(тип_елементів)

 

Операція sizeof(ім’я_масиву) повертає розмір (обсяг в байтах) усієї ділянки пам'яті, яку займає масив, незалежно від того, наскільки він заповнений. Визначимо кількість елементів в масиві, оголошеному без зазначення його розмірності:

 

int a[] = { 1, 2, 3, 4, 5 };

int n = sizeof( a ) / sizeof( int );

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

cout << a[i] << endl;

 

Елемент масиву є змінною, яка має тип, заданий в оголошенні масиву, і синтаксично може використовуватися у будь якому місці програми, де може бути записане дане такого типу. Звертання до елементу масиву виконується по його номеру (індексу) таким чином:

 

ім’я_масиву [ індекс_елемента ]

 

де індекс елемента може бути довільним виразом, який має значення цілого типу і задає порядковий номер елемента в масиві (нумерація починається з нуля). Компілятор не контролює відповідність значень індексів до розміру масиву. Некоректні звертання до елементів масиву можуть призвести до аварійного завершення роботи програми або краху системи.

Заповнити масив з 100 елементів цілими випадковими числами в діапазоні від 0 до 1000. Знайти найбільший елемент масиву і середнє значення елементів масиву.

 

#include <iostream>

#include <ctime>

using namespace std;

int main() {

srand(unsigned(time(NULL)));

const int NUM = 100; // кількість елементів масиву

const int MIN = 0; // мінімальне значення елементів масиву

const int MAX = 1000;// максимальне значення елементів масиву

int a[NUM], i, m;

double avg;

for ( i = 0; i < NUM; ++i )

a[i] = MIN + rand( ) % MAX;

for ( i = 0, m = 0, avg = 0; i < NUM; ++i ) {

avg += a[i];

if ( a[i] > m )

m = a[i];

}

avg /= NUM;

cout << "avg = " << avg << endl;

cout << "max = " << m << endl;

}

 

Заповнити масив з 10 елементів цілими випадковими числами від -10 до 10. Вивести на екран спочатку додатні елементи масиву, потім – від’ємні. Замінити від’ємні елементи масиву на їх модулі.

 

#include <iostream>

#include <ctime>

using namespace std;

int main() {

srand(unsigned(time(NULL)));

const int NUM = 10;

const int MIN = -10;

const int MAX = 10;

int a[NUM], i;

for ( i = 0; i < NUM; ++i )

a[i] = MIN + rand( ) % ( MAX - MIN );

for ( i = 0; i < NUM; ++i )

if ( a[i] >= 0 )

cout << a[i] << " ";

for ( i = 0; i < NUM; ++i )

if ( a[i] < 0 ) {

cout << a[i] << " ";

a[i] = -a[i];

}

cout << endl;

for ( i = 0; i < NUM; ++i )

cout << a[i] << " ";

}

 

Знайти кількість елементів масиву (у відсотках), більших середнього арифметичного. Масив заповнимо дійсними випадковими числами від 0 до 1.

 

#include <iostream>

#include <ctime>

using namespace std;

int main() {

srand( unsigned( time ( NULL ) ) );

const int NUM = 1000;

double a[ NUM ], avg;

int i, n;

for ( i = 0, avg = 0; i < NUM; ++i ) {

a[ i ] = ( rand( ) % 1000 ) / 1000.;

avg += a[ i ];

}

avg /= NUM;

cout << avg << endl;

for (i = 0, n = 0; i < NUM; ++i)

if ( a[ i ] > avg )

n++;

cout << ( double ) n / NUM * 100 << endl;

}

 

Поміняти місцями максимальний і мінімальний елементи масиву.

 

#include <iostream>

#include <ctime>

using namespace std;

int main() {

srand( unsigned( time( NULL ) ) );

const int N = 10;

int a[ N ], min, max, i, t;

for ( i = 0, min = 0, max = 0; i < N; ++i ) {

a[ i ] = rand( ) % 10;

if ( a[ i ] > max ) max = i;

if ( a[ i ] < min ) min = i;

cout << a[i] << " ";

}

cout << endl;

t = a[ min ];

a[ min ] = a[ max ];

a[ max ] = t;

for ( i = 0; i < N; ++i )

cout << a[i] << " ";

cout << endl;

}

 

Є послідовність цілих випадкових чисел в діапазоні від 0 до 9. Знайти кількість кожного з чисел, тобто кількість нулів, одиниць, двійок і так далі, в цьому масиві.

 

#include <iostream>

#include <ctime>

using namespace std;

int main() {

srand( unsigned( time( NULL ) ) );

const int N = 1000; // кількість чисел

int a[ 10 ] = { }, i;

for ( i = 0; i < N; ++i )

a[ rand( ) % 10 ] ++;

for ( i = 0; i < 10; ++i )

cout << i << " " << a[i] << endl;

}

 

В математиці, многочленом чи поліномом однієї змінної називається вираз вигляду

 

 

де сі є сталими коефіцієнтами (константами), а х – змінна.

Сума многочленів є многочленом. Степінь суми многочленів дорівнює максимуму степенів доданків:

 

Знайти значення полінома для довільного х і суму двох поліномів.

 

#include <iostream>

#include <ctime>

using namespace std;

int main() {

srand( unsigned( time( NULL ) ) );

const int NMAX = 100;

double p1[ NMAX ] = { 1, 2, 3 };

double p2[ NMAX ] = { 2, 3, 4, 5, 6 };

double p3[ NMAX ] = { };

int np1 = 3;

int np2 = 5;

int np3, i;

double x, s;

x = 1.1;

for ( i = 0, s = 0; i < np1; i++ )

s += p1[ i ] * pow( x, (double) i );

cout << s << endl;

for ( i = 0, s = 0; i < np2; i++ )

s += p2[ i ] * pow( x, (double) i );

cout << s << endl;

np3 = np1 > np2 ? np1 : np2;

for ( i = 0; i < np3; i++ ) {

p3[ i ] = p1[ i ] + p2[ i ];

cout << p3[ i ] << " ";

}

for ( i = 0, s = 0; i < np3; i++ )

s += p3[ i ] * pow( x, (double) i );

cout << endl << s << endl;

}

 

Вивести на екран таку послідовність чисел:

1 2

1 2 3

1 2 3 4

 

#include <iostream>

using namespace std;

int main() {

int i, j, n;

cin >> n; // кількість рядків

for ( i = 1; i <= n; i++ ) {

for ( j = 1; j <= i; j++ )

cout << j << " ";

cout << endl;

}

}


<== попередня лекція | наступна лекція ==>
Використання псевдовипадкових чисел | Багатовимірні масиви


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн