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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Gelo123321
21 / 21 / 4
Регистрация: 05.01.2012
Сообщений: 279
Завершенные тесты: 1
#1

Странная ошибка в алгоритме заполнения массива из файла - C++

27.06.2014, 17:47. Просмотров 339. Ответов 12
Метки нет (Все метки)

Алгоритм приведенный ниже, на самом деле является частью функции, которая работает некорректно. По этому я решил переделать алгоритм в консольный вариант, что бы протестировать (так как я не был уверен что баг именно в этой функции, а не в другой).

Файл map1.map содержит числа, 0 и 1. Сама программа при выполнении выводит только первые 13 строк массива (причем в первой строке последний символ не 1, как в файле, а 31). работу программы прерывает ошибка (точнее окно с надписью: "Information"), вот текст сообщения: "Project C:\...\Project1.exe faulted with message: 'access violation at 0x0040337a: read of address 0x00000009'. Process Stopped. Use Step or Run to continue."Причем в C++ Builder 6, открывается вкладка библиотеки ios: _ios_base.h.

Самое странное то, что функция с данным алгоритмом которая помещена в dll - работает. То есть, по крайней мери она вызывается без ошибок. Хотя массив заполненный ею все же ведет себя странно... Что в данном алгоритме не так?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    string path = "Map/map1.map";
    int array[32-1][32-1];
 
    int x = 0, y = 0;
    ifstream file(path);
 
    if (!file) { cerr << "ERROR! Cant open a file."; }
    else
    {
        for (;file;)
        {
            file >> array[x][y];
            cout << array[x][y] << ' ';
            x++;
            if (file.get() == '\n') { y++; x = 0; cout << '\n'; }
            if (file.eof()) break;
        }
    }
    system("pause");
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
flash1989
50 / 60 / 9
Регистрация: 03.09.2010
Сообщений: 1,242
27.06.2014, 17:52     Странная ошибка в алгоритме заполнения массива из файла #2
Можете приложить полный проект вместе с файлом ?
Gelo123321
21 / 21 / 4
Регистрация: 05.01.2012
Сообщений: 279
Завершенные тесты: 1
27.06.2014, 17:58  [ТС]     Странная ошибка в алгоритме заполнения массива из файла #3
flash1989, конечно. В архиве 3 проекта: dll, проект который использует эту dll, и консольное приложение в котором я тестировал алгоритм.
Вложения
Тип файла: 7z Project Fringe.7z (936.5 Кб, 3 просмотров)
Avazart
7065 / 5242 / 262
Регистрация: 10.12.2010
Сообщений: 23,062
Записей в блоге: 17
27.06.2014, 17:58     Странная ошибка в алгоритме заполнения массива из файла #4
Да что не понятно выход за границы массива, проверки то нет- размер массива/ размерность того что находится в файле
Gelo123321
21 / 21 / 4
Регистрация: 05.01.2012
Сообщений: 279
Завершенные тесты: 1
27.06.2014, 18:02  [ТС]     Странная ошибка в алгоритме заполнения массива из файла #5
Avazart, в файле ровно 32х32 символов разделенных пробелом. Я 10 раз проверял. Сперва и сам подумал так.
Avazart
7065 / 5242 / 262
Регистрация: 10.12.2010
Сообщений: 23,062
Записей в блоге: 17
27.06.2014, 18:05     Странная ошибка в алгоритме заполнения массива из файла #6
Сути не меняет, ошибка из-за выходы за границы массива.
flash1989
50 / 60 / 9
Регистрация: 03.09.2010
Сообщений: 1,242
27.06.2014, 18:06     Странная ошибка в алгоритме заполнения массива из файла #7
Так если ровно по 32 элемента, то почему
C++
1
 int array[32-1][32-1];
, а не
C++
1
 int array[32][32]
Avazart
7065 / 5242 / 262
Регистрация: 10.12.2010
Сообщений: 23,062
Записей в блоге: 17
27.06.2014, 18:06     Странная ошибка в алгоритме заполнения массива из файла #8
Цитата Сообщение от Gelo123321 Посмотреть сообщение
32х32
32-1 = 31
Gelo123321
21 / 21 / 4
Регистрация: 05.01.2012
Сообщений: 279
Завершенные тесты: 1
27.06.2014, 18:08  [ТС]     Странная ошибка в алгоритме заполнения массива из файла #9
flash1989, а разве если массив имеет 32х32 то в нем не будет 33 элементов? От 0 же считается, или как?
Avazart
7065 / 5242 / 262
Регистрация: 10.12.2010
Сообщений: 23,062
Записей в блоге: 17
27.06.2014, 18:09     Странная ошибка в алгоритме заполнения массива из файла #10
или как .. приплыли ...

Нулевой элемент что не элемент ?
Gelo123321
21 / 21 / 4
Регистрация: 05.01.2012
Сообщений: 279
Завершенные тесты: 1
27.06.2014, 18:14  [ТС]     Странная ошибка в алгоритме заполнения массива из файла #11
Avazart, на разных языках эти массивы считаются по разному.

Добавлено через 2 минуты
Цитата Сообщение от Avazart Посмотреть сообщение
Нулевой элемент что не элемент ?
Так я же писал, что в массиве с 31 элементами, первый это 0, а последний это 31. Итого = 32 элементы.

Добавлено через 2 минуты
А проверки на размерность нету, так как я ее еще не сделал. В функцию должен был бы передаваться динамический массив, но как эго передать я не представляю, поэтому пока оставил так.
flash1989
50 / 60 / 9
Регистрация: 03.09.2010
Сообщений: 1,242
27.06.2014, 18:16     Странная ошибка в алгоритме заполнения массива из файла #12
Сообщение было отмечено автором темы, экспертом или модератором как ответ
от нуля считаются индексы массива, а при выделении памяти указывается к-во элементов, так что вот такие вот пироги
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.06.2014, 18:46     Странная ошибка в алгоритме заполнения массива из файла
Еще ссылки по теме:

Написать программу заполнения двумерного массива A по схеме, результаты заполнения выдать на экран и в файл C++
C++ Сделать функции заполнения исходного файла и обработки массива с записью в другой файл
C++ Ошибка в алгоритме
C++ Ошибка в алгоритме Хаффмана. С++
C++ Ошибка в алгоритме Дейкстры

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

Или воспользуйтесь поиском по форуму:
Gelo123321
21 / 21 / 4
Регистрация: 05.01.2012
Сообщений: 279
Завершенные тесты: 1
27.06.2014, 18:46  [ТС]     Странная ошибка в алгоритме заполнения массива из файла #13
flash1989, А я то всю жизнь думал, что и выделения памяти начинается с 0(( Спасибо огромное)
Yandex
Объявления
27.06.2014, 18:46     Странная ошибка в алгоритме заполнения массива из файла
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru