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

Написать программу, вычисляющую n! (факториал). - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.65
studentka1416
Сообщений: n/a
13.05.2011, 23:17     Написать программу, вычисляющую n! (факториал). #1
Помогите пожалуйста написать программу на С++, вычисляющую n! (факториал). Процедуру вычисления факториала реализовать в отдельном потоке.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jtalk
93 / 79 / 4
Регистрация: 13.05.2011
Сообщений: 279
13.05.2011, 23:52     Написать программу, вычисляющую n! (факториал). #2
По поводу факториала уже километры текста написаны - ищите.
По поводу потока копайте в сторону _beginthread/pthread_create
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
14.05.2011, 00:15     Написать программу, вычисляющую n! (факториал). #3
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
#include<windows.h>
 
char buf[128];
 
DWORD Factorial(LPVOID x){
    DWORD n=*(LPDWORD)x, res=1;
    while(n){
        res*=n--;
    }
    wsprintf(buf, "%d", res);
    return MessageBox(HWND_DESKTOP, buf, "Result", 0);
}
 
int main(){
    DWORD n=6;
    HANDLE hThread=CreateThread(NULL,
                 0,
                 (LPTHREAD_START_ROUTINE)Factorial,
                 (LPVOID)&n,
                 0,
                 NULL);
    WaitForSingleObject(hThread, INFINITE);
    return 0;
}
Jtalk
93 / 79 / 4
Регистрация: 13.05.2011
Сообщений: 279
14.05.2011, 00:21     Написать программу, вычисляющую n! (факториал). #4
igorrr37, чтобы иметь возможность запустить Factorial в CreateThread, ее нужно объявить с атрибутом __stdcall.

А вообще, для C/C++ рекомендуется использовать функцию _beginthread из CRT.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
14.05.2011, 01:28     Написать программу, вычисляющую n! (факториал). #5
Я конечно с бустопотоками не особо дружу. Но если С++ стайл то как-то так.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <boost/thread.hpp>
#include <iostream>
 
void factorial(unsigned long long* number)
{
    unsigned long long result = 1;
    for(int i = *number; i >= 2; --i)
        result *= i;
    *number = result;
}
 
int main()
{
    unsigned long long number = 0;
    std::cin >> number;
    boost::thread thread(factorial, &number);
    thread.join();
    std::cout << number << '\n';
}
Jtalk
93 / 79 / 4
Регистрация: 13.05.2011
Сообщений: 279
14.05.2011, 05:45     Написать программу, вычисляющую n! (факториал). #6
Цитата Сообщение от ForEveR Посмотреть сообщение
Я конечно с бустопотоками не особо дружу. Но если С++ стайл то как-то так.
Человек не может вычислить факториал - думаете, он сможет собрать boost::thread? Да и смысл это делать для данной задачи?
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
14.05.2011, 10:32     Написать программу, вычисляющую n! (факториал). #7
через _beginthreadex
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<windows.h>
#include<process.h>
#include<iostream>
 
unsigned WINAPI Factorial(void* x){
    unsigned n=*reinterpret_cast<unsigned*>(x);
    unsigned long long res=1;
    while(n){
        res*=n--;
    }
    std::cout<<res<<"\n";
    return 0;
}
 
int main(){
    unsigned n=4;
    HANDLE hThread=(HANDLE)_beginthreadex(NULL, 0, Factorial, reinterpret_cast<void*>(&n), 0, NULL);
    WaitForSingleObject(hThread, INFINITE);
    CloseHandle(hThread);
    return 0;
}
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
14.05.2011, 11:43     Написать программу, вычисляющую n! (факториал). #8
Jtalk, gcc поддерживает std:thread вроде как
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.05.2011, 12:21     Написать программу, вычисляющую n! (факториал).
Еще ссылки по теме:

C++ Написать программу вычисляющую факториал числа, находящегося в поле ввода
Написать программу, вычисляющую сумму C++
C++ Написать программу, вычисляющую степень числа

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Jtalk
93 / 79 / 4
Регистрация: 13.05.2011
Сообщений: 279
14.05.2011, 12:21     Написать программу, вычисляющую n! (факториал). #9
Цитата Сообщение от ForEveR Посмотреть сообщение
Jtalk, gcc поддерживает std:thread вроде как
Только при наличии gthread в поставке, насколько я помню. На Linux заведется, а вот на Windows в MinGW будет ругаться на библиотеки. Ждем официального релиза C++0x и молимся на команду MinGW...
Yandex
Объявления
14.05.2011, 12:21     Написать программу, вычисляющую n! (факториал).
Ответ Создать тему
Опции темы

Текущее время: 05:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru