1 of 14

Алгоритмы обработки одномерного массива

-ОПРЕДЕЛЯТЬ СУММУ/ ПРОИЗВЕДЕНИЕ ЭЛЕМЕНТОВ ОДНОМЕРНОГО МАССИВА 

2 of 14

Практические задания на вложенный цикл

1.Выведите на экран таблицу умножения чисел от 1 до 9

2.У вас есть массив из N случайных целых положительных чисел. Для каждого числа из этого массива выведите на экран, по отдельной строчке все числа от 1 до этого числа(включительно).

n(5,3,2)

12345

123

12

3.

3 of 14

На картинке даны практические задания на вложенный цикл.�Вложенный цикл — это когда один цикл находится внутри другого.

for (...) {

    for (...) {

        // действия

    }

}

  • внешний цикл отвечает за строки
  • внутренний цикл отвечает за элементы внутри строки

Шаг 1. Нужен первый цикл для первого числа

  • Он будет идти от 1 до 9:      for (int i = 1; i <= 9; i++)                    
  • i = 1
  • потом i = 2
  • потом i = 3
  • ...
  • до 9

Шаг 2. Внутри него нужен второй цикл для второго числа Он тоже идет от 1 до 9:

for (int j = 1; j <= 9; j++)

Шаг 3. На каждом шаге выводим произведение

cout << i << "*" << j << "=" << i * j << endl;

#include <iostream>

using namespace std;

int main() {

    for (int i = 1; i <= 9; i++) {  // внешний цикл (строки)

        for (int j = 1; j <= 9; j++) { // внутренний цикл (элементы)

            cout << i << "*" << j << "=" << i * j << endl;

        }

        cout << endl;

    }

    return 0;

}

Переменная i — это:

  • переменная-счетчик
  • отвечает за внешний цикл
  • хранит текущее число
  • в таблице умножения — это первое число
  • изменяется от 1 до 9

4 of 14

1 x 1 = 1

1 x 2 = 2

1 x 3 = 3

1 x 4 = 4

1 x 5 = 5

1 x 6 = 6

1 x 7 = 7

1 x 8 = 8

1 x 9 = 9

2 x 1 = 2

2 x 2 = 4

2 x 3 = 6

2 x 4 = 8

2 x 5 = 10

2 x 6 = 12

2 x 7 = 14

2 x 8 = 16

2 x 9 = 18

И так до 9.

5 of 14

  • Шаг 1. Создаем массив
  • int a[3] = {5, 3, 2};
  • Шаг 2. Внешний цикл проходит по массиву  Он берет по одному числу:
  • for (int i = 0; i < 3; i++)
  • Тут:
  • сначала a[0] = 5
  • потом a[1] = 3
  • потом a[2] = 2
  • Шаг 3. Внутренний цикл выводит от 1 до этого числа
  • Например, если число 5, значит надо вывести:
  • 1 2 3 4 5
  • for (int j = 1; j <= a[i]; j++)
  • Шаг 4. После каждого числа переходим на новую строку
  • cout << endl;

6 of 14

#include <iostream>

using namespace std;

int main() {

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

    for (int i = 0; i < 3; i++) {

        for (int j = 1; j <= a[i]; j++) {

            cout << j;

        }

        cout << endl;

    }

    return 0;

}

Как программа думает

Первый проход:

  • i = 0
  • a[i] = 5
  • выводим: 12345

Второй проход:

  • i = 1
  • a[i] = 3
  • выводим: 123

Третий проход:

  • i = 2
  • a[i] = 2
  • выводим: 12

Как программа думает

Первый проход:

  • i = 0
  • a[i] = 5
  • выводим: 12345

Второй проход:

  • i = 1
  • a[i] = 3
  • выводим: 123

Третий проход:

  • i = 2
  • a[i] = 2
  • выводим: 12

7 of 14

#include <iostream>

using namespace std;

int main() {

    int N;

    cin >> N;

    int num = 1;

    for (int i = 1; num <= N; i++) {

        for (int j = 1; j <= i && num <= N; j++) {

            cout << num << " ";

            num++;

        }

        cout << endl;

    }

    return 0;

}

8 of 14

Практические задания на массивы

  • Вычислить сумму и произведение отрицательных элементов одномерного массива

  • Вычислить сумму и произведение элементов массива, значения каждого из которых больше 0 и меньше 3

  • Написать программу, которая создает одномерный массив из N целых чисел. Количество чисел в массиве и сами числа вводятся с клавиатуры. Ввести число L. Все элементы массива больше L заменить на число 5. Вывести на экран элементы введенного массива и полученного.

9 of 14

Найти сумму и произведение отрицательных элементов массива

Что нужно сделать

Есть массив чисел.�Нужно:

  • найти сумму всех отрицательных чисел
  • найти произведение всех отрицательных чисел

Пример

Массив:�[4, -2, 7, -3, 5]

Отрицательные элементы:�-2 и -3

Тогда:

  • сумма: -2 + (-3) = -5
  • произведение: -2 * (-3) = 6

Как решать

  1. Вводим количество элементов массива
  2. Вводим сам массив
  3. Проходим по массиву с помощью цикла
  4. Если число меньше 0, то:
    1. добавляем его к сумме
    2. умножаем на него произведение

#include <iostream>

using namespace std;

int main() {

    int n;

    cout << "Введите количество элементов: ";

    cin >> n;

    int a[100];

    cout << "Введите элементы массива: ";

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

        cin >> a[i];

    }

    int sum = 0;

    int p = 1;

    bool found = false; // чтобы понять, были ли отрицательные числа

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

        if (a[i] < 0) {

            sum = sum + a[i];

            p = p * a[i];

            found = true;

        }

    }

    if (found == true) {

        cout << "Сумма отрицательных элементов = " << sum << endl;

        cout << "Произведение отрицательных элементов = " << p << endl;

    } else {

        cout << "Отрицательных элементов нет";

    }

    return 0;

}

10 of 14

Объяснение кода

int sum = 0;

Сумма всегда начинается с 0.

int p = 1;

Произведение начинается с 1, потому что при умножении 1 не меняет число.

if (a[i] < 0)

Проверяем: если элемент отрицательный, тогда работаем с ним.

sum = sum + a[i];

Добавляем отрицательное число к сумме.

p = p * a[i];

Умножаем произведение на это число.

11 of 14

int sum = 0;

Сумма всегда начинается с 0.

int p = 1;

Произведение начинается с 1, потому что при умножении 1 не меняет число.

if (a[i] < 0)

Проверяем: если элемент отрицательный, тогда работаем с ним.

sum = sum + a[i];

Добавляем отрицательное число к сумме.

p = p * a[i];

Умножаем произведение на это число.

2) Найти сумму и произведение элементов, которые больше 0 и меньше 3

Что это значит

Нужно взять только те элементы, которые:

  • больше 0
  • меньше 3

То есть подходят числа:�1 и 2

Пример

Массив:�[5, 1, 2, 3, -1]

Подходят только:�1 и 2

Тогда:

  • сумма: 1 + 2 = 3
  • произведение: 1 * 2 = 2

Как решать

  1. Вводим массив
  2. Проверяем каждый элемент
  3. Если он > 0 и < 3, то включаем его в сумму и произведение

12 of 14

#include <iostream>

using namespace std;

int main() {

    int n;

    cout << "Введите количество элементов: ";

    cin >> n;

    int a[100];

    cout << "Введите элементы массива: ";

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

        cin >> a[i];

    }

    int sum = 0;

    int p = 1;

    bool found = false;

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

        if (a[i] > 0 && a[i] < 3) {

            sum = sum + a[i];

            p = p * a[i];

            found = true;

        }

    }

    if (found == true) {

        cout << "Сумма элементов = " << sum << endl;

        cout << "Произведение элементов = " << p << endl;

    } else {

        cout << "Таких элементов нет";

    }

    return 0;

}

13 of 14

Практические задания на массивы

  • Для заданного массива вычислить и напечатать сумму, произведение и количество его положительных элементов.

  • В заданных массивах A и B поменять местами максимальные элементы. Вывести на экран преобразованные массивы.

  • Задан массив B, содержащий 20 вещественных чисел. Найти сумму элементов массива, которые лежат на четных позициях. Считать, что позиции 024 и т.д. есть парными.

14 of 14

Рефлексия

  • Что я понял(а)?
  • Над чем еще нужно поработать?
  • Какие переменные и математические выражения используются для нахождения суммы и произведения массива?