Форум программистов, компьютерный форум CyberForum.ru

программа вычисления факториала любого числа - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ метод бинарной вставки http://www.cyberforum.ru/cpp-beginners/thread723769.html
Дан массив записей, каждая из которых содержит следующую информацию: название государства, столица, количество жителей. Используя метод бинарной вставки, упорядочить массив записей по росту количества жителей.
C++ Заменой одной из цифр числа на произвольную цифру найти число, делящееся на наибольшее количество своих цифр По каждому из некоторого количества натуральных чисел N, заменой одной из его цифр на произвольную цифру(если возможно) найти число, делящееся на наибольшее количество своих цифр. http://www.cyberforum.ru/cpp-beginners/thread723757.html
Перегрузка функций C++
Здравствуйте ув. программисты не могли бы мне кто нибуть написать простейшие примеры перегрузки +, -, логичное или , и умножения.
C++ как вызвать метод из указателя на вектор пользовательского типа
#include <iostream> #include <vector> #include <string> using namespace std; struct Client { vector <string> login; vector <string> password; vector <int> access; void output()
C++ страусиная ферма http://www.cyberforum.ru/cpp-beginners/thread723708.html
Уважаемые программисты! Помогите, пожалуйста, решить такую задачку. Сам пробовал, но не получилось (получается уравнение с двумя неизвестными N и M, а такое решить нельзя). Буду очень благодарен. Ссылка на задачу: удалено Как вы помните, Джонни работает в правительственных службах одной неизвестной страны. В свободное время он разводит страусов на своей маленькой ферме. На ферме есть NxM...
C++ Объясните решение задачи (ряд Тейлора) Вычислить и вывести на экран в виде таблицы значения функции, с помощью ряда Тейлора, на интервале от x-нач до x-кон с шагом dx с точностью eps. Таблицу снабдить заголовком и шапкой. Каждая строка должна содержать значение аргумента, значение функции и количество просуммированных членов ряда. подробнее

Показать сообщение отдельно
elena3
0 / 0 / 0
Регистрация: 08.12.2012
Сообщений: 5
15.01.2013, 13:40  [ТС]     программа вычисления факториала любого числа
Ребята, кого заинтересовала моя программа, скидываю вам её
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>
#include <iostream> 
#include <string>
#include <fstream>
//#include "fl.h"
 
using namespace std;
 
 
void multiply(vector<int> &result, int number);
 
void multiply(vector<int> &result, int number) // функция для перемножения 2х чисел
                                               // записываем поразрядно в вектор: десятки сотни и так далее 
                                               // и увеличиваем размер вектора
                                               // пока последний элемент больше 9ки
                                               // (т.е. есть десятки сотни и все такое)
{
    transform(result.begin(), result.end(), result.begin(), bind2nd(multiplies<int>(), number));
    for(vector<int>::size_type i = 0; i < result.size() - 1; i++) 
    {
        result[i + 1] += result[i] / 10; 
        result[i] %= 10;
    }
    while(result.back() > 9) 
    {
        result.push_back(result.back() / 10); 
        result[result.size() - 2] %= 10; 
    }
}
int main()
{
    int n;
    char str[256]; 
    int a;
    cout << "Factorial. Choose a method of input a number to calculate factorial" << endl;
    
    for ( ; ; )
    {
        cout << "1. Type using keyboard" << endl;
        cout << "2. Read from file" << endl;
        cin >> a;
        if (a == 1)
        {
            cout << "Enter the number: " ;
            cin >> n;
            break;
        }   
        else if (a == 2)
        {
            ifstream fact1; 
            fact1.open("input.txt"); 
                fact1 >> str; //считали строку шз файла(до разделяющего символа)
                    sscanf(str, "%d", &n);  //Cчитали число из строки. 
                                            //Исходя из выбранного метода считывания 
                                            //не требуется "защита от дурака" на ввод 
                                            //дробных чисел, для которых, как следует 
                                            //из определения, факториал так же 
                                            //не определен
            fact1.close(); // закрыли файл
            break;
        }
        else
        {
            cout << "You entered wrong number. Retry" << endl;
        }
    }
    ofstream fact2;
    fact2.open("output.txt"); // открыли файл вывода
    fact2 << "Factorial " << n << " = " ; // записали результат (подготовка)
    cout << "Factorial " << n << " = " ;  // вывели результат на экран (подготовка)
 
    vector<int> result(1, 1); // создали интовый вектор
    for(n; n > 0; multiply(result, n--)); // перемножаем числа - собсна сам факториал
    transform(result.rbegin(), result.rend(), ostream_iterator<char>(fact2), bind2nd(plus<int>(), '0')); // записали основное число в файл
    transform(result.rbegin(), result.rend(), ostream_iterator<char>(cout), bind2nd(plus<int>(), '0')); // вывели основное число на экран
 
    fact2.close(); // закрыли файл
    
    cout << endl; // << "Press Enter to exit" << endl;
    system("pause");
 
    return 0;
}
напоминаю, она работает на Visual Studio 2008
 
Текущее время: 10:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru