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

Сортировка пузырьком по змейке - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Переделать программу в ООП http://www.cyberforum.ru/cpp-beginners/thread909845.html
Помогите пожалуйста, у самой ничего не получается. Нужно обернуть программу в классы. Она должна считать уравнения третьего порядка. Самостоятельно ничего не получилось, как ни старалась, ну ни как не могу вникнуть как работать с классами. #include <iostream> #include <clocale> #include <stdlib.h> #include <iomanip> #include <string> #include <cstring> #include <fstream>
C++ Удаление переменной, уменьшение нагрузки процессора Доброго времени суток. У меня есть цикл который находится в таймере (openGl), в этом цикле при каждой итерации создается спрайт и сразу рисуется. Но так память очень засоряется и нагрузка ЦП растет в арифметической прогрессии. Как бы можно было удалять эту переменную-спрайт, чтоб нагрузка не росла? (пробовал memset (с 0), delete, но не помогает). Вот примерный код моего цикла void render ()... http://www.cyberforum.ru/cpp-beginners/thread909839.html
C++ Шаблонные функции работы с деревом
Добрый день. Задача: преобразовать готовые рекурсивные функции работы с деревом в шаблонные. С шаблонами только ещё начал знакомится, поэтому ещё много чего не понимаю. Переделал функции на шаблонные, но возникло 2 проблемы: 1) при заполнении дерева строками (символьными массивами), старые элементы переписываются новыми, то есть вводим 1 - в дереве элемент 1, затем вводим 2, получаем дерево 2 2,...
Освобождение памяти, удаление бинарного дерева C++
Добрый день. Написал программу, которая ищет в файле неиспользуемые переменные, т.е. те, которые объявлены. Всё в общем-то работает, но препод говорит, что нужно освободить память. Поставил обнуление локальных переменных в конце функций и в main, но этого не достаточно. Со слов препода: "После каждого вызова функции дерево разрушается, затем строится с нуля, затем передаётся в следующую...
C++ Почему может не запускаться .exe файл? http://www.cyberforum.ru/cpp-beginners/thread909826.html
Всем привет! Такой вопрос немного странный. Я написал программу. Она компилируется и всё работает, всё что надо выводится - вопросов нет. (Всё - в режиме дебаг). Далее я захожу в директорию проекта, нахожу созданный .exe файл (в папке Debug), пытаюсь его запустить прямо из папки - и не получается: окно показывается на пару миллисекунд - просто мелькает - и все. Добавил в конце проги getch() -...
C++ передача указателя структуры в функцию, ощибка на этапе выполнения Помогите разобратся в чем ошибка. Ошибка вылетает на этапе выполнения. struct book { char * name; char price; static unsigned int CELL; };unsigned int book::CELL = 0; void book_init (book *); void main (void) подробнее

Показать сообщение отдельно
Mirazhana
1 / 1 / 0
Регистрация: 04.09.2012
Сообщений: 94
23.06.2013, 10:09     Сортировка пузырьком по змейке
Нужно реализовать пузырьковую сортировку матрицы по змейке, у самой не получается. Мой рисунок змейки №9, нашла похожую программу но там другой рисунок (№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
#include <iostream>
#include <iomanip>
 
using namespace std;
 
void print(int **a,int n) {
    cout<<"Результат:"<<endl;
    for(int j=0;j<n;j++) 
        { 
        for(int i=0;i<n;i++) cout<<setw(4)<<a[i][j]; 
        cout<<endl<<endl; 
        }
}
 
void flood(int **a,int n) {
    int half=n/2,i,j,k=1;
    for(i=0;i<n;i++) 
        for(j=0;j<half;j++) 
        { 
            
            if(i%2) a[i][half-j-1]=k++; 
            else    a[i][j]=k++;        
        }
 
     for(i=n;i>0;i--) 
        for(j=half;j<n;j++) 
        { 
            
            if(i%2-n%2) a[i-1][j]=k++; 
            else    a[i-1][n+half-j-1]=k++;     
        }
 
}
 
int main()
{   
    setlocale(LC_ALL, "Russian" );
    int n;
    cout<<"Размер матрицы:";
    cin>>n;
    int **a;
 
    a = new int *[n];
    for (int i =0; i<n; i ++)
        a[i] = new int [n];
    flood(a,n);
    print(a,n);
    cout<<endl;
    system("pause");
}
Вот код похожей программы:
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
#include <iostream>
#include <math.h>
#include <cstdlib>
#include <ctime>
#include <iomanip>
using namespace std;
//Функция matrix создает матрицу
void matrix(int **&a,int n)
{
 a=new int *[n];
 for(int e=0 ;e<n;e++)
     a[e]= new int [n];
 return;
 
}
 
//функция обмена значениями
void swap(int &x,int &y) 
{
    int t=x;
    x=y;
    y=t;
    return;
}
 
//Функция coordinates вычисляет координаты  числа
void coordinates(int k, int m, int &i, int &j)
{ 
    int e=0,b1=-1,b2=0; 
    //вычисляем последнее число предыдущей диагонали и диагонали где находится число
    while(k>b2)
    {
        e++;
        b1=b2;
        if (e<m)
        b2= b1+e+1;
        else
        b2=b1-e+2*m-1;
    }
 
    if(e<m)  //до главной диагонали
    {
        if (e%2==1)
        {
            i=e-b2+k;
            j=e-k+b1+1;
        }
        else
        {
            j=e-b2+k;
            i=e-k+b1+1;
        }
    }
    else  //после главной диагонали
    {
        if (e%2==1)
        {
            j=m-k+b1;
            i=e-m+k-b1;
        }
        else
        {
            i=m-k+b1;
            j=e-m+k-b1;
        }
    }
    
}
//сортировка
void sort(int **a,int n)
{
int i0,j0,i1,j1;
 
 
    for (int R = n*n-2; R >= 0; R--)
    {
        for (int i = 0; i <= R; i++)
        {
        coordinates(i,n,i0,j0);
        coordinates(i+1,n,i1,j1);
        if (a[i0][j0] > a[i1][j1])
        swap(a[i0][j0], a[i1][j1]);
        }
    }
 
}
//------------------------------------------
void print(int **a,int n)
{
    //выводим матрицу на экран
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
            cout<<setw(4)<<a[i][j];
        cout<<"\n"<<endl;
    }
    return; 
}
 
 
void randomf(int **a,int n){
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
            a[i][j]=rand()%100;
}
 
void main()
{
    srand((unsigned)time(NULL));
    setlocale(LC_CTYPE, "Russian"); // установка поддержки русского языка
    int n;
    cout<<"введите размер матрицы"<<endl;
    cin>>n;
    int **a;
    matrix(a,n);// создаем матрицу
    randomf(a,n);
    print(a,n);
    cout<<"------------------------------"<<endl;
    sort(a,n);
 
 
    print(a,n); //выводим матрицу на экран
    delete a;
    return;
}
Миниатюры
Сортировка пузырьком по змейке   Сортировка пузырьком по змейке  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 19:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru