Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
 Аватар для amastudent
0 / 0 / 0
Регистрация: 10.05.2017
Сообщений: 51

Не сортируется массив пузырьком

08.09.2017, 10:12. Показов 853. Ответов 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
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
//#include "stdafx.h"
#include <iostream>
#include <locale.h>
#include <stdlib.h>
#include <time.h>
#include <iomanip>
 
using namespace std;
 
//вывод массива
void DispArr (int **Arr, int n, int m );
 
//заполнение случайными числами
void RandArr(int **Arr, int n, int m);
 
//заполнение с клавиатуры
void KeyBoard(int **Arr, int n, int m);
 
//пузырьковая сортировка
void BubbleSort(int **Arr, int n, int m);
 
int main()
{
    //clrscr();
    system("cls");
    setlocale(LC_ALL, "Rus");
    int **Arr;
    int n, m, i;
    int input;
 
    cout << "Введите количество строк: " << endl;
    cin >> n;
 
    cout << "Введите количество столбцов: " << endl;
    cin >> m;
 
 
   // создание динамического двумерного массива
    Arr = new int*[n];
    for (i = 0; i < n; i++) Arr[i] = new int [m];
 
 
    cout << "Выберите следующее действие:" << endl;
    cout << "1. Ввод массива с помощью случайных чисел." << endl;
    cout << "2. Ввод массива с клавиатуры." << endl;
    cout << endl;
 
    cin >> input;
 
//выбор действия
    switch(input){
    case 1:
        RandArr(Arr, n, m);
        break;
    case 2:
        KeyBoard(Arr, n, m);
        break;
    }
//пузырьковая сортировка
    BubbleSort(Arr, n, m);
 
//вывод на экран отсортированного массива
    DispArr(Arr, n, m);
 
// освобождение памяти
    for (i = 0; i < n; i++) delete []Arr[i];
    delete []Arr;
    Arr = NULL;
    system("pause");
    return 0;
}
 
void DispArr (int **Arr, int n, int m ){
    for (int i = 0; i < n; i++){
        for (int j = 0; j < m; j++){
            cout << setw(4) <<Arr[i][j];
        }
        cout << endl;
    }
 
}
void RandArr(int **Arr, int n, int m){
    srand((unsigned)time(0));
       for (int i=0;i<n;i++)
                for (int j=0;j<m;j++)
                   Arr[i][j]= rand()% + 20;   //заполнение ячейки массива случайными числами
}
void KeyBoard(int **Arr, int n, int m){
    for (int i = 0; i < n; i++){
        for (int j = 0; j < m; j++){
            cout << "a["<<i <<"]["<< j << "] = ";
            cin >> Arr[i][j];
            cout << endl;
        }
    }
}
 
