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

C++ нахождение факториала числа n с вводом из файла - C++

Восстановить пароль Регистрация
 
Marianna323
0 / 0 / 0
Регистрация: 26.12.2013
Сообщений: 14
04.06.2014, 23:50     C++ нахождение факториала числа n с вводом из файла #1
Здравствуйте!
В общем мне нужно написать программку, которая считала бы факториал числа n типа int и чтобы число для расчета бралось из файла input, а результат записывался в файл output.
У меня вышло вот так
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <fstream.h>
using namespace std;
 
int fact(int n)
{
    if(n < 0) // если пользователь ввел отрицательное число
        return 0; // возвращаем ноль
    if (n == 0) // если пользователь ввел ноль,
        return 1; // возвращаем факториал от нуля
    else // Во всех остальных случаях
        return n * fact(n - 1); // делаем рекурсию.
}
 
int main()
{
    ifstream in ("input.txt");
    char n;
    in.get(n);
    cout << "Factorial " << n << " = " << fact(n) << endl << endl; // fact(N) - функция для вычисления факториала.
    system("pause");
    return 0;
}
Только проблема в том, что он почему-то всегда получает 0, хотя в файле другое число. Что не так в коде?
И помогите пожалуйста с выводом в файл, если можно.
Заранее спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2014, 23:50     C++ нахождение факториала числа n с вводом из файла
Посмотрите здесь:

нахождение факториала рекурсией C++
C++ Вычисление факториала числа
C++ нахождение факториала
C++ вводом строк из файла
Нахождение факториала: для заданного N найти последнюю отличную от нуля цифру C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Pjeroo
Землянин
 Аватар для Pjeroo
33 / 33 / 12
Регистрация: 15.01.2013
Сообщений: 313
05.06.2014, 00:23     C++ нахождение факториала числа n с вводом из файла #2
Marianna323,
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
#include <iostream>
#include <fstream>
using namespace std;
 
int fact(int n)
{
    if(n < 0) // если пользователь ввел отрицательное число
        return 0; // возвращаем ноль
    if (n == 0) // если пользователь ввел ноль,
        return 1; // возвращаем факториал от нуля
    else // Во всех остальных случаях
        return n * fact(n - 1); // делаем рекурсию.
}
 
int main()
{
    ifstream in ("input.txt");
    ofstream out ("output.txt");
    char n;
    int N;
    in.get(n);
    N = n - '0';
    cout << "Factorial " << n << " = " << fact(N) << endl << endl; // fact(N) - функция для вычисления факториала.
    out << "Factorial " << n << " = " << fact(N);
    return 0;
}
Как-то так.
Kerry_Jr
Модератор
 Аватар для Kerry_Jr
1855 / 1651 / 574
Регистрация: 14.05.2014
Сообщений: 4,726
Записей в блоге: 1
Завершенные тесты: 5
05.06.2014, 00:29     C++ нахождение факториала числа n с вводом из файла #3
Цитата Сообщение от Pjeroo Посмотреть сообщение
char n;
int N;
in.get(n);
а разве так нельзя?
C++
1
2
int n;
in >> n;
И факториал лучше итеративно считать
C++
1
2
3
4
5
6
7
8
long fact(int n)
{
    if (n < 0) return 0;
    long f = 1;
    while (n > 1)
        f *= n--;
    return f;
}
Pjeroo
Землянин
 Аватар для Pjeroo
33 / 33 / 12
Регистрация: 15.01.2013
Сообщений: 313
05.06.2014, 00:40     C++ нахождение факториала числа n с вводом из файла #4
Kerry_Jr, я просто код поправил, чтобы работал. Но можно и так, даже лучше будет и красивее.
Marianna323
0 / 0 / 0
Регистрация: 26.12.2013
Сообщений: 14
05.06.2014, 01:45  [ТС]     C++ нахождение факториала числа n с вводом из файла #5
Pjeroo, то ли я чего то совсем не понимаю, то ли код все равно не рабочий. Ну, т.е., если у меня он всегда считал факториал от "0" почему-то, то в Вашем варианте выводит просто 0, и в файл так же не записывает. Хотя возможно я как-то неправильно файлы создаю?
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,155
Завершенные тесты: 1
05.06.2014, 09:24     C++ нахождение факториала числа n с вводом из файла #6
Цитата Сообщение от Marianna323 Посмотреть сообщение
в файл так же не записывает
В файл из буфера сбрасывает ОС по своим соображениям.
Имеет смысл его закрыть, а уж потом смотреть, что получилось:
вставьте в конец программы out.close();
Yandex
Объявления
05.06.2014, 09:24     C++ нахождение факториала числа n с вводом из файла
Ответ Создать тему
Опции темы

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