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

Необработанное исключение - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Anrej
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 16
17.06.2013, 23:42     Необработанное исключение #1
При выполнении тестов {input...output} появляется необработанное исключение по адресу 0x009577E1 в 1590.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xE9E041B0. Как это исправить?
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
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int arr[5000][26];
int cnt = 1;
char word[10000];
 
string ifs[]={"input_0.txt","input_1.txt","input_2.txt","input_3.txt","input_4.txt","input_5.txt","input_6.txt","input_7.txt","input_8.txt","input_9.txt"};
string ofs[]={"output_0.txt","output_1.txt","output_2.txt","output_3.txt","output_4.txt","output_5.txt","output_6.txt","output_7.txt","output_8.txt","output_9.txt"};
 
int newnode()
{
        for(int i = 0; i < 26; i++)
                arr[cnt][i] = -1;
        return cnt++;
}
 
int insert(int root, char* word)
 
{
            //~ cout << "Inserting " << word << endl;
        if(word[0] == 0)
                return 0;
        int result = 0;
        if(arr[root][word[0]-'a'] == -1)
        {
                arr[root][word[0]-'a'] = newnode();
                result += 1;
        }
        return insert(arr[root][word[0]-'a'], word + 1) + result;
}
 
int main()
{
    int count=0;
    while (count<10)
    {
        ifstream f(ifs[count].c_str());
        f >> word;
 
        for(int i = 0; i < 26; i ++)
            arr[0][i] = -1;
        int result = 0;
        for(int i = 0; word[i]; i++)
                result += insert(0, word + i);
 
        ofstream f_0(ofs[count].c_str());
        f_0 << result;
 
           count++;
    }
 
 
        system ("pause");
        return 0;
        
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.06.2013, 23:42     Необработанное исключение
Посмотрите здесь:

C++ Необработанное исключение
C++ Необработанное исключение
Необработанное исключение C++
C++ Необработанное исключение
C++ Необработанное исключение
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Wolkodav
 Аватар для Wolkodav
599 / 452 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
18.06.2013, 00:11     Необработанное исключение #2
Anrej, это значит лезете, туда, куда вам непозволено. Выход за границу массива( динамического), ошибка с указателями, пытаетесь обратится к несуществующему адресу( точнее пустому).
Anrej
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 16
18.06.2013, 10:53  [ТС]     Необработанное исключение #3
А как мне это исправить?
Wolkodav
 Аватар для Wolkodav
599 / 452 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
18.06.2013, 18:17     Необработанное исключение #4
Отладка вам в помощь.
Anrej
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 16
18.06.2013, 18:55  [ТС]     Необработанное исключение #5
При появлении Необработанного исключения указывает на строку if(arr[root][word[0]-'a'] == -1). что с ней не так?
Wolkodav
 Аватар для Wolkodav
599 / 452 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
18.06.2013, 18:57     Необработанное исключение #6
Среда какая?
Anrej
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 16
18.06.2013, 19:15  [ТС]     Необработанное исключение #7
Microsoft Visual Studio
Можете объяснить что это вообще такое
int newnode()
{
for(int i = 0; i < 26; i++)
arr[cnt][i] = -1;
return cnt++;
}
int insert(int root, char* word)

{ //~ cout << "Inserting " << word << endl;
if(word[0] == 0)
return 0;
int result = 0;
if(arr[root][word[0]-'a'] == -1)
{
arr[root][word[0]-'a'] = newnode();
result += 1;
}
return insert(arr[root][word[0]-'a'], word + 1) + result;
}
Просто код я не сам писал. А завтра сдача курсовой. Я буду очень признателен....
Wolkodav
 Аватар для Wolkodav
599 / 452 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
18.06.2013, 19:26     Необработанное исключение #8
Не люблю чужой код разбирать. Запускаете на отладку и смотрите в watcher что находится в word[0], код символа 'a', разность word[0]-'a' и что находится по адресу insert[root][word[0]-'a'], и вообще меня такая запись смущает)
Anrej
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 16
18.06.2013, 19:31  [ТС]     Необработанное исключение #9
Меня, честно говоря, тоже) Но другую я сделать не смогу.
Wolkodav
 Аватар для Wolkodav
599 / 452 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
18.06.2013, 19:34     Необработанное исключение #10
Anrej, я вам написал что делать)
Anrej
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 16
18.06.2013, 19:37  [ТС]     Необработанное исключение #11
Я вот запустил отладку, там в значениях word такая штука -word0x013d53ec "яяяяяяяяяяяяЌ\x13" char * никак не понимаю что это за такое
Wolkodav
 Аватар для Wolkodav
599 / 452 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
18.06.2013, 19:39     Необработанное исключение #12
беда там у вас, вот что) Что у вас в файле?

Добавлено через 22 секунды
Ну грубо говоря вы не чего не считали с файла)
Anrej
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 16
18.06.2013, 19:44  [ТС]     Необработанное исключение #13
я вот запустил отладку а там такая штука - word 0x013d53ec "яяяяяяяяяяяяЌ\x13" char *

Добавлено через 1 минуту
Второй раз отослал. Я хочу исправить эту ошибку. как это сделать? Не считал из файла. По причине неверности кода? или когда прописывал файлы там что-то напутал.
Wolkodav
 Аватар для Wolkodav
599 / 452 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
18.06.2013, 19:45     Необработанное исключение #14
Anrej, у вас в файлах что находится? Вы читаете words из файла.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,402
18.06.2013, 19:45     Необработанное исключение #15
Anrej, 'a' - латинская?
Если русская, или идет работа с русскими символами, то поздравляю - вы обращайтесь по отрицательному индексу массива.
Создаете свой алфавит, пихаете в него буквы от а до я, далее индекс должен соответствовать номеру буквы в этом алфавите, вашем алфавите.
Wolkodav
 Аватар для Wolkodav
599 / 452 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
18.06.2013, 19:47     Необработанное исключение #16
Anrej, в текстовом файле, откуда читаете строку words что находится?
string ifs[]={"input_0.txt","input_1.txt","input_2.txt","input_3.txt","input_4.txt","input_5.txt","input_6.txt","input_7.txt","input_8.txt","input_9.txt"};
вот в этих файлых.

Добавлено через 46 секунд
MrGluck, вы посмотрите что находится в words.

Добавлено через 24 секунды
word 0x013d53ec "яяяяяяяяяяяяЌ\x13" char *

Добавлено через 31 секунду
Это не в 'a' проблема)
Anrej
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 16
18.06.2013, 19:50  [ТС]     Необработанное исключение #17
В текстовых файлах находятся символы, простые. Я их набирал случайным образом. В задаче сказано нужно ввести какое-то кол-во латинских букв без пробела и программа должна подсчитать кол-во подстрок введенной строки.
Wolkodav
 Аватар для Wolkodav
599 / 452 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
18.06.2013, 19:52     Необработанное исключение #18
а посмотри переменную count в отладке, когда ошибка вылетает.
Anrej
0 / 0 / 0
Регистрация: 17.06.2013
Сообщений: 16
18.06.2013, 19:54  [ТС]     Необработанное исключение #19
в count значение -858993460
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.06.2013, 19:56     Необработанное исключение
Еще ссылки по теме:

C++ Необработанное исключение
C++ Необработанное исключение
C++ Необработанное исключение

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

Или воспользуйтесь поиском по форуму:
Wolkodav
 Аватар для Wolkodav
599 / 452 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
18.06.2013, 19:56     Необработанное исключение #20
Это как так? Быть такого не может. Она проинициализировано же. Бррр. Вы точку останова где поставили?
Yandex
Объявления
18.06.2013, 19:56     Необработанное исключение
Ответ Создать тему
Опции темы

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