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

Не всегда данные записываются в результирующий файл - C++

Восстановить пароль Регистрация
 
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
21.01.2012, 23:47     Не всегда данные записываются в результирующий файл #1
Есть программа. Суть ее не важна, важно лишь то, что читает данные, затем записывает результаты
Запись идет в строках 61-64

Проблема: не всегда данные записываются в результирующий файл, бред какой-то
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <vector>
#include <queue>
#include <iostream>
#include <vector>
#include <fstream>
#include <cstdlib>
 
#define file_in "test.in"
#define file_out "test.out"
 
int main ()
{
    setlocale(LC_ALL, "Russian");
    std::vector<std::vector<unsigned int> > g; 
    unsigned int count, s;
    std::fstream file(file_in, std::ios::in);
 
    if (file.fail())
    {
        std::cerr << "Файл не найден!" << std::endl;
        system("Pause");
        return EXIT_FAILURE;
    }
 
    file >> count;
    g.resize(count);
    for (unsigned int i = 0; i < count; ++i)
    {
        g[i].resize(count);
        for (unsigned int j = 0; j < count; ++j)
            file >> g[i][j];
    }
    file >> s;
    file.close();
 
    file.open(file_out, std::ios::out);
 
    std::queue<unsigned int> q;
    q.push(s);
 
    std::vector<bool> used (g.size());
    std::vector<int> p(g.size(), -1);
    used[s] = true;
 
    while (!q.empty())
    {
        int v = q.front();
        for (unsigned int i = 0; i < g[v].size(); ++i) 
        {
            if (!used[i] && g[v][i]) 
            {
                used[i] = true;
                q.push(i);
                p[i] = v; // parent;
            }
        }
        q.pop();
    }
 
    unsigned int result_size = p.size() - std::count(p.begin(), p.end(), -1);
    file << result_size << std::endl;
    for (unsigned int i = 0; i < count; i++)
        if (p[i] >= 0)
            file << i << " ";
    file.close();
 
    std::cout << "Задача решена" << std::endl;
    system("pause");
    return 0;
}
во вложении 2 входных файла
при скармирвании файла test2.in прога записывает результат в файл, при test.in - нет.

как это вообще возможно?
Вложения
Тип файла: rar test.rar (390 байт, 15 просмотров)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
21.01.2012, 23:55     Не всегда данные записываются в результирующий файл #2
Нормально всё вроде, содержание test.out не проверял
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
22.01.2012, 00:00     Не всегда данные записываются в результирующий файл #3
sandye51, у меня выводит ответ в обоих случаях.

Добавлено через 1 минуту
test.in:
Код
64
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
test2.in:
Код
4
0 1 3 4
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
22.01.2012, 00:04  [ТС]     Не всегда данные записываются в результирующий файл #4
silent_1991, пробовал в 2008 студии и в devc++ - не всегда
а в 2010 в обоих случаях выводит
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
22.01.2012, 00:05     Не всегда данные записываются в результирующий файл #5
sandye51, mingw g++ 4.6.2
kravam
22.01.2012, 00:10
  #6

Не по теме:

Цитата Сообщение от sandye51 Посмотреть сообщение
devc++
Там компилятор старый, 4.5.0, советую обновить

sandye51
22.01.2012, 00:33  [ТС]
  #7

Не по теме:

kravam, но ноут сестры сдавить студию чтобы написать пару прог - больно долго

silent_1991
22.01.2012, 00:36
  #8

Не по теме:

sandye51, скачай у niXman'а в подписи последний мингв.

kravam
22.01.2012, 00:41
  #9

Не по теме:

Я предлагаю такой выход. Поскольку DevCpp IDE хорошая, качай её без компилятора, потом ставь современный опробированный компилятор, напрмер этот, а потом зайди в тему, что у меня в подписи.

sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
22.01.2012, 00:48  [ТС]     Не всегда данные записываются в результирующий файл #10
ну а все-аки, почему не работает на старых компиляторах даже?
баг?
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
22.01.2012, 00:55     Не всегда данные записываются в результирующий файл #11
sandye51, начнём с простого: попробуй создать два потока, отдельно для входного файла и отдельно для выходного.
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
22.01.2012, 12:24  [ТС]     Не всегда данные записываются в результирующий файл #12
silent_1991, ну такой-то вариант работает)
retmas
Жарю без масла
803 / 685 / 143
Регистрация: 13.01.2012
Сообщений: 1,580
22.01.2012, 13:16     Не всегда данные записываются в результирующий файл #13
был такой баг вроде в стандартной библиотеке в более ранних версиях gcc, в других реализациях(msvc, например) может он тоже был(точно не знаю)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.01.2012, 14:51     Не всегда данные записываются в результирующий файл
Еще ссылки по теме:

C++ Не записываются символы в файл
C++ Не записываются данные из файла в структуру
C++ Ошибка в программе. Данные записываются в файл некорректно

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

Или воспользуйтесь поиском по форуму:
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
22.01.2012, 14:51     Не всегда данные записываются в результирующий файл #14
sandye51, ну, я предполагал библиотечный баг, а retmas подвертил мои предположения.
Yandex
Объявления
22.01.2012, 14:51     Не всегда данные записываются в результирующий файл
Ответ Создать тему
Опции темы

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