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

0 голосов
38 просмотров

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


image

Информатика (90 баллов) | 38 просмотров
Дан 1 ответ
0 голосов

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

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

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

(1.4k баллов)
0

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

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

return index;
}

0

//оснавная функция программы или точка входа в неё
//-----------------------------------------------------------------------------
int main()
//-----------------------------------------------------------------------------
{
fstream fileStream; //файловый поток
string bufferString; //строка для чтения из файла
double xNumber; //число X

0

int nValue; //полученное значение N
int mValue; //полученное значение M
bool isXCorrect; //проверка на правельность введенного X
double workingTime; //тут храним время работы программы

isXCorrect = false; //по умолчанию false
workingTime = static_cast(clock()); //получаем текущее время

0

fileStream.open(INPUT_FILE_PATH); //открываем файл с входными данными

if (true == fileStream.is_open()) //если файл открыт
{
std::getline(fileStream, bufferString); //читаем из него первую строку
xNumber = std::stod(bufferString); //конвертируем строку в double
fileStream.close(); //закрываем файловый поток
}

0

else //если же файл не открылся
{
cout << "Error! Programm can't create input.txt file." << endl; //вывести ошибку<br> }

if ( (1 < xNumber) && (13 >= xNumber) ) //проверяем входит ли X в диапазон
{
nValue = getMinimalN(xNumber); //получить значение N по формуле
mValue = getMinimalM(xNumber); //получить значение M по формуле
isXCorrect = true; //X был введен верно
}

0

else //если же X введен не верно, то вывести ошибку
{
isXCorrect = false; //обозначаем, что X введен неверно
cout << "Error! Wrong X value in input file! X range is: 1 < X <= 13." << endl;<br> }

if (true == isXCorrect) //если X введен верное
{
fileStream.open(OUTPUT_FILE_PATH, ios_base::out); //открываем файл с выходными данными, с флагом out
//значит мы файл будем перезаписывать при открытии

0

if (true == fileStream.is_open()) //если файл открыт
{
fileStream << "N = " << nValue << endl; //ввести в файл значение N<br> fileStream << "M = " << mValue << endl; //ввести в файл значение M<br> }
else //если файл не открылся
{
cout << "Error! Programm can't create output.txt file." << endl; //вывести ошибку<br> }
}

0

workingTime = static_cast(clock()) - workingTime; //посчитать сколько времени прошло
workingTime /= 1000.000; //время в милисекундах, делим на 1000 и получаем в секундах

cout << "Programm worked " << workingTime << " seconds." << endl; //выводим время работы программы

0

system("pause"); //ожидаем нажатия любой клавиши
return 0; //возращаем системе код 0, что значит, что программа завершила работу верно
}