variant_11
.docxИ снова вызывается функция setData(), которая позволит внести данные в новый выделенный участок памяти – в последний элемент массива структур.
Когда пользователь решит больше не вводить данные – он нажимает ноль. После этого сработает функция showData() и на экране отобразится таблица с данными со всех структур динамического массива. В самом конце программы не забываем освободить память, которую занимает динамический массив структур.
Задание 12*. Составить схему алгоритма и программу на языке C++, позволяющую решить предложенную в Вашем варианте задачу с использованием рекурсии.
Напишите программу разложения натурального числа на простые множители.
Листинг П.10.
#include<iostream>
#include<windows.h>
#include<conio.h>
using namespace std;
void rec(int a, int b)// рекурсивная функция называется rec. В параметрах функции передается 2 целых числа
{
if (a == 1)// если число a равно 1 (число a, которое передали в параметрах функции)
return;// то возвращаемся туда, откуда вызывали рек. функцию
for (;; b++)// продолжаем цикл, увеличивая значение b (цикл продолжается бесконечно)
if (a%b == 0)// если нашли число b которое без остатка делится на a
{
cout << b << endl;
rec(a / b, b);// вызываем рек. функцию (в параметрах ей передаем a/b и b)
return;// после того как программа отработает вызов рек. функции из предыдущей строки возвращаемся сюда. Здесь программа отрабатывает оператор return (возвращается в точку откуда была вызвана эта рек. функция)
}
}
int main()
{
int a;
setlocale(LC_ALL, "rus");
cout << "Введите натуральное число:" << endl;
cin >> a;
cout << "Результат разложения числа на простые множители:" << endl;
rec(a, 2);// вызываем рек. функцию (в параметрах передаем число введенное пользователем и число 2, первое простое число)
_getch();
return 0;
}
Результат работы программы:
1 Будем считать, что заданная точность достигнута, если абсолютное значение члена ряда an станет меньше, т.е. .