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

Массив испорчен - C++

Восстановить пароль Регистрация
 
4iFF
 Аватар для 4iFF
19 / 19 / 1
Регистрация: 06.07.2012
Сообщений: 88
31.07.2012, 16:05     Массив испорчен #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
void TestSort::shellSort(int x[], int size) 
{
    int inc, i, j, seq[40];
    int s;
 
    s = increment(seq, size); // вычисление последовательности приращений
    while (s >= 0)  // сортировка вставками с инкрементами y[] 
    {
         inc = seq[s--];
         for (i = inc; i < size; ++i) 
         {
             int temp = x[i];
             for (j = i-inc; (j >= 0) && (x[j] > temp); j -= inc)
                x[j + inc] = x[j];
             x[j] = temp;
         }
    }
}
 
int TestSort::increment(int y[], int size) 
{
    int p1, p2, p3, s;
    p1 = p2 = p3 = 1;
    s = -1;
    do 
    {
        if (++s % 2) 
        {
            y[s] = 8*p1 - 6*p2 + 1;
        } 
        else 
        {
            y[s] = 9*p1 - 9*p3 + 1;
            p2 *= 2;
            p3 *= 2;
        }
    p1 *= 2;
    } 
    while(3*y[s] < size);  
 
    return s > 0 ? --s : 0;
}
(как в теме код короче).Вызов функции:
C++
1
q.shellSort(e,100000);
Проблема в том что при выполнение программы либо фатальная (что массив е испорчен) ошибка либо "виснет".
В чем проблема?Спасибо за ответы.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.07.2012, 16:05     Массив испорчен
Посмотрите здесь:

Дан массив А(4,4). Сформировать массив В(4) из среднеарифметических значений элементов в каждой строке. C++
C++ Массив: сформировать массив C[12] так, чтобы элементы располагались следующим образом: A(1) B(1) A(2) B(2)
Переписать положительные элементы массива K,кратные пяти в массив M,а остальные-в массив Q. C++
C++ Дан массив целых чисел,произвести для него следующие операции: для каждого из чисел ,входящего в массив,указать,сколько раз оно входит в массив...
C++ Ввести массив А. В массив В перенести все элементы массива А, стоящие правее максимального элемента, и имеющие нечетный индекс. Массив В отсортировать
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
31.07.2012, 16:08     Массив испорчен #2
типичные программисты пользуются дебаггером
xADMIRALx
31.07.2012, 16:13
  #3

Не по теме:

Jupiter, Кстати не подскажете как это делается в VS ?

4iFF
 Аватар для 4iFF
19 / 19 / 1
Регистрация: 06.07.2012
Сообщений: 88
31.07.2012, 16:14  [ТС]     Массив испорчен #4
Я VC2010 с дебагом юзаю.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
31.07.2012, 16:19     Массив испорчен #5

Не по теме:

xADMIRALx, в меню Debug есть все необходимое



Цитата Сообщение от 4iFF Посмотреть сообщение
Я VC2010 с дебагом юзаю.
ну дык и пройдись по коду F10/F11
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,337
Завершенные тесты: 1
31.07.2012, 16:20     Массив испорчен #6
В функции
C++
1
void TestSort::shellSort(int x[], int size)
строку
C++
1
int temp = x[i];
нормально проходит? Я тут на босу ногу набросал, - дебагер говорит что х пуст.
4iFF
 Аватар для 4iFF
19 / 19 / 1
Регистрация: 06.07.2012
Сообщений: 88
31.07.2012, 16:29  [ТС]     Массив испорчен #7
Цитата Сообщение от SatanaXIII Посмотреть сообщение
int temp = x[i];
только 3 числа почему-то проходит потом "виснет"...
xADMIRALx
31.07.2012, 16:33
  #8

Не по теме:

Jupiter, не подскажете как продебажить программу?Ну что бы весь код уже сразу был показан на ассемблере

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.07.2012, 16:52     Массив испорчен
Еще ссылки по теме:

Массив: найти номера столбцов с положительными элементами и записать их в одномерный массив C++
C++ Файл: Загрузка данных из файла: первый столбец записывался в 1й массив, второй столбец - во 2й массив, а 3й столбец - в 3й массив.
C++ Дан массив. Записать во второй массив все элементы, не совпадающие с минимальным

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

Или воспользуйтесь поиском по форуму:
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,337
Завершенные тесты: 1
31.07.2012, 16:52     Массив испорчен #9
А сам е в
C++
1
q.shellSort(e,100000);
какой имеет размер? Точно ли 100000?

Добавлено через 6 минут
4iFF, и блок схему запили. А-то тетя вика говорит что речь идет о чем-то математическом. Так попроще будет понять. Потому что у меня что-то запустилось и отработало все. И внезапно никаких косяков.
Yandex
Объявления
31.07.2012, 16:52     Массив испорчен
Ответ Создать тему
Опции темы

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