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

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

Войти
Регистрация
Восстановить пароль
 
1Prikol1
0 / 0 / 0
Регистрация: 05.06.2014
Сообщений: 4
#1

Ошибка. ОС Windows инициировала точку останова в файле - C++

05.06.2014, 22:24. Просмотров 359. Ответов 7
Метки нет (Все метки)

Доброго всем времени суток. Есть задание : Найти самое большое слово в файле и подсчитать количество таких слов.
Собственно написал программку и выдает ошибку , которая выше.Кто чем сможет помогите плиз, желательно с пояснением!Заранее спасибо.

Вот сам код
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#include <iostream>
#include <cstdio>
#include <fstream>
#include <iomanip>
#include <limits>
#include <windows.h>
using namespace std;
int podchet(char *a,char* max,int j);
char* bolshoe(char *a);
 
 
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int i = 0,j = 0, m =0;
    char a;
    ifstream F;
    F.open ("G:\\Предметы 2 часть\\Информатика\\ЛР 8\\lol.txt",ios::in);
    ifstream f;
    f.open ("G:\\Предметы 2 часть\\Информатика\\ЛР 8\\lol.txt",ios::in);
    
    if (!F)
        cout << "Фаил не открылся!\n";
    if (!f)
        cout << "Фаил не открылся!\n";
 
        while (!F.eof())
        {
            F >> a;
            j++;
        }
    
        m = j;
    F.close();
    
    char *text = new char[m];
    
    i = 0;
    char sim;
    while (!f.eof())
        {
            f.get(sim);
            text[i] = sim;
            i++;
        }
    text[m] = '\0';
    f.close();
        
 
    
    char* s1;
    s1 = bolshoe(text);
 
    cout<<"Самое большое слово : "<<s1<<endl;
        if (podchet(text,s1,j) == 1) 
       cout<<"Самое большое слово встречается один раз"<<endl;
    else 
        cout<<"Количество повторений самого большого слова : "<<podchet(text,s1,j)<<endl;
 
        system("pause");
    }
    
char* bolshoe(char *text)
{
    
    char* max = new char[200];
    char* ptr=strtok(text,"№;:«»!@#$%^&*() _,-+={}[]\''/?><.");
    max=ptr;
    do {
            if(strlen(max)<strlen(ptr))  
        max=ptr;
    }
    while(ptr=strtok(NULL,"№;:«»!@#$%^&*() _,-+={}[]\''/?><."));
    return max;
}
 
int podchet(char *text,char* s1,int j)
{
 
        int r = 0,q;
        q=strlen(s1);
    int poisk = 0;
    for(int i1 = 0; i1 < j+1; i1++)
    {
        if(text[i1] == s1[poisk])
        {
            if(poisk == q)
            {
                r++;
                poisk = 0;
            }
            else
                poisk++;
        }
        else
            poisk = 0;
 
    }
    return r;
}
ну и вот , что пишет вижуалка

HEAP[laba8v2.exe]: Invalid address specified to RtlValidateHeap( 00720000, 00724C80 )
ОС Windows инициировала точку останова в laba8v2.exe.

Это может быть вызвано повреждением кучи и указывает на ошибку в laba8v2.exe или в одной из загруженных им DLL.

Возможной причиной так же может быть нажатие пользователем клавиши F12, когда фокус принадлежит laba8v2.exe

Выведенное на экран окно содержит дополнительные данные для диагностики ошибки
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2014, 22:24     Ошибка. ОС Windows инициировала точку останова в файле
Посмотрите здесь:
C++ Ошибка компиляции:ОС Windows инициировала точку останова
Странная ошибка ОС Windows инициировала точку останова C++
ОС Windows инициировала точку останова C++
ОС Windows инициировала точку останова в программе C++
ОС Windows инициировала точку останова в stroki.exe C++
C++ ОС Windows инициировала точку останова в kursach.exe
Windows инициировала точку останова при очистке динамической памяти C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
13045 / 7308 / 814
Регистрация: 27.09.2012
Сообщений: 18,041
Записей в блоге: 3
Завершенные тесты: 1
05.06.2014, 22:27     Ошибка. ОС Windows инициировала точку останова в файле #2
C++
1
2
3
char *text = new char[m];
//...
text[m] = '\0';
Запись за пределы выделенной памяти
1Prikol1
0 / 0 / 0
Регистрация: 05.06.2014
Сообщений: 4
05.06.2014, 23:14  [ТС]     Ошибка. ОС Windows инициировала точку останова в файле #3
Цитата Сообщение от Croessmah Посмотреть сообщение
Запись за пределы выделенной памяти
Спасибо за помощь.
Ну а что сделать то , что бы избежать??
Pjeroo
Землянин
34 / 34 / 12
Регистрация: 15.01.2013
Сообщений: 313
05.06.2014, 23:54     Ошибка. ОС Windows инициировала точку останова в файле #4
1Prikol1, не писать за пределы Вы выделяете память для m элементов, а пытаетесь записать в m+1-ый элемент.
1Prikol1
0 / 0 / 0
Регистрация: 05.06.2014
Сообщений: 4
06.06.2014, 01:31  [ТС]     Ошибка. ОС Windows инициировала точку останова в файле #5
Спасибо всем за помощь.Ошибку нашел,
C++
1
2
3
4
5
while (!F.eof())
        {
            F >> a;
            j++;
        }
она собственно здесь, программка неправильно считает количество входных символов.
Кто подскажет как это исправить??

Добавлено через 2 минуты
Точнее так, считает все без пробелов.
Croessmah
Модератор
Эксперт CЭксперт С++
13045 / 7308 / 814
Регистрация: 27.09.2012
Сообщений: 18,041
Записей в блоге: 3
Завершенные тесты: 1
06.06.2014, 01:33     Ошибка. ОС Windows инициировала точку останова в файле #6
C++
1
a=F.get();//F >> a;
Kerry_Jr
Модератор
Эксперт PHP
2178 / 1974 / 689
Регистрация: 14.05.2014
Сообщений: 5,771
Записей в блоге: 1
Завершенные тесты: 5
06.06.2014, 01:39     Ошибка. ОС Windows инициировала точку останова в файле #7
...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2014, 14:15     Ошибка. ОС Windows инициировала точку останова в файле
Еще ссылки по теме:
C++ Сортировка по возрастанию: ошибка "ОС Windows иницииализировала точку останова"
Где поставить вторую точку останова отладчика? C++
Ошибка в программе. Срабатывание точки останова C++
C++ Ошибка (вызвали срабатывание точки останова)
Компилятор ошибка (вызвали срабатывание точки останова) C++

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

Или воспользуйтесь поиском по форуму:
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.06.2014, 14:15     Ошибка. ОС Windows инициировала точку останова в файле #8
Цитата Сообщение от 1Prikol1 Посмотреть сообщение
Ошибку нашел,
Цитата Сообщение от 1Prikol1 Посмотреть сообщение
она собственно здесь, программка неправильно считает количество входных символов.
Как ни считай, но если так напишешь:
C++
1
2
3
char *text = new char[m];
//...
text[m] = '\0';
, то
Цитата Сообщение от Croessmah Посмотреть сообщение
Запись за пределы выделенной памяти
Yandex
Объявления
06.06.2014, 14:15     Ошибка. ОС Windows инициировала точку останова в файле
Ответ Создать тему
Опции темы

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