C#. Розв’язування задач на одновимірні масиви. Поєднання оператора циклу з оператором умови

C#. Розв’язування задач на одновимірні масиви. Поєднання оператора циклу з оператором умови


Зміст



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

Задано масив A з 10 цілих чисел. Знайти суму додатних елементів масиву

1.1. Реалізація з допомогою циклу for

У даному прикладі пропущено ввід масиву A

// Знаходження суми додатних елементів масиву
const int MaxN = 10;
int[] A = new int[MaxN]; // заданий масив
int i;

// ввід масиву A
// ...

// обчислення суми
int sum = 0;

for (i=0; i<MaxN; i++)
    if (A[i]>0)
        sum = sum + A[i];

 

1.2. Реалізація з допомогою циклу while
// Знаходження суми додатніх елементів масиву
const int MaxN = 10;
int[] A = new int[MaxN]; // заданий масив
int i; // додаткова змінна
int sum = 0; // результат

// ввід масиву A
// ...

// обчислення суми
i=0;
while (i<MaxN)
{
    if (A[i]>0)
        sum+=A[i];
    i++;
}

 

1.3. Реалізація з допомогою циклу do…while
// Знаходження суми додатніх елементів масиву
const int MaxN = 10;
int[] A = new int[MaxN]; // заданий масив
int i; // додаткова змінна
int sum = 0; // результат

// ввід масиву A
// ...

// обчислення суми
i=0;

do
{
    if (A[i]>0)
        sum+=A[i];
    i++;
}
while (i<MaxN);

 

2. Знайти суму елементів масиву, які розміщуються на парних індексах

У даному прикладі обчислюються суми елементів масиву A, індекси яких є парними: 0, 2, 4, … Щоб визначити чи число (індекс масиву) є парним, потрібно застосувати перевірку

if ((i%2)==0)
{
    // дії, якщо число парне
    // ...
}

Реалізація рішення даної задачі трьома видами циклу (ввід масиву A опущено).

// Знаходження суми елементів масиву, які мають парні індекси (0, 2, 4,...)
const int MaxN = 10;
int[] A = new int[MaxN]; // заданий масив
int i; // додаткова змінна
int sum1, sum2, sum3; // результати обчислень різними видами циклів

// ввід масиву A
// ...

// обчислення суми, цикл for
sum1 = 0;
for (i=0; i<MaxN; i++)
    if ((i%2)==0) // визначення парності числа
        sum1+=A[i];

// обчислення суми, цикл while
sum2 = 0;
i=0;
while (i<MaxN)
{
    if ((i%2)==0) sum2+=A[i];
    i++;
}

// обчислення суми, цикл do...while
sum3 = 0;
i=0;
do
{
    if ((i%2)==0)
        sum3+=A[i];
    i++;
}
while (i<MaxN);

 

3. Знайти добуток елементів масиву, які більше заданого числа

У прикладі знаходиться добуток елементів масиву A, які більше числа, що розміщується в змінній number.
Реалізація задачі з використанням циклу for:

// добуток елементів масиву, які більше заданого числа
const int MaxN = 10;
int[] A = new int[MaxN]; // заданий масив
int number; // задане число
int i; // додаткова змінна
int res; // результат - добуток

// ввід масиву A
for (i=0; i<MaxN; i++)
{
    A[i] = i;
}

// задавання числа number
number = 5;

// пошук добутку - цикл for
res = 1;
for (i=0; i<MaxN; i++)
    if (A[i]>number)
        res = res * A[i];

// res = 3024

Якщо розмірність масиву велика, то результат добутку доцільно тримати у змінній типу double (float). Це зв’язано з тим, що результатом добутку можуть бути дуже великі або дуже малі числа. При використанні цілих типів може виникнути переповнення.

Фрагмент реалізації даної задачі з використанням циклу while

...

// пошук добутку - цикл while
res = 1;
i=0;
while (i<MaxN)
{
    if (A[i]>number)
        res = res * A[i];
    i++;
}
// res = 3024

Реалізація з допомогою циклу do…while

// пошук добутку - цикл do...while
res = 1;
i=0;

do
{
    if (A[i]>number)
        res = res * A[i];
    i++;
}
while (i<MaxN);

// res = 3024

 

4. Визначення наявності (відсутності) заданого символу в масиві символів (тип char)

Нехай задано масив символів M. Визначити, чи є заданий символ sym в масиві M. У даному прикладі пропущено етап вводу масиву M та символу sym. Реалізація алгоритму з використанням циклу for.

char[] M = new char[10]; // заданий масив
char sym;
int i;
bool f;

// ввід масиву M
// ...

// обчислення
f = false;
for (i = 0; i < 10; i++)
    if (M[i] == sym)
        f = true;

 

5. Визначення наявності (відсутності) заданого числа в масиві чисел. Масив має n цілих чисел

Задано масив A цілих чисел. Визначити, чи є задане число num в масиві A.
Реалізація з використанням циклу while (ввід масиву A та змінних n, num пропущено).

