-3

Я сделал простой цикл который считает числа и мне надо реализовать сохранения и загрузку данных. Надо что бы данные как то сохранялись и если я отключил цикл а потом снова запустил он продолжил считать.

for (size_t i = 0; i < 10000000; i++)
{

}

Не обязательно простые примеры кидать, можно супер сложные я разберусь.

chip
  • 90

2 Answers2

1

Ну вот вам пример - прерываете программу, она при новом запуске будет продолжать работу с последнего сохраненного значения...

#include <iostream>
#include <fstream>

using namespace std;

int main(int argc, const char * argv[])
{
    long long current_value = 1;
    double current_sum = 0.0;
    {
        ifstream in("data");
        if (in.is_open())
        {
            in >> current_value >> current_sum;
        }
    }
    for(long long i = current_value; ; ++i)
    {
        current_sum += 1.0/i;
        if (i % 10000 == 0)
        {
            ofstream out("data");
            out << i << "  " << current_sum;
            cout << i << "  " << current_sum << endl;
        }
    }
}

В каждом конкретном случае надо смотреть, как сохранять и восстанавливать состояние.

В свое время еще под DOS'ом мне попадался код, который тупо сохранял всю память и состояние процессора, но в современных операционках, по-моему, это будет слишком сложным решением...

Harry
  • 221,325
  • пока не могу запустить пишет неизвестные переменные out и in.is_open и куда он сохраняет в какой файл? – chip Apr 21 '19 at 18:53
  • 3
    Знаете, если вы не понимаете, что надо добавить соответствующие #include и не понимаете, где имя файла - то вы, наверное, очень погорячились, говоря "можно супер сложные я разберусь"... – Harry Apr 21 '19 at 18:56
  • нет нормально, просто нужно время тогда что бы понять – chip Apr 21 '19 at 19:03
  • 2
    Кстати, как всегда - хотелось бы выслушать от минусаторов, что не верно в моем ответе (другие причины для минуса я не понимаю)... – Harry Apr 21 '19 at 19:07
  • у меня получилось запустить код, только пока не понял куда он сохраняет файлы и как должен их загружать что бы продолжать цикл.Цикл вроде начинается с самого начала каждый раз. – chip Apr 21 '19 at 19:09
  • Просто скопируйте, запустите, дайте ему порабтать, прервите... Запустите заново. Вот как работает, будучи скомпилированным VC++2017 - я только изменил 10000 на 10000000... Как видите, после прерывания работы она идет с последнего значения. – Harry Apr 21 '19 at 19:13
  • ага вроде чет есть, только я пока не понимаю куда он сохраняет данные :) – chip Apr 21 '19 at 19:20
  • @chip, что значит "какой-то дурак"? Я согласен на счет того, что если ты ставишь минус - ты должен указать причину(ы). Но Вы не можете утверждать, что это сделал именно тот человек, который написал про книги, это во-первых, не имеете права кого-либо называть дураком - это во-вторых, и книги бы Вам действительно не мешало почитать - это в-третьих. – isnullxbh Apr 22 '19 at 08:54
-2

Для сохранения в текстовый файл используй:

int a = 10;
ofstream outf(filename);    //открытие файлового потока записи
outf << a;    //запись в файл

ifstream inf(filename);    //открытие файлового потока считывания
inf >> a;    //считывание инта из файла
Lamed
  • 155
  • А можно пример с циклом полный и куда именно он файл сохраняет и как называться файл будет? – chip Apr 21 '19 at 18:51
  • @chip filename - строка с названием файла, тоесть ты можеш туда записать и адрес файла, если же запишеш только название, как "file.txt", то он сохранится в папку с твоим проектом. Пример с циклом, уже есть выше – Lamed Apr 21 '19 at 18:54