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

блочная сортировка, не работает - C++

Восстановить пароль Регистрация
 
votetoda
 Аватар для votetoda
4 / 4 / 1
Регистрация: 03.07.2015
Сообщений: 64
Завершенные тесты: 1
31.01.2016, 18:45     блочная сортировка, не работает #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
71
72
73
74
75
76
#include <iostream>
#include <ctime>
#include <iomanip>
using namespace std;
 
const int sizeOfArray = 20;
const int x = 10;
const int z = sizeOfArray - 1;
 
void bucketSort(int randomArray[]);
void showArray(int randomArray[]);
 
int main()
{
    setlocale(LC_ALL, "rus");
    int randomArray[sizeOfArray] = {0};
    srand(time(NULL));
    cout << "Несортированный список чисел: " << endl ;
    for (int i = 0; i < sizeOfArray; i++)
    {
        randomArray[i] = rand() % 100;
        cout << setw(4) << randomArray[i];
    }
 
    bucketSort(randomArray);
    showArray(randomArray);
    cout << endl;
    system("pause");
}
 
void clearDoubleArray(int doubleArray[][z])
{
    for (int i = 0; i < x; i++)
        for (int j = 0; j < z; j++)
            doubleArray[i][j] = -1;
}
 
void bucketSort(int randomArray[])
{
    int ostatok;
    int doubleArray[x][z] = { 0 };
    int count;
    for (int x = 10; x <= 100; x *= 10)  
    {
        clearDoubleArray(doubleArray);   
        count = 0;    
        for (int i = 0; i < sizeOfArray; i++)    
        {                                      
 
            ostatok = randomArray[i] % x;
            doubleArray[ostatok][i] = randomArray[i];
 
        }
    }
 
    for (int i = 0; i < x; i++)
    {
        for (int j = 0; j < z; j++)
            if (doubleArray[i][j] != -1)
            {
                randomArray[count] = doubleArray[i][j];
                count++;
            }
 
 
    }
 
}
 
void showArray(int randomArray[])
{
    cout << endl << "Отсортированный массив: " << endl;
    for (int i = 0; i < sizeOfArray; i++)
        cout << setw(4) << randomArray[i];
 
}
Миниатюры
блочная сортировка, не работает  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.01.2016, 18:45     блочная сортировка, не работает
Посмотрите здесь:

C++ Блочная сортировка массива
C++ Блочная сортировка массива (найти ошибку)
C++ Не работает сортировка
C++ Блочная сортировка массива
C++ Не работает оптимизированная сортировка
Блочная сортировка массива. Не выходит C++
Как формируются блочная и ортогональная матрицы? C++
не работает сортировка C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Termit779
 Аватар для Termit779
44 / 29 / 10
Регистрация: 22.11.2015
Сообщений: 98
31.01.2016, 19:45     блочная сортировка, не работает #2
Вот здесь:

C++
1
2
3
4
5
6
7
for (int i = 0; i < sizeOfArray; i++)    
        {                                      
 
            ostatok = randomArray[i] % x;
            doubleArray[ostatok][i] = randomArray[i];
 
        }
на втором проходе x = 100, собственно остаток от деления получится равен первому элементу массива randomArray.
Ну например 55. И собственно происходит попытка изменить состояние области памяти тебе не предназначенную.

Добавлено через 12 минут
Вот так будет делать примерно что ты хочешь.
C++
1
2
3
4
5
6
7
8
        for (int i = 0; i < sizeOfArray; i++)
        {
 
            ostatok = randomArray[i] % x;
            if (ostatok > 10) ostatok /= 10;
            doubleArray[ostatok][i] = randomArray[i];
 
        }
votetoda
 Аватар для votetoda
4 / 4 / 1
Регистрация: 03.07.2015
Сообщений: 64
Завершенные тесты: 1
31.01.2016, 21:23  [ТС]     блочная сортировка, не работает #3
спасибо за помощь!
еще нашел ошибку в скобках "{"
54 строка должны быть на 67 строке
Yandex
Объявления
31.01.2016, 21:23     блочная сортировка, не работает
Ответ Создать тему
Опции темы

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