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

Ошибка компиляции:ОС Windows инициировала точку останова - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Программирование алгоритмов обработки двумерных массивов http://www.cyberforum.ru/cpp-beginners/thread441108.html
напишите пожалуйста текст программы. Дан массив М координат точек на плоскости. Найти наибольшее расстоя-ние между этими точками.
C++ Распечатать элементы массива в обратном порядке по шесть чисел в строке напишите пожалуйста текст программы. Дано 24 целых числа. Распечатать их в обратном порядке по шесть чисел в строке. http://www.cyberforum.ru/cpp-beginners/thread441107.html
declaration syntax error на строчке void main C++
Вот код программы, между void и main выдает ошибку declaration syntax error, что я не так делаю? моя первая прога на с++, поэтому прошу помощи) #include<math.h> #include<stdio.h> #include<conio.h> float x,y,a,b,z void main() { clrscr(); printf("Vvedite a:");
Тайна Страуструпа - std_lib_facilities.h (2) C++
Ребят уже голову сломал как дописать в код. Предложите пользователю ввести значение m если ваш друг -мужчина, f -если женщина. Присвоить переменной friend_sex введенное значение. ЗАтем с помощью двух инструкций if записать следующее: Если друг-мужчина, то написать строчку "Если ты увидишь friend_name, попроси его позвонить мне". Если женщина, то "Если ты увидишь friend_name,попроси ее...
C++ Возврат почему же?! http://www.cyberforum.ru/cpp-beginners/thread441067.html
Народ помогите у меня функция почему то возвращает значение хочё сделать чек бокс для своеё игры void DrawMenuBut( char *txt, int var2, int x, int y,LPDIRECT3DDEVICE9 pDevice) { POINT cur; GetCursorPos(&cur);// Update Mouse Coordinates ScreenToClient(GetForegroundWindow(),&cur); // Translate to Current Window
C++ Прокомментируйте, пожалуйста, код программы. Доброго дня всем! Перед Вами - 2 программы - 1 шифрует текст методом гаммирования, вторая - генератор простых чисел. Если не трудно - помогите дать комментарий к некоторым блокам и переменным )) 1 архив - необходимо объяснить, что собой представляет переменная l и для чего она используется. 2 архив - необходимо объяснить блок: if (p!=q) { k=sqrt(p); kk=k; подробнее

Показать сообщение отдельно
MrGadik
0 / 0 / 0
Регистрация: 10.07.2010
Сообщений: 25
05.02.2012, 13:24     Ошибка компиляции:ОС Windows инициировала точку останова
Доброго времени суток!
Обращаюсь с наверняка очень распространенной проблемой.
Суть задачи такова:
Дан массив целых чисел. Назовем серией несколько подряд идущих элементов, а длиной серии - их количество. Преобразовать массив, поставив перед каждой серией наименьший элемент массива(длина серии может быть равна 1).

Вот мой код:
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 "stdafx.h"
#include <conio.h>
#include <cstdlib>
#include <ctime>
#include <iostream>
using namespace std;
 
int min(int *mas, int n);
void work(int *mas, int n);
 
int _tmain(int argc, _TCHAR* argv[])
{
    int *mass;
    int n,i,a,b;
    cout << "\n Enter lenght of matrix:";
    cin >> n;
    cout << "\n Enter limits of generation:";
    cout << "\n a=";
    cin >> a;
    cout << "\n b=";
    cin >> b;
    srand(time(NULL)*1000);
    mass=new int[n];
    for (i=0;i<n;i++)
        mass[i]=rand()%(b-a)+a;
    cout << "\n Original massiv:\n";
    for(i=0;i<n;i++)
        cout << mass[i] << " ";
    cout << "\n\n Minimal element=" << min(mass, n);
    cout << "\n";
    cout << "\n Converteed massiv:\n";
    work(mass, n);
 
    free(mass);
    _getch();
    return 0;
}
 
 
int min(int *mas, int n)
{
    int i,min=mas[0];
    for (i=0; i<n; i++)
        if (min>mas[i]) min=mas[i];
    return min;
}
 
void work(int *mas, int n)
{
    int i,j,d=0,m,buf,x;
    m=min(mas,n);
    for (i=0;i<n+d;i++)
    {
        if (mas[i]!=mas[i-1])
        {   
            buf=mas[i];
            for (j=i;j<n+d;j++)
            {
                x=mas[j+1];
                mas[j+1]=buf;
                buf=x;
            }
            d++;
            mas[i]=m;
            i++;
        }
    }
    for(i=0;i<n+d;i++)
        cout << mas[i] << " ";
}

И собственно работает все нормально, но вот незадача - выдает ошибку:
"ОС Windows инициировала точку останова в Ekz_2.exe.

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

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

Выведенное на экран окно содержит дополнительные данные для диагностики ошибки"


Насколько я знаю такие ошибки возникают при косяках с динамическими массивами разной степени тяжести. И вот ошибку эту найти не могу.
Скорее всего она находится где то в функции work.
Заранее спасибо!

P.S.: так же был бы очень благодарен если вы поможете мне оптимизировать эту самую функцию work, т.е. убрать всякие архитектурные излишества и ляпы. Ибо есть ощущение, что их там не мало.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 15:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru