Розв’язування задач на оператори циклу для обробки одновимірних масивів в C++

Розв’язування задач на оператори циклу для обробки одновимірних масивів у C++


Зміст



1. Знаходження суми елементів масиву з n дійсних чисел

1.1. Розв’язок з використанням циклу for
// сума елементів масиву дійсних чисел
const int MaxN = 100;
int n;
float A[MaxN];
float sum; // результат - сума елементів масиву

// задати значення n
n = 10;

// заповнення масиву A довільними значеннями
for (int i=0; i<n; i++)
    A[i] = 0.1f * i;

// спочатку занулити значення sum
sum = 0;

// цикл обчислення суми
for (int i=0; i<n; i++)
    sum = sum + A[i];

1.2. Розв’язок з використанням циклу while
// сума елементів масиву дійсних чисел - цикл while
const int MaxN = 100; // максимально-допустима кількість елементів масиву
int n; // n = 1..MaxN - задана кількість елементів масиву
float A[MaxN]; // масив
float sum; // результат - сума елементів масиву
int i; // додаткова змінна

// задати значення n
n = 10;

// заповнення масиву A довільними значеннями через цикл while
i=0;
while (i<n)
{
    A[i] = 0.1f*i;
    i++;
}

// спочатку занулити значення sum та i
sum = 0;
i = 0;

// цикл while для обчислення суми
while (i<n)
{
    sum += A[i];
    i++;
}

1.3. Розв’язок задачі. Цикл do…while
// сума елементів масиву дійсних чисел - цикл do..while
const int MaxN = 100; // максимально-допустима кількість елементів масиву
int n; // n = 1..MaxN - задана кількість елементів масиву
float A[MaxN]; // масив
float sum; // результат - сума елементів масиву
int i; // додаткова змінна

// задати значення n
n = 10;

// заповнення масиву A довільними значеннями через цикл do..while
i=0;
do
{
    A[i] = 0.1f*i;
    i++;
}
while (i<n);

// спочатку занулити значення sum та i
sum = 0;
i = 0;

// цикл do..while для обчислення суми
do
{
    sum += A[i];
    i++;
}
while (i<n);

2. Знаходження середнього арифметичного елементів масиву з n дійсних чисел.

Щоб знайти середнє арифметичне елементів масиву, спочатку потрібно знайти суму елементів масиву, а потім цю суму поділити на кількість елементів масиву.

2.1. Розв’язок. Цикл for

У прикладі пропущено ввід масиву та кількості елементів масиву n.

// середнє арифметичне елементів масиву дійсних чисел - цикл for
const int MaxN = 100; // максимально-допустима кількість елементів масиву
int n; // n = 1..MaxN - задана кількість елементів масиву
float A[MaxN]; // масив
float avg; // результат - середнє арифметичне
int i; // додаткова змінна

// задати значення n
n = 10;

// ввід масиву A та кількості елементів масиву n
// ...

// сума обчислюється у змінній avg
avg = 0;

// цикл for для обчислення суми
for (i=0; i<n; i++)
{
    avg += A[i];
}

// обчислення середнього арифметичного
avg = avg / n;

2.2. Розв’язок. Цикл while

У прикладі пропущено ввід масиву та кількості елементів масиву n.

// середнє арифметичне елементів масиву дійсних чисел - цикл while
const int MaxN = 100; // максимально-допустима кількість елементів масиву
int n; // n = 1..MaxN - задана кількість елементів масиву
float A[MaxN]; // масив
float avg; // результат - середнє арифметичне
int i; // додаткова змінна

// ввід масиву A та кількості елементів масиву n
// ...

// заповнення масиву A довільними значеннями через цикл do..while
i=0;

do
{
    A[i] = 0.1f*i;
    i++;
}
while (i<n);

// сума обчислюється у змінній avg
avg = 0;
i = 0;

// цикл while для обчислення суми
while (i<n)
{
    avg += A[i];
    i++;
}

// обчислення середнього арифметичного
avg = avg / n;

2.3. Розв’язок. Цикл do…while

У прикладі пропущено ввід масиву та кількості елементів масиву n.

// середнє арифметичне елементів масиву дійсних чисел - цикл do..while
const int MaxN = 100; // максимально-допустима кількість елементів масиву
int n; // n = 1..MaxN - задана кількість елементів масиву
float A[MaxN]; // масив
float avg; // результат - середнє арифметичне
int i; // додаткова змінна

// ввід масиву A та кількості елементів масиву n
// ...

// сума обчислюється у змінній avg
avg = 0;
i = 0;

// цикл do..while для обчислення суми
do
{
    avg += A[i];
    i++;
}
while (i<n);

// обчислення середнього арифметичного
avg = avg / n;

3. Поелементне копіювання масивів

3.1. Цикл for

У даному прикладі наводиться фрагмент коду, що копіює масив A з 10 дійсних чисел (float) в масив B.

// поелементне копіювання масивів - цикл for
const int MaxN = 100; // максимально-допустима кількість елементів масиву
int n; // n = 1..MaxN - задана кількість елементів масиву
float A[MaxN]; // масив-джерело
float B[MaxN]; // масив-призначення
int i; // додаткова змінна

// задати значення n
n = 10;

// ввід масиву A та кількості елементів масиву n
// ...

// цикл копіювання A => B
for (i=0; i<n; i++)
{
    B[i] = A[i];
}

3.2. Цикл while

Фрагмент копіювання масиву A в масив B з використанням циклу while

// поелементне копіювання масивів - цикл while
const int MaxN = 100; // максимально-допустима кількість елементів масиву
int n; // n = 1..MaxN - задана кількість елементів масиву
float A[MaxN]; // масив-джерело
float B[MaxN]; // масив-призначення
int i; // додаткова змінна

// задати значення n
n = 10;

// ввід масиву A та кількості елементів масиву n
// ...

// цикл копіювання A => B
i=0;
while (i<n)
{
    B[i] = A[i];
    i++;
}

3.3. Цикл do…while

Реалізація копіювання масивів з використанням циклу do…while

// поелементне копіювання масивів - цикл do...while
const int MaxN = 100; // максимально-допустима кількість елементів масиву
int n; // n = 1..MaxN - задана кількість елементів масиву
double A[MaxN]; // масив-джерело
double B[MaxN]; // масив-призначення
int i; // додаткова змінна

// задати значення n
n = 10;

// ввід масиву A та кількості елементів масиву n
// ...

// цикл копіювання A => B
i=0;
do
{
    B[i] = A[i];
    i++;
}
while (i<n);

4. Обертання масиву (отримати результуючий масив, обернений до вихідного)

Нехай задано два масиви з іменами A і B. Масив A задається. Отримати результуючий масив B, який є обернений до вихідного масиву A (елементи масиву йдуть у зворотному порядку).

У даному прикладі наводиться реалізація обертання масиву з допомогою трьох відомих операторів циклу.

// Отримання оберненого масиву
const int MaxN = 100; // максимально-допустима кількість елементів масиву
int n; // n = 1..MaxN - задана кількість елементів масиву
double A[MaxN]; // масив-джерело
double B[MaxN]; // масив-призначення
int i; // додаткова змінна

// ввід масиву A та кількості елементів масиву n
// ...

// розв'язок задачі з допомогою циклу do...while оберненого копіювання A => B
i=0;
do
{
    B[i] = A[n-i-1];
    i++;
}
while (i<n);

// розв'язок з допомогою циклу for
for (i=0; i<n; i++)
    B[i] = A[n-i-1];

// розв'язок з допомогою циклу while
i=0;

while (i<n)
{
    B[i] = A[n-i-1];
    ++i;
}

5. Обертання масиву без використання додаткового масиву

Задано масив A з n дійсних чисел. Реалізувати операцію обертання масиву без використання додаткового масиву.
У наведеному нижче коді реалізовано обертання масиву з використанням операторів циклів for, while, do…while.

Нехай задано такий опис типів даних

// Обертання масиву A
const int MaxN = 100; // максимально-допустима кількість елементів масиву
int n; // n = 1..MaxN - задана кількість елементів масиву
double A[MaxN]; // масив-джерело
int i; // додаткова змінна
double t; // додаткова змінна

// задати значення n
n = 10;

// ввід масиву A та кількості елементів масиву n
// ...

Тоді розв’язок задачі з використанням циклу do…while

// розв'язок задачі з допомогою циклу do...while оберненого копіювання A => B
i=0;
do
{
    t = A[i];
    A[i] = A[n-i-1];
    A[n-i-1] = t;
    i++;
}
while (i < (n/2));

Розв’язок задачі з використанням циклу for

// розв'язок з допомогою циклу for
for (i=0; i<n/2; i++)
{
    t = A[i]; // використання додаткової змінної t
    A[i] = A[n-i-1];
    A[n-i-1] = t;
}

Розв’язок задачі з використанням циклу while.

// розв'язок з допомогою циклу while
i=0;

while (i<n/2)
{
    t = A[i];
    A[i] = A[n-i-1];
    A[n-i-1] = t;
    i++;
}


Зв’язані теми