Главная Обратная связь

Дисциплины:

Архитектура (936)
Биология (6393)
География (744)
История (25)
Компьютеры (1497)
Кулинария (2184)
Культура (3938)
Литература (5778)
Математика (5918)
Медицина (9278)
Механика (2776)
Образование (13883)
Политика (26404)
Правоведение (321)
Психология (56518)
Религия (1833)
Социология (23400)
Спорт (2350)
Строительство (17942)
Технология (5741)
Транспорт (14634)
Физика (1043)
Философия (440)
Финансы (17336)
Химия (4931)
Экология (6055)
Экономика (9200)
Электроника (7621)






Розробка та реалізація програми з масивами



Ціль роботи: оволодіння навичками складання програми з масивами та виконання її в IDE Borland C++ 5.0.

Завдання

Завдання 6.1. Визначити дію фрагмента програми за варіантами, які наведені в таблиці 6.1, якщо char sName[20]="Hello World!"; char *p=sName; int n,i; (Вказівка: n дорівнює номеру варіанта)

Таблиця 6.1

Фрагмент програми Фрагмент програми
1-5 for(p+=n; *p; p++) cout<<*p<<" "; 6-10 for(p+=n; *p; p--) cout<<*p<<" ";
11-15 for(p+=n-9; *p; p++) cout<<*p<<endl; 16-20 for(p+=n-11; *p; p--) cout<<*p<<endl;
21-25 for(i=n-21; i<5; i++) cout<<sName[i]; 26-30 for(i=n-21; i>2; i--) cout<<sName[i];

Завдання 6.2. Cклаcти програму обчислення наступних величин за варіантами, які наведені в таблиці 6.2, та виконати її в IDE Borland C++ 5.0, якщо елементи масиву визначаються за формулою ai+1=(37×ai+3) mod 64. Значення a0 дорівнює номеру варіанта; i змінюється від 0 до 18.

Таблиця 6.2

Величини, які потрібно обчислити
1-3 Найбільший елемент масиву а і його порядковий номер
4-6 Cуми елементів масиву а, значення яких кратні номеру варіанта
7-9 Cуми елементів масиву а, значення яких парні числа
10-12 Середнє арифметичне додатних елементів масиву а
13-15 Cуми елементів масиву а, значення яких непарні числа
16-18 Середнє геометричне додатних елементів масиву а
19-21 Cуми елементів масиву а, значення яких двозначні парні числа
22-24 Добуток найбільшого і найменшого елементів масиву а
25-27 Cуми елементів масиву а, значення яких двозначні непарні числа
28-30 Модуль вектора а/3

Короткі теоретичні відомості

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



Масив визначається за модифікатором типа []. Загальний вигляд опису масиву:

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

Наприклад:

char sName[20];

визначає масив з двадцяти елементів типа char. Ім’я масиву sName містить адресу першого елементу масива. Це ім’я може бути використоване в операциях арифметики вказівників для доступу до елементів масиву.

Оператор [] дає більш короткий вираз для доступу до елементів масиву. Вираз sName[k] є еквівалентним *(sName+k).

Масиви в C++, як і в С, нумеруються з нуля. Тому найбільший елемент – це кількість_елементів минус одиниця. Так, в масиві з 20 елементів індекси змінюються від 0 до 19. Перехід через максимум приводить до використання чужої області пам’яті.

Елементи масиву розміщуються у пам’яті послідовно. Елементи з меншими значеннями індексу зберігаються в більш низьких адресах пам’яті. Елементи багатовимірних масивів розміщуються таким чином, що самий правий індекс зростає самим першим. Так, для двумірного масиву int d[2][2] елементи масиву розміщуються у пам’яті за зростанням адресів: d[0][0], d[0][1], d[1][0], d[1][1].

Приклад виконання роботи

Завдання 6.1. Визначити дію фрагмента програми

char sName[20]="Hello!"; char *p=sName; int n,i;

for(i=1; i<5; i++) cout<<sName[i];

Розв’язання:

Цей фрагмент програми виводить на екран рядок: ello

Завдання 6.2. Скласти програму перестановки елементів масиву a в зворотному порядку і виконати її в IDE Borland C++ 5.0, якщо елементи масиву визначаються за формулою ai+1=(37×ai+3) mod 64. Значення a0=40; i змінюється від 0 до 16.

Розв’язання

1. Постановка задачі

Скласти програму перестановки елементів масиву a в зворотному порядку на мові C++, якщо елементи масиву визначаються за формулою ai+1=(37×ai+3) mod 64. Значення a0=40; i змінюється від 0 до 16.



2. Алгоритм розв’язання задачі

Алгоритм розв’язання задачі можна представити у вигляді такої послідовності дій:

Дія 1. Ввести елементи масиву a;

Дія 2. Вивести елементи масиву a;

Дія 3. Визначити m (кількість перестановок елементів масиву a), як результат цілочислового ділення числа елементів масиву n на 2;

Дія 4. Присвоїти j (номеру поточного елемента масиву, який переставляється на місце елемента з меншим номером) значення n-1;

Дія 5. Повторювати m разів наступні дії (i= 0, 1, ..., m-1):

Дія 5.1. Присвоїти x (змінній для тимчасового зберігання елемента з меншим номером) значення i-го елемента масиву a;

Дія 5.2. Присвоїти i-му елементу масиву a значення j-го елемента;

Дія 5.3. Присвоїти j-му елементу масиву a значення x;

Дія 5.4. Зменшити значення j на 1;

Дія 6. Вивести елементи масиву a після перестановки.

Запишемо алгоритм розв’язання задачі мовою C++, позначив масив a через a, елементи якого мають тип int. Змінні i, j, n, m, x позначимо відповідно як i, j, n, m, x (усі мають тип int).

3. Текст програми

//програма перестановки елементів масиву a[n]

#include <iostream.h>

#include <math.h>

voidmain(){

int i,j,m,x,n=18;

int a[18];

cout<<” Вводимо масив a[”<<n<<”]”<<endl;

a[0]=40;

for(i=0; i<=n-2; i++)a[i+1]=(37*a[i]+3) % 64;

for(i=0; i<=n-1; i++)cout<<a[i]<<” ”;

cout<<endl;

m=n/2; j=n-1;

for(i=0; i<=m-1; i++){

x=a[i]; a[i]=a[j]; a[j]=x; j-=1;

};

cout<<” Масив a[”<<n<<”] після перестановки”<<endl;

for(i=0; i<=n-1; i++)cout<<a[i]<<” ”;

cout<<endl;

}

4. Результати роботи програми

Вводимо масив a[18]

40 11 26 5 60 47 14 9 16 19 2 13 36 55 54 17 56 27

Масив a[n] пiсля перестановки

27 56 17 54 55 36 13 2 19 16 9 14 47 60 5 26 11 40

Контрольні питання

1. Який тип можуть мати елементи масиву?

2. Як розміщуються в пам’яті елементи масиву?

 


Эта страница нарушает авторские права

allrefrs.ru - 2019 год. Все права принадлежат их авторам!