// визначення наявності (відсутності) заданого числа в масиві чисел
int[] A = new int[50]; // заданий масив A
int n; // поточна розмірність масиву n = 1..50
int num; // шукане число
int i; // додаткова змінна
bool f; // результат: f=true - число є в масиві, інакше f=false

// ввід A, n, num

...

// обчислення
f = false;
i=0;

while (i<n)
{
    if (A[i] == num)
        f = true;
    i++;
}

 

6. Пошук позиції останнього входження елементу k в масивів з n цілих чисел

Спосіб 1 (повільний).

У даному алгоритмі результуюча змінна pos визначає позицію останнього входження елементу k в масиві з n цілих чисел. Якщо такого символу немає в масиві, то pos = -1. Реалізація з допомогою циклу do…while

// пошук позиції останнього входження елементу k в масиві з n цілих чисел
int[] A = new int[50]; // заданий масив A
int n; // поточна розмірність масиву n = 1..50
int k; // шукане число
int i; // додаткова змінна
int pos; // результат - номер позиції, якщо pos=-1, то числа k не знайдено в масиві A

// ввід A, n, k
...

// обчислення, реалізація з допомогою циклу do...while

pos = -1;
i=0;

do
{
    if (A[i] == k)
        pos = i;
    i++;
}
while (i<n);

 

Спосіб 2 (швидкий).

Якщо проходити (переглядати) індекси масиву з кінця до початку, то перший елемент рівний k буде позицією останнього входження. У цьому випадку реалізація алгоритму (цикл do…while) буде наступною

// пошук позиції останнього входження елементу k в масиві з n цілих чисел
int[] A = new int[50]; // заданий масив A
int n; // поточна розмірність масиву n = 1..50
int k; // шукане число
int i; // додаткова змінна
int pos; // результат - номер позиції, якщо pos=-1, то числа k не знайдено в масиві A

// ввід A, n, k
...

// обчислення, реалізація з допомогою циклу do..while

pos = -1;
i=n-1;

do
{
    if (A[i] == k)
    {
        pos = i;
        i=-1; // вихід з циклу
    }
    else
        i--;
}
while (i>=0);

 

7. Пошук позиції першого входження елементу k в масиві з n цілих чисел

Як було показано в попередньому пункті, цю задачу можна розв’язувати різними способами. У нижченаведеному коді масив переглядається з початку до кінця. Як тільки зустрічається елемент k, відбувається запам’ятовування позиції елементу k і вихід з циклу.

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

// пошук позиції першого входження елементу k в масиві з n цілих чисел
int[] A = new int[50]; // заданий масив A
int n; // поточна розмірність масиву n = 1..50
int k; // шукане число
int i; // додаткова змінна
int pos; // результат - номер позиції, якщо pos=-1, то числа k не знайдено в масиві A

// ввід A, n, k

...

// обчислення, реалізація з допомогою циклу for
pos = -1;
for (i=0; i<n; i++)
    if (A[i]==k)
    {
        pos = i;
        break; // вихід з циклу
    }

 

8. Підрахунок кількості елементів k в масиві з n цілих чисел

У нижченаведеному коді пропущено ввід масиву A та значень n, k.

// підрахунок кількості елементів k в масиві A
int[] A = new int[50]; // заданий масив A
int n; // поточна розмірність масиву n = 1..50
int k; // шукане число
int i; // додаткова змінна
int count; // результат - кількість знайдених елементів

// ввід A, n, k

...

// обчислення, реалізація з допомогою циклу while
count=0;
i=0;
while (i<n)
    if (A[i++]==k)
        count++;

 

9. Підрахунок кількості елементів в масиві з n дійсних чисел, які менше заданого значення k

Реалізація з допомогою циклу do…while

// підрахунок кількості елементів, які менше заданого k
int[] A = new int[50]; // заданий масив A
int n; // поточна розмірність масиву n = 1..50
int k; // порівнювальне значення
int i; // додаткова змінна
int count; // результат

// ввід A, n, k

...

// обчислення, реалізація з допомогою циклу while
count=0;
i=0;

do
{
    if (A[i]<k)
        count++;
    i++;
}
while (i<n);

 

10. Підрахунок кількості елементів в масиві з n дійсних чисел, значення яких знаходиться в межах діапазону [a; b].

// підрахунок кількості елементів, що лежать в заданому діапазоні
double[] M = new double[50]; // заданий масив M
int n; // поточна розмірність масиву n = 1..50
double a, b; // порівнювальні значення
int i; // додаткова змінна
int count; // результат

// ввід A, n, a, b

...

// обчислення, реалізація з допомогою циклу for
count=0;
for (i=0; i<n; i++)
    if ((M[i]>=a)&&(M[i]<=b))
        count++;

 

11. Підрахунок кількості парних елементів в масиві з n цілих чисел

// підрахунок кількості парних елементів в масиві цілих чисел
int[] A = new int[50]; // заданий масив A
int n; // поточна розмірність масиву n = 1..10
int i; // додаткова змінна
int count; // результат - кількість парних елементів

// ввід A, n

...

// обчислення, реалізація з допомогою циклу for
count=0;
for (i=0; i<n; i++)
    if ((A[i]%2)==0)
        count++;

 


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