Помогите с прогой на с++

Приложения:

Ответы

Ответ дал: DigitalAnnihilator
0
Код прекреплен к ответу, всё прокоментрировано. Так же продублирован в коментариях. Если есть вопросы, велком в те же коментарии.

З.Ы.
Не забываем создать рядом с скомпилированным бинарем файл input.txt с входным числом X. Важно: если вводите дробное число, то от целой части отделяйте дробную точкой, т.е.
1,5 - не правильно (запятая)
1.5 - правильно (точка)

Спасибо за отметку "Лучший ответ" и нажатую кнопочку "Спасибо" (:
Приложения:

DigitalAnnihilator: while (totalSum <= xRange) //т.к. нас интересует число следующее после X
{
totalSum += getCurrentSummand(index); //то складываем с дробями сумму пока не выйдем первый раз за пределы X
++index;
}

index -= 1; //отнимаем 1 по тому, что ++index в цикле for,
//то есть даже если действие не производилось,
//сначала увеличивается index. потом проверяется условие

return index;
}
DigitalAnnihilator: //оснавная функция программы или точка входа в неё
//-----------------------------------------------------------------------------
int main()
//-----------------------------------------------------------------------------
{
fstream fileStream; //файловый поток
string bufferString; //строка для чтения из файла
double xNumber; //число X
DigitalAnnihilator: int nValue; //полученное значение N
int mValue; //полученное значение M
bool isXCorrect; //проверка на правельность введенного X
double workingTime; //тут храним время работы программы

isXCorrect = false; //по умолчанию false
workingTime = static_cast<double>(clock()); //получаем текущее время
DigitalAnnihilator: fileStream.open(INPUT_FILE_PATH); //открываем файл с входными данными

if (true == fileStream.is_open()) //если файл открыт
{
std::getline(fileStream, bufferString); //читаем из него первую строку
xNumber = std::stod(bufferString); //конвертируем строку в double
fileStream.close(); //закрываем файловый поток
}
DigitalAnnihilator: else //если же файл не открылся
{
cout << "Error! Programm can't create input.txt file." << endl; //вывести ошибку
}

if ( (1 < xNumber) && (13 >= xNumber) ) //проверяем входит ли X в диапазон
{
nValue = getMinimalN(xNumber); //получить значение N по формуле
mValue = getMinimalM(xNumber); //получить значение M по формуле
isXCorrect = true; //X был введен верно
}
DigitalAnnihilator: else //если же X введен не верно, то вывести ошибку
{
isXCorrect = false; //обозначаем, что X введен неверно
cout << "Error! Wrong X value in input file! X range is: 1 < X <= 13." << endl;
}

if (true == isXCorrect) //если X введен верное
{
fileStream.open(OUTPUT_FILE_PATH, ios_base::out); //открываем файл с выходными данными, с флагом out
//значит мы файл будем перезаписывать при открытии
DigitalAnnihilator: if (true == fileStream.is_open()) //если файл открыт
{
fileStream << "N = " << nValue << endl; //ввести в файл значение N
fileStream << "M = " << mValue << endl; //ввести в файл значение M
}
else //если файл не открылся
{
cout << "Error! Programm can't create output.txt file." << endl; //вывести ошибку
}
}
DigitalAnnihilator: workingTime = static_cast<double>(clock()) - workingTime; //посчитать сколько времени прошло
workingTime /= 1000.000; //время в милисекундах, делим на 1000 и получаем в секундах

cout << "Programm worked " << workingTime << " seconds." << endl; //выводим время работы программы
DigitalAnnihilator: system("pause"); //ожидаем нажатия любой клавиши
return 0; //возращаем системе код 0, что значит, что программа завершила работу верно
}
DigitalAnnihilator: Повторюсь ещё раз, и отмечу, что более подробного ответа чем у меня, вы не получите ни от кого на этом сервисе, за 5+3 бала делать такое задание - чисто на интузиазме, пожалуйста не забудьте отметить лучшим решением и нажать кнопочку спасибо в ответе и можно ещё в аккаунте. Стараемся для вас, большое спасибо (:
Вас заинтересует