4. Написати програму, що виводить рядок, введений користувачем у стовпчик.
5. З клавіатури вводиться N чисел. Знайти суму їх натуральних логарифмів. Число N також вводиться з клавіатури.
6. Обчислити суму:
Две алегбраические функции подряд, сверху 5 и "Бесконечность", а снизу x=1 и k= 0 соответственно, сразу после них идёт разделение верхней части на нижнюю, в верхней части следующая формула (-1)^k+1 умножить на x^2k-1, а в нижней части формула (2k+1)k!
7. Створити функцію обчислення площі трикутнику за трьома сторонами
Я попытался перенести из графического вида в текстовый, не знаю насколько получилось, но если кто-то в силах это сделать, я буду ОЧЕНЬ признателен.
терминатором начинается и заканчивается любая функция. тип возвращаемого значения и аргументов функции обычно указывается в комментариях к блоку терминатора.
операции ввода и вывода данных
в гост определено множество символов ввода/вывода, например вывод на магнитные ленты, дисплеи и т.п. если источник данных не принципиален, обычно используется символ параллелограмма. подробности ввода/вывода могут быть указаны в комментариях.
выполнение операций над данными
в блоке операций обычно размещают одно или несколько (гост не запрещает) операций присваивания, не требующих вызова внешних функций.
блок, иллюстрирующий ветвление алгоритма
блок в виде ромба имеет один вход и несколько подписанных выходов. в случае, если блок имеет 2 выхода (соответствует оператору ветвления), на них подписывается результат сравнения — «да/нет». если из блока выходит большее число линий (оператор выбора), внутри него записывается имя переменной, а на выходящих дугах — значения этой переменной.
вызов внешней процедуры
вызов внешних процедур и функций помещается в прямоугольник с дополнительными вертикальными линиями.
начало и конец цикла
символы начала и конца цикла содержат имя и условие. условие может отсутствовать в одном из символов пары. расположение условия, определяет тип оператора, соответствующего символам на языке высокого уровня — оператор с предусловием (while) или постусловием (do … while).
подготовка данных
символ «подготовка данных» в произвольной форме (в гост нет ни пояснений, ни примеров), задает входные значения. используется обычно для циклов со счетчиком.
соединитель
в случае, если блок-схема не умещается на лист, используется символ соединителя, отражающий переход потока между листами. символ может использоваться и на одном листе, если по каким-либо причинам тянуть линию не удобно.
комментарий
комментарий может быть соединен как с одним блоком, так и группой. группа блоков выделяется на схеме пунктирной линией.
Как исповедующий подход на атомарное разбиение кода на функции/методы/классы, предпочитаю видеть код, в котором каждая операция выполняется в своей функции.
Это упрощает повторное использование кода, да и мыслить такой код проще, чем когда тебе в одной функции нужно отслеживать несколько состояний для их синхронизации.
В данном задании действие этого подхода видно слабо.
P.S. srand(time(nulptr)) и rand() - "плохой" получения случайных чисел, так как время находится под контролем пользователя и он может выставлять время специально. Но "хороший" реализовывать здесь смысла нет.
===========================
Если решение удовлетворило, не забудь отметить его как "Лучшее".
===========================
Код:
#include <iostream>
#include <cstdlib>
#include <ctime>
int rand_range(int min, int max) {
return std::rand() % (max - min + 1) + min;
}
int* random_sequence(int N, int min, int max) {
int *arr = new int[N];
for(auto i = 0; i < N; ++i) {
arr[i] = rand_range(min, max);
}
return arr;
}
template<typename T>
void print_sequence(const T * arr, size_t size) {
for(auto i = 0; i < size; ++i) {
std:: cout << arr[i] << " ";
}
}
long calculate_production(const int *arr, size_t size) {
long accumulator = 1;
for(auto i = 0; i < size; ++i) {
if (i % 2 == 0) continue;
accumulator *= arr[i];
}
return accumulator;
}
int main() {
const int min_random = -19, max_random = 26;
int N;
std::cout << "How many number should we generate? N = ";
std::cin >> N;
std::srand(std::time(nullptr));
int *arr = random_sequence(N, min_random, max_random);
терминатор начала и конца работы функции
терминатором начинается и заканчивается любая функция. тип возвращаемого значения и аргументов функции обычно указывается в комментариях к блоку терминатора.
операции ввода и вывода данных
в гост определено множество символов ввода/вывода, например вывод на магнитные ленты, дисплеи и т.п. если источник данных не принципиален, обычно используется символ параллелограмма. подробности ввода/вывода могут быть указаны в комментариях.
выполнение операций над данными
в блоке операций обычно размещают одно или несколько (гост не запрещает) операций присваивания, не требующих вызова внешних функций.
блок, иллюстрирующий ветвление алгоритма
блок в виде ромба имеет один вход и несколько подписанных выходов. в случае, если блок имеет 2 выхода (соответствует оператору ветвления), на них подписывается результат сравнения — «да/нет». если из блока выходит большее число линий (оператор выбора), внутри него записывается имя переменной, а на выходящих дугах — значения этой переменной.
вызов внешней процедуры
вызов внешних процедур и функций помещается в прямоугольник с дополнительными вертикальными линиями.
начало и конец цикла
символы начала и конца цикла содержат имя и условие. условие может отсутствовать в одном из символов пары. расположение условия, определяет тип оператора, соответствующего символам на языке высокого уровня — оператор с предусловием (while) или постусловием (do … while).
подготовка данных
символ «подготовка данных» в произвольной форме (в гост нет ни пояснений, ни примеров), задает входные значения. используется обычно для циклов со счетчиком.
соединитель
в случае, если блок-схема не умещается на лист, используется символ соединителя, отражающий переход потока между листами. символ может использоваться и на одном листе, если по каким-либо причинам тянуть линию не удобно.
комментарий
комментарий может быть соединен как с одним блоком, так и группой. группа блоков выделяется на схеме пунктирной линией.
Как исповедующий подход на атомарное разбиение кода на функции/методы/классы, предпочитаю видеть код, в котором каждая операция выполняется в своей функции.
Это упрощает повторное использование кода, да и мыслить такой код проще, чем когда тебе в одной функции нужно отслеживать несколько состояний для их синхронизации.
В данном задании действие этого подхода видно слабо.
P.S. srand(time(nulptr)) и rand() - "плохой" получения случайных чисел, так как время находится под контролем пользователя и он может выставлять время специально. Но "хороший" реализовывать здесь смысла нет.
===========================
Если решение удовлетворило, не забудь отметить его как "Лучшее".
===========================
Код:
#include <iostream>
#include <cstdlib>
#include <ctime>
int rand_range(int min, int max) {
return std::rand() % (max - min + 1) + min;
}
int* random_sequence(int N, int min, int max) {
int *arr = new int[N];
for(auto i = 0; i < N; ++i) {
arr[i] = rand_range(min, max);
}
return arr;
}
template<typename T>
void print_sequence(const T * arr, size_t size) {
for(auto i = 0; i < size; ++i) {
std:: cout << arr[i] << " ";
}
}
long calculate_production(const int *arr, size_t size) {
long accumulator = 1;
for(auto i = 0; i < size; ++i) {
if (i % 2 == 0) continue;
accumulator *= arr[i];
}
return accumulator;
}
int main() {
const int min_random = -19, max_random = 26;
int N;
std::cout << "How many number should we generate? N = ";
std::cin >> N;
std::srand(std::time(nullptr));
int *arr = random_sequence(N, min_random, max_random);
print_sequence(arr, N);
auto result = calculate_production(arr, N);
std::cout << ":" << result;
delete[] arr;
return 0;
}