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

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

Войти
Регистрация
Восстановить пароль
 
Sh@dow777
12 / 12 / 3
Регистрация: 10.12.2013
Сообщений: 664
#1

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

23.12.2013, 03:27. Просмотров 398. Ответов 4
Метки нет (Все метки)

Не знаю, в чем проблема. Написал такую программу
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
#include <stdio.h>
 
int n;
int *a = new int[n];
int T,i,s,count,k;
 
int main()
{
    scanf("%d", &T);
 
    for(count = 1;count <= T;count++){
        scanf("%d\n", &n);
        for(i = 0; i < n;i++)
            scanf("%d", &a[i]);
        for(s = 1;s <= n;s++){
            for(i = 0;i < n - 1;i++)
                if(a[i] > a[i+1]){
                    k = a[i];
                    a[i] = a[i+1];
                    a[i+1] = k;
                }
        }
        for(i = 0;i < n;i++)
            printf("%2d", a[i]);
    }
 
    return 0;
}
выдает ошибку "ОС Windows иницииализировала точку останова". В чем проблема? Да, и еще почему то размерность массива на втором тесте не с новой строки вводится.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.12.2013, 03:27     Сортировка по возрастанию: ошибка "ОС Windows иницииализировала точку останова"
Посмотрите здесь:

Ошибка. ОС Windows инициировала точку останова в файле - C++
Доброго всем времени суток. Есть задание : Найти самое большое слово в файле и подсчитать количество таких слов. Собственно написал...

Странная ошибка ОС Windows инициировала точку останова - C++
Что могло вызвать такую ошибку ? При нажатии кнопки продолжить программа успешно работает дальше :) При нажатии кнопки...

Ошибка компиляции:ОС Windows инициировала точку останова - C++
Доброго времени суток! Обращаюсь с наверняка очень распространенной проблемой. Суть задачи такова: Дан массив целых чисел. Назовем...

Ошибка в коде "вызвано срабатывание точки останова" - C++
Вот код на С++ По идее все должно работать, но мне выдается ошибка, которую я раньше не встречал, посмотрите пожалуйста, если получится...

Выползает такая ошибка "test.exe вызвал срабатывание точки останова." - C++
Одну итерацию цикла программа проходит, затем на середине второй выскакивает такая вот фигня: &quot;test.exe вызвал срабатывание точки...

Ошибка: "вызвано срабатывание точки останова" - C++
Ошибка, по идее, в освобождении памяти, но не могу понять именно в чем. #include &quot;stdafx.h&quot; #include &quot;iostream&quot; using...

Язык Си "Одномерные массивы". Сортировка по возрастанию - C++
помогите с написание программы. 4. Дан целочисленный массив Х=(х1, х2, …, хn). Сформировать массив Y=(y1, y2, …, ym), поместив в него в...

ОС Windows инициировала точку останова - C++
Здравствуйте, помогите устранить ошибку при выполнении программы #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; #include...

Сортировка массива по возрастанию "пузырьком" - C++
Отсортировать массив по возрастанию методом &quot;пузырька&quot;.

ОС Windows инициировала точку останова в программе - C++
Писал программу для нахождения минимального пути из точки start(Х) в точку finish(Y) путём обхода графа в ширину. Во время отладки...

ОС Windows инициировала точку останова в stroki.exe - C++
#include&lt;iostream&gt; #include&lt;conio.h&gt; #include&lt;string&gt; #include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; using namespace std; int main() ...

ОС Windows инициировала точку останова в kursach.exe - C++
Доброго времени суток! Проблема распространенная конечно, но в этом разобраться ни я сам, не с помощью преподавателя почему то не...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Модератор
Эксперт CЭксперт С++
6997 / 4168 / 594
Регистрация: 29.11.2010
Сообщений: 11,047
23.12.2013, 03:38     Сортировка по возрастанию: ошибка "ОС Windows иницииализировала точку останова" #2
Цитата Сообщение от Sh@dow777 Посмотреть сообщение
int n;
int *a = new int[n];
глобальная переменная n по-умолчанию (т.к. не указано значение явно) равна 0. Далее идет попытка создать массив 0 размера.

Избавьтесь от глобальных переменных - 2/3 ошибок меньше.
А далее вам нужно уж про динамические массивы почитать, да понять, что индексация у массивов начинается с 0, а не 1. И идет соответственно до N-1, а не N
Sh@dow777
12 / 12 / 3
Регистрация: 10.12.2013
Сообщений: 664
23.12.2013, 04:38  [ТС]     Сортировка по возрастанию: ошибка "ОС Windows иницииализировала точку останова" #3
Изменил немного код
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
#include <stdio.h>
 
int n;
int T,i,s,count,k;
 
int main()
{
    scanf("%d", &T);
 
    for(count = 1;count <= T;count++){
        scanf("%d\n", &n);
        int *a = new int[n];
        for(i = 0; i < n;i++)
            scanf("%d", &a[i]);
        for(s = 0;s < n;s++){
            for(i = 0;i < n - 1;i++)
                if(a[i] > a[i+1]){
                    k = a[i];
                    a[i] = a[i+1];
                    a[i+1] = k;
                }
        }
        for(i = 0;i < n;i++)
            printf("%2d", a[i]);
    }
 
    return 0;
}
Все отлично сортирует, ошибки не выдает. Только скажите, почему у меня в программе размер массива на втором тесте вводится не с новой строки, а в строке, где показан отсортированный массив? Я же вроде указал \n
abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
23.12.2013, 04:57     Сортировка по возрастанию: ошибка "ОС Windows иницииализировала точку останова" #4
C++
1
scanf("%d", &T);
страсти то какие... у Вас рука то не дрогнула обозначить сей код как C++? я здесь не вижу ни одной строчки, которая бы относилась к C++
какие scanf, какие printf?
почему не на бейсике то код дали?
не стыдно вообще?
MrGluck
Модератор
Эксперт CЭксперт С++
6997 / 4168 / 594
Регистрация: 29.11.2010
Сообщений: 11,047
23.12.2013, 11:46     Сортировка по возрастанию: ошибка "ОС Windows иницииализировала точку останова" #5
Цитата Сообщение от Sh@dow777 Посмотреть сообщение
for(count = 1;count <= T;count++){
* * * * scanf("%d\n", &n);
C++
1
2
3
for(count = 1;count <= T;count++){
        printf("\n");
* * * * scanf("%d", &n);
Следует различать ввод и вывод.
abit, а что, в С++ scanf/printf нет?
Не подумайте что я призываю использовать эти функции вместо потоков, просто не стоит так яро накидываться, в универах С++ именно так вначале и подают (под видом С, причем даже под С89).

Добавлено через 1 минуту
Да, и добавьте освобождение памяти (delete[])
И избавьтесь от глобальных переменных до конца. Скажите, вот чего вам стоит просто перенести их в начало main?
Yandex
Объявления
23.12.2013, 11:46     Сортировка по возрастанию: ошибка "ОС Windows иницииализировала точку останова"
Ответ Создать тему
Опции темы

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