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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Doksim
57 / 57 / 8
Регистрация: 08.12.2013
Сообщений: 257
#1

В чем ошибка? - C++

20.12.2013, 23:34. Просмотров 163. Ответов 0
Метки нет (Все метки)

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
#include <iostream.h>
#include <time.h>   
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
 
int n, col_razr=3;
int velich_razr(int chislo,int razr)
{
        while(razr>1)
        {
                chislo/=10;
                razr--;
        }
        return chislo % 10;
}
 
void sort_razr(char dop_mas[100][100], char mas[100], int razr)
{
        int *mas_col = new int[n], i,j, temp=0;
        for(i=0; i<n; i++)
                mas_col[i]=0;
                int a;
        for(i=0; i<n; i++)
        {
                a=velich_razr(mas[i], razr);
                dop_mas[mas_col[a]][a]=mas[i];
                mas_col[a]++;
        }
        for(i=0; i<n; i++)
        {
                for(j=0; j<mas_col[i]; j++)
                {
                        mas[temp]=dop_mas[j][i];
                        temp++;
                }
        }
}
 
void downHeap(char a[], long k, long n)
{
    //  процедура просеивания следующего элемента
    //  До процедуры: a[k+1]...a[n]  - пирамида
    //  После:  a[k]...a[n]  - пирамида
    char new_elem;
    long child;
    new_elem = a[k];
 
    while(k <= n/2) // пока у a[k] есть дети
    {
        child = 2*k;
 
        if( child < n && a[child] < a[child+1] ) //  выбираем большего сына
            child++;
        if( new_elem >= a[child] )
            break;
        // иначе
        a[k] = a[child];    // переносим сына наверх
        k = child;
    }
    a[k] = new_elem;
}
 
void heapSort(char a[], long size)
{
    long i;
    char temp;
 
  // строим пирамиду
    for(i = size / 2 - 1; i >= 0; --i)
        downHeap(a, i, size-1);
 
  // теперь a[0]...a[size-1] пирамида
 
    for(i=size-1; i > 0; --i)
    {
        // меняем первый с последним
        temp = a[i];
        a[i] = a[0];
        a[0] = temp;
        // восстанавливаем пирамидальность a[0]...a[i-1]
        downHeap(a, 0, i-1);
    }
}
 
int main()
 
{
     //   int n;
     double start, end;
 
        cout << "Vvedite razmer posledovatelnosti: ";
        cin >> n;
 
 
        char *s = new char [ n ], *sRazr = new char [ n ], *sPiramid = new char [ n ], dop[ 100 ][ 100 ];
 
 
        cout << "Vvedite posledovatelnost: ";
 
        for( int i = 0; i < n; i++ )
        cin >> s[ i ];
 
        strcpy( sRazr, s );
        strcpy( sPiramid, s );
 
        char str[ 100 ];
        start = clock();       
        for( int a = 0; a < 100000; a++ )
        sort_razr( dop, sRazr, n );
        end = clock();
 
        cout << "\nRezyltat sortirovki Porazrad:";
        for( int j = 0; j < n; j++ )
        cout << " " << sRazr[ j ];                      //
 
        sprintf( str, "%f", end - start );
        cout << "\nDlitelnost: " << str;
 
        start = clock();
        for( int q = 0; q < 100000; q++ )
        heapSort( sPiramid, n );
        end = clock();
 
        cout << "\n\nRezyltat sortirovki Piramidoi:";
        for( int d = 0; d < n; d++ )
        cout << " " << sPiramid[ d ];  
        sprintf( str, "%f", end - start );
        cout << "\nDlitelnost: " << str;
 
        cout << endl;
        return system( "pause" );;
}//---------------------------------------------------------------------------
неправильно сортирует поразрядным методом, в чем ошибка?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2013, 23:34     В чем ошибка?
Посмотрите здесь:

C++ в чем ошибка?
в чем ошибка? C++
В чем ошибка? C++
В чем ошибка? C++
В чем ошибка? C++
C++ в чем ошибка?
В чем ошибка ? ? C++
в чем ошибка? C++
В чем ошибка? C++
C++ В чем ошибка?
C++ В чем ошибка?
В чем ошибка C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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