void BubbleSort(int **Arr, int n, int m){
    int temp;
    for (int i = 0; i < n; i++){
        for (int j = 0; j < m; j++){
            if (Arr[i][j] > Arr[i][j+1]){
                temp = Arr[i][j];
                Arr[i][j+1] = Arr[i][j];
                Arr[i][j] = temp;
            }
        }
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.09.2017, 10:12
Ответы с готовыми решениями:

Массив не сортируется
Здравствуйте. Программа не сортирует массив, не могу разобраться в чем проблема. Сортировка вставкой. (Да, я знаю,что она достаточно...

Почему не сортируется массив?
#include &lt;cstdlib&gt; #include &lt;iostream&gt; using namespace std; int main(){ int s = 9; ...

Почему не сортируется массив?
#include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;conio.h&gt; using namespace std; int main() { setlocale(LC_ALL, &quot;Rus&quot;); ...

3
 Аватар для amastudent
0 / 0 / 0
Регистрация: 10.05.2017
Сообщений: 51
08.09.2017, 10:29  [ТС]
Немного навела порядок.
Но сортировка все-равно криво работает, да и почему-то при подключенном setlocale вместо русских букв - непонятно что(
(Скрин прикрепила)
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
//#include "stdafx.h"
#include <iostream>
#include <locale.h>
#include <stdlib.h>
#include <time.h>
#include <iomanip>
 
using namespace std;
 
//вывод массива
void DispArr (int **Arr, int n, int m );
 
//заполнение случайными числами
void RandArr(int **Arr, int n, int m);
 
//заполнение с клавиатуры
void KeyBoard(int **Arr, int n, int m);
 
//пузырьковая сортировка
void BubbleSort(int **Arr, int n, int m);
 
int main()
{
    //clrscr();
    system("cls");
    setlocale(LC_ALL, "Rus");
    int **Arr;
    int n, m, i;
    int input;
 
    cout << "Введите количество строк: " << endl;
    cin >> n;
 
    cout << "Введите количество столбцов: " << endl;
    cin >> m;
 
 
   // создание динамического двумерного массива
    Arr = new int*[n];
    for (i = 0; i < n; i++) Arr[i] = new int [m];
 
 
    cout << "Выберите следующее действие:" << endl;
    cout << "1. Ввод массива с помощью случайных чисел." << endl;
    cout << "2. Ввод массива с клавиатуры." << endl;
    cout << endl;
 
    cin >> input;
 
//выбор действия
    switch(input){
    case 1:
        cout << "Вы выбрали заполнение массива случайными числами: " <<endl;
        RandArr(Arr, n, m);
        break;
    case 2:
        cout << "Вы выбрали заполнение массива с клавиатуры." << endl;
        cout << "Введите массив: " << endl;
        KeyBoard(Arr, n, m);
        break;
    }
 
//вывод неотсортированного массива
    cout << "Неотсортированный массив: " << endl;
    DispArr(Arr, n, m);
//пузырьковая сортировка
    cout << "Сортировка массива ..." << endl;
    BubbleSort(Arr, n, m);
 
//вывод на экран отсортированного массива
    cout << "Отсортированный массив:" << endl;
    DispArr(Arr, n, m);
 
// освобождение памяти
    for (i = 0; i < n; i++) delete []Arr[i];
    delete []Arr;
    Arr = NULL;
    system("pause");
    return 0;
}
 
void DispArr (int **Arr, int n, int m ){
    for (int i = 0; i < n; i++){
        for (int j = 0; j < m; j++){
            cout << setw(4) <<Arr[i][j];
        }
        cout << endl;
    }
 
}
void RandArr(int **Arr, int n, int m){
    srand((unsigned)time(0));
       for (int i=0;i<n;i++)
                for (int j=0;j<m;j++)
                   Arr[i][j]= rand()% + 20;   //заполнение ячейки массива случайными числами
}
void KeyBoard(int **Arr, int n, int m){
    for (int i = 0; i < n; i++){
        for (int j = 0; j < m; j++){
            cout << "a["<<i <<"]["<< j << "] = ";
            cin >> Arr[i][j];
            cout << endl;
        }
    }
}
 
void BubbleSort(int **Arr, int n, int m){
    int temp;
    for (int i = 0; i < n; i++){
        for (int j = 0; j < m; j++){
            if (Arr[i][j] > Arr[i][j+1]){
                temp = Arr[i][j];
                Arr[i][j+1] = Arr[i][j];
                Arr[i][j] = temp;
            }
        }
    }
}
Миниатюры
Не сортируется массив пузырьком  
0
1617 / 1182 / 553
Регистрация: 08.01.2012
Сообщений: 4,561
08.09.2017, 10:51
C++
1
2
3
4
5
    
if (Arr[i][j] > Arr[i][j+1]){//всего один проход, да еще за край вылезаем?
     temp = Arr[i][j];
     ........
     Arr[i][j] = temp;//для чего эти телодвижения?
1
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
08.09.2017, 11:31
Сортировка пузырьком (псевдокод):
C++
1
2
3
4
for i = Length(array)-1 to 0 do
  for j = 0 to i - 1 do
    if array[i] > array[i + 1] then
       Swap(array[i], array[i + 1])
Сортировка по возрастанию.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.09.2017, 11:31
Помогаю со студенческими работами здесь

Почему не сортируется массив?
using namespace std; void scan(int * mass) { for( int i = 0; i &lt; 10; i++) { cin &gt;&gt; mass ; } } void print ( int * mass...

Почему не сортируется массив?
Доброго времени суток уважаемые Форумчане,нужно отсортировать в порядке возрастания каждую строку матрицы, код написан, но не сортирует...

Определить время, за которое сортируется массив
Подскажите как узнать время за которое отсортировался массив (mas) Внизу программы где используется InsertSort и массив уходит на...

Неправильно сортируется массив по возрастанию и не находится минимальный элемент
#include &lt;windows.h&gt; #include &lt;iostream.h&gt; #include &lt;math.h&gt; #include &lt;time.h&gt; template &lt;class Type&gt; void vvod(Type *a,int n); ...

Массив Сортировка пузырьком
#include &quot;stdafx.h&quot; #include &lt;Windows.h&gt; #include &lt;iostream&gt; using namespace std; int main() { const int V = 10; int mass,...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru