Операции, выполняемые с элементами массива, соответствуют операциям, которые выполняются над базовым типом элементов массива (пример 11.23).
Пример 11.24. Задан одномерный массив из целых чисел. Найти сумму и произведение элементов этого массива.
Этапы выполнения задания
I. Исходные данные: массив a и количество элементов n.
II. Результат: s — сумма элементов и p — произведение элементов массива.
III. Алгоритм решения задачи.
1. Ввод исходных данных. Массив вводится поэлементно с клавиатуры. 2. Определение начального значения для суммы (s = 0) и для произведения (p = 1). 3. В цикле добавляем очередной элемент массива к сумме и к произведению. 4. Вывод результата.
IV. Описание переменных: n, s, p — int, a – vector <int>.
Пример 11.25. Отметки по информатике за первую четверть для всех учащихся 10 Б класса записаны в текстовом файле (первое число в файле указывает количество учащихся). Успеваемость в классе будем считать хорошей, если средний балл больше 7, плохой — если средний балл ниже 4, в остальных случаях успеваемость средняя. Определить успеваемость класса по заданным отметкам.
Этапы выполнения задания
I. Исходные данные: массив a для хранения отметок и количество учащихся n.
II. Результат — одно из слов: «хорошая», «средняя», «плохая» в зависимости от значения среднего балла.
III. Алгоритм решения задачи.
1. Ввод исходных данных. Сначала вводим количество учащихся в классе, затем массив отметок. 2. Для определения успеваемости нужно вычислить средний балл (переменная sr). Средний балл определяется как сумма (переменная s) всех отметок, деленная на количество учащихся в классе. Начальное значение для суммы – s = 0. 3. В цикле добавляем очередной элемент массива к сумме. 4. Делим полученную сумму на количество учащихся в классе. 5. Проверяем значение среднего балла и выводим результат.
IV. Описание переменных: n, s, p – int, sr – double, a – vector <int>.
Пример 11.26. Задано натуральное число n (1 < n < 5000). Определить, является ли это число простым.
Этапы выполнения задания
I. Исходные данные: n — натуральное число.
II. Результат: вывод сообщения «простое» или «составное».
III. Алгоритм решения задачи.
1. Ввод исходных данных. 2. Известно, что число n является простым, если оно не делится ни на одно простое число, не большее чем . Максимальное число по условию — 5000, . Создадим массив констант s_n из простых чисел, не больших 71. 3. В цикле будем делить число n на каждое из чисел не больших , хранящихся в массиве констант. Если число n не разделилось ни на одно из них, то число n — простое, иначе — составное. 4. Проверяем, с каким условием закончил работу цикл: число является простым, если последний просмотренный элемент массива больше (число ни на что не разделилось). 5. Вывод результата.
IV. Описание переменных: n, — int, s_n – vector <int>. |
Пример 11.23. Операции над базовым типом.
- Если базовым типом элементов массива является тип int, то для элементов допустимы следующие операции: +, –, *, /, %.
- Если в массиве хранятся числа типа double, то допустимыми будут операции +, –, *, /.
- Если в массиве хранятся строки, то для каждого его элемента доступны строковые функции.
Пример 11.24.
V. Программа:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n;
cout << "vvedi n=";
cin >> n;
vector <int> a(n);
for (int i = 0; i < n; i++)
cin >> a[i];
int s = 0;
int p = 1;
for (int i = 0; i < n; i++) {
s += a[i];
p *= a[i];
}
cout << "proizvedenie=" << p;
cout << " summa=" << s << endl;
return 0;
} |
VI. Тестирование.
Пример 11.25.
V. Программа:
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int main()
{
ifstream fin("input.txt");
setlocale(0, "");
int n;
fin >> n;
vector <int> a(n);
for (int i = 0; i < n; i++)
fin >> a[i];
int s = 0;
for (int i = 0; i < n; i++)
s += a[i];
double sr = 1. * s / n;
cout << "sr = " << sr << endl;
if (sr > 7)
cout << "хорошая" << endl;
else
if (sr < 4)
cout << "плохая" << endl;
else
cout << "средняя" << endl;
return 0;
} |
VI. Тестирование.
Пример 11.26.
Условие s_n[i] <= sqrt(n) проверяется долго за счет вызова функции sqrt(n) и перехода к вычислениям с вещественным типом данных. Это условие обычно заменяют эквивалентным: s_n[i]*s_n[i] <= n.
V. Программа:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector <int> s_n = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71};
int n;
cout << "n = ";
cin >> n;
int i = 0;
while (s_n[i] * s_n[i] <= n
&& n % s_n[i])
i++;
if (s_n[i] * s_n[i] > n)
cout << "prostoe" << endl;
else
cout << "sostavnoe" << endl;
return 0;
}
|
VI. Тестирование.
Анализ результатов. Проверить правильность вычислений можно на калькуляторе или посмотреть в таблице простых чисел [1].
[1] Технические таблицы — http://tehtab.ru/guide/guidemathematics/guidemathematicsfigurestables/simplefigures/
|