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

Сортировка разными методами

19.05.2013, 01:57. Показов 995. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер, подскажите пожалуйста, как переделать, что бы не менялся исходный массив при сортировке. Извините что текст в коде на укр.Спасибо.
Кликните здесь для просмотра всего текста
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
#include <stdio.h>
#include <locale>
#include <iostream>
#include <iomanip>
#include <ctime>
 
using namespace std;
 
int menu_select ();
int** gen(int *m,int *n);
void show(int **a,int m, int n);
void bulb(int **a,int m, int n);
void vubor(int **a,int m,int n);
 
void main()
{
    setlocale(LC_CTYPE, "Russian");
    srand(time(NULL));
    int m,n,**a;
    char choice;
    for (; ;) 
    {
        choice = menu_select ();
        switch (choice) 
        {
            case 1: a=gen(&m,&n); break;
            case 2: show(a,m,n); break;
            case 3: bulb(a,m,n); break;
            case 4: vubor(a,m,n); break;
            case 5:  break;
            case 6:  break;
            case 7: exit (0);
        }
    }
    system ("pause");
}
int menu_select ()
{
    char s [80];
    int c;
    printf ("\n1. Генерувати масив \n");
    printf ("2. Вивести масив \n");
    printf ("3. Бульбашковий \n");
    printf ("4. Вибором \n");
    printf ("5. Завантажити файл \n");
    printf ("6. Переможець \n");
    printf ("7. Вихiд \n");
    do 
    {
        cout<<"\n Введiть номер потрiбного пункту: ";
        _flushall();
        gets (s);
        c = atoi (s);
    } while (c <0 || c> 7);
    return c;
}
int** gen(int *m,int *n)
{
do 
    {
        cout <<"Введiть кiлькiсть рядкiв:";
        cin >>*m;
    }
while(*m <=0);
do {
        cout <<"Введiть кiлькiсть стовбчикiв:";
        cin >>*n;
    }
while(*n<=0);
 
int **a=new int*[*m];
    for(int i=0;i< *m;i++)
    {
        a[i]=new int [*n];
        for(int j=0;j< *n;j++)
        {
            a[i][j]=rand()%9;
        }   
    }
return a;
}
 
void show(int **a,int m, int n)
{
    for(int i=0;i< m;i++)
    {
        for(int j=0;j< n;j++)
            cout <<setw(2)<<a[i][j] << " ";
    cout <<endl;
    }
}
 
void bulb(int **a,int m, int n)
{
    int por=0,per=0;
 
    for (int k=0; k<n; k++)
    {
        for (int l=0; l<m; l++)
        {       
            for (int i=0; i<n; i++)
            {
                for (int j=m-1; j>0; j--)
                {
                    if (a[j][i]<a[j-1][i])
                    {
                        swap(a[j][i],a[j-1][i]);
                        per++;
                    }
                    por++;
                }
            }
 
        }
    }
 
    cout <<"Вiдсортований масив"<<endl;
    
    for(int i=0;i< m;i++)
    {
        for(int j=0;j< n;j++)
            cout <<setw(2)<<a[i][j] << " ";
    cout <<endl;
    }
 
    cout <<"Кiлькiсть порiвнянь: "<<por<<endl;
    cout <<"Кiлькiсть перемiщень: "<<per<<endl;
}
void vubor(int** temp,int m,int n)
{
    int por=0,per=0;
    int min=0;
    int k=m;
    for (int i=0; i<n; i++)
    {
        
        for (int j=0; j<m; j++)
            {
                min=j;
                for (int k=j+1; k<m; k++)
                {
                    if(temp[min][i]>temp[k][i])
                    {
                        swap(temp[min][i],temp[k][i]);
                    }
                }
                
            }
        
    }
 
    cout <<"Вiдсортований масив"<<endl;
    
    for(int i=0;i< m;i++)
    {
        for(int j=0;j< n;j++)
            cout <<setw(2)<<temp[i][j] << " ";
    cout <<endl;
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.05.2013, 01:57
Ответы с готовыми решениями:

Сортировка одномерного массива разными методами
Нужно выполнить сортировку одномерного числового массива по следующим пунктам. Первую часть понимаю(а), дальше разобраться самому не...

Скорость парсинга ini файла разными методами
Ввиду моей большой лени самому неохота проверять данный вопрос, может кто сталкивался с этим? Имеем ini файл достаточно большой, пусть на...

Разработать шаблонный класс Deque c разными методами
Разработать шаблонный класс Deque, который имеет следующие методы: - addBegin(n) - добавление в начало дека - addEnd(n) - добавление...

6
 Аватар для mat_for_c
223 / 213 / 80
Регистрация: 26.04.2013
Сообщений: 972
19.05.2013, 02:04
так вы передавайте в каждую функцию отдельную копию исходного массива.
0
101 / 102 / 43
Регистрация: 06.03.2012
Сообщений: 478
19.05.2013, 02:29
mat_for_c, здесь и так передайтся в каждую функцию исходный массив,у меня всё в порядке работает...
0
2 / 2 / 1
Регистрация: 21.02.2013
Сообщений: 13
19.05.2013, 02:56  [ТС]
Цитата Сообщение от faLek Посмотреть сообщение
mat_for_c, здесь и так передается в каждую функцию исходный массив,у меня всё в порядке работает...
После сортировки, я пытаюсь вывести массив(пункт меню 2) оно выводит уже отсортированный массив(Visual Studio 2010). И если использовать потом еще какой-то метод, то оно уже берет отсортированный массив(
0
101 / 102 / 43
Регистрация: 06.03.2012
Сообщений: 478
19.05.2013, 03:00
valentyn1994, ну так и сказали бы что в этом загвоздка
0
2 / 2 / 1
Регистрация: 21.02.2013
Сообщений: 13
19.05.2013, 08:54  [ТС]
Поможешь?
0
 Аватар для mat_for_c
223 / 213 / 80
Регистрация: 26.04.2013
Сообщений: 972
19.05.2013, 11:29
faLek, valentyn1994, я же говорю
Цитата Сообщение от mat_for_c Посмотреть сообщение
передавайте в каждую функцию отдельную копию
, а не

Цитата Сообщение от faLek Посмотреть сообщение
здесь и так передайтся в каждую функцию исходный массив
КОПИЮ массива, а НЕ исходный массив передавать

Добавлено через 5 минут
valentyn1994, как только ты вызвал один метод с использованием своего входного массива, то он отсортировался и при вызове других методов будешь передавать отсортированный.
для сортировок передавай копию массива.
а для вывода - отсортированную копию, или просто копию, если нужно вывести исходный массив
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.05.2013, 11:29
Помогаю со студенческими работами здесь

Вычислить значение определенного интеграла разными методами
Вычислить значение определенного интеграла по формуле прямоугольников (слева, справа и их среднее значение), по формуле трапеций и по...

Нужно решение задачи об ограниченном рюкзаке разными методами
Всем привет!!!может кто-нибудь помочь кодом,решение задачи об ограниченном рюкзаке разными методами?очень надо:(

Сравнить количество перестановок при сортировке одного и того же массива разными методами
Напишите программу, которая сравнивает количество перестановок при сортировке одного и того же массива разными методами. Проведите...

Сортировка 2мя методами.
Нужно написать 2ве программы сортировки. Одна - пирамидальная сортировка, другая - сортировка включением. Нужно, Очень срочно. Помогите...

Сортировка структуры методами
Здравствуйте, кто может подсказать как сортировать структуру методами: Бинарного включения, простым обменом, методом Шелла. Есть код...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru