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

сортировка по возрастанию - C++

Восстановить пароль Регистрация
 
Sh@dow777
11 / 11 / 3
Регистрация: 10.12.2013
Сообщений: 645
23.12.2013, 03:27     сортировка по возрастанию #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
#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 иницииализировала точку останова". В чем проблема? Да, и еще почему то размерность массива на втором тесте не с новой строки вводится.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,405
23.12.2013, 03:38     сортировка по возрастанию #2
Цитата Сообщение от Sh@dow777 Посмотреть сообщение
int n;
int *a = new int[n];
глобальная переменная n по-умолчанию (т.к. не указано значение явно) равна 0. Далее идет попытка создать массив 0 размера.

Избавьтесь от глобальных переменных - 2/3 ошибок меньше.
А далее вам нужно уж про динамические массивы почитать, да понять, что индексация у массивов начинается с 0, а не 1. И идет соответственно до N-1, а не N
Sh@dow777
11 / 11 / 3
Регистрация: 10.12.2013
Сообщений: 645
23.12.2013, 04:38  [ТС]     сортировка по возрастанию #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
 Аватар для abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
23.12.2013, 04:57     сортировка по возрастанию #4
C++
1
scanf("%d", &T);
страсти то какие... у Вас рука то не дрогнула обозначить сей код как C++? я здесь не вижу ни одной строчки, которая бы относилась к C++
какие scanf, какие printf?
почему не на бейсике то код дали?
не стыдно вообще?
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,405
23.12.2013, 11:46     сортировка по возрастанию #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     сортировка по возрастанию
Ответ Создать тему
Опции темы

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