GVA SUPPORT

Відповідь на запитання № 1419078766
Text:
	ФІО = 4курсник

 Запитання:Завдання до ООП:
1. Для заданого натурального числа n повертати результат "істина", якщо n! може бути записане у вигляді добутку трьої послідовних цілих чисел та "хибність" у супротивному випадку.
2. Для заданої дійсної матриці А розмірності m x n одержати A^T x A.

====================================


 ANSWER ====================================

/*
1. Для заданого натурального числа n повертати результат "істина",
якщо n! може бути записане у вигляді добутку трьох послідовних цілих чисел та
"хибність" у супротивному випадку.
*/

//---------------------------------------------------------------------------

#pragma hdrstop

//---------------------------------------------------------------------------
#include <iostream>
#include <conio.h>

#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 ( "<<i<<" ) = "<<factorial(i)<<" : "<<(check_f(i)?"true":"false")<<endl;
                /* аналог
                cout<<" f ( "<<i<<" ) = ";
                if (check_f(i))
                {
                        cout<<"true"<<endl;
                }
                else
                {
                        cout<<"false"<<endl;
                }
                */
        }
        cout<<endl<<endl;
        long long n;
        cout<<"Enter N : ";
        cin>>n;
        cout<<" f ( "<<n<<" ) = "<<factorial(n)<<" : "<<(check_f(n)?"true":"false")<<endl;
        
        getch();

        return 0;
}
//---------------------------------------------------------------------------



 END of ANSWER ====================================



 ANSWER ====================================

Що стосується другого завдання: легко відповість проф. Гугл
https://www.google.com.ua/search?client=opera&q=матрица+на+транспонированную+C%2B%2B&sourceid=opera&ie=UTF-8&oe=UTF-8#q=%D1%83%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5+%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%8B+%D0%BD%D0%B0+%D1%82%D1%80%D0%B0%D0%BD%D1%81%D0%BF%D0%BE%D0%BD%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%83%D1%8E+c%2B%2B

Виправлення по мелочі і:
http://forum.developing.ru/showthread.php/24851-Перемножение-транспонирование-матриц



 END of ANSWER ====================================

	
Ваша відповідь