ФІО = 4курсник Запитання:Завдання до ООП: 1. Для заданого натурального числа n повертати результат "істина", якщо n! може бути записане у вигляді добутку трьої послідовних цілих чисел та "хибність" у супротивному випадку. 2. Для заданої дійсної матриці А розмірності m x n одержати A^T x A. ==================================== ANSWER ==================================== /* 1. Для заданого натурального числа n повертати результат "істина", якщо n! може бути записане у вигляді добутку трьох послідовних цілих чисел та "хибність" у супротивному випадку. */ //--------------------------------------------------------------------------- #pragma hdrstop //--------------------------------------------------------------------------- #include #include #pragma argsused using namespace std; long long factorial(long long n) {// метод рахує факторіал "n" if (n == 0 || n == 1 ) return 1; // тут немає чого і разувати if (n < 0 ) return -1 ;// помилка. Не рахуємо. Вилітаємо. long long i = 1; // ітератор long long result = 1; // аккумулятор for ( ; i <= n ; i++) { result *= i; // аналог result = result * i; } return result; } bool check_f(long long n) { // n повертати результат "істина", // якщо n! може бути записане у вигляді добутку трьох // послідовних цілих чисел та "хибність" у супротивному випадку // IMHO: дурацьке завдання якесь... БО, цей метод буде повертати результат TRUE для // чисел 3 та 4. Для інших ні... це можна так і тупо вбити, посилаючись на такі розмірковування. // Бо, факторіал n за означенням це сума добутків від 1 до n включно. // тобто n! = 1 * 2 * 3 * 4 * ... * n; /* Лінивий варіант рішення return ( n == 3 || n == 4 ? true : false); // аналог if (n == 3 || n == 4) return true; else false; */ // нелінивий варіант рішення if (n < 3) { // якщо менше ніж 3 числа, то немає і чого перевіряти return false; } // якщо більше, то спробуємо перевірити послідовність long long f_result = factorial(n); // результуючий файкторіал цікавлячого числа, рахується один раз for (long long i = 1 ; i <= n - 2 ; i++) // тут (n - 2), що б не залізли за межі цікавлячого {// спробуємо перебрати long long result = 1; // аккумулятор for (long long j = i ; j < i + 3 ; j++) {// в кожній ітій ітерації рахуємо добуток чисел i,i+1 та i+2 result *=j; } if (result == f_result) {// ну нарешті, знайшли - вилітаємо return true; } } // нажаль не знайшли.... ойойой... return false; } int main(int argc, char* argv[]) { for (long long i = 1 ; i < 10 ; i++) { cout<<" f ( "<>n; cout<<" f ( "<