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

Процедура цифровой сортировки списка (Digital Sort) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Структура "Человек": поиск в по критерию http://www.cyberforum.ru/cpp-beginners/thread1306744.html
Известны фамилии 25 человек, их семейное положение: женат (замужем) или нет, и сведения о наличии детей (есть или нет). Определить фамилии женатых (замужних) людей, имеющих детей.
C++ Функция, возвращающая указатель на структуру Помогите пожалуйста понять в чем ошибка! Функция create должна возвращать указатель на структуру Vector #include <iostream> using namespace std; struct Vector { int x; int y; int sum; http://www.cyberforum.ru/cpp-beginners/thread1306742.html
C++ fatal error LNK1120: 1 неразрешенных внешних элементов C++
Программа иллюстрирующая работу бинарных операторов // BitTest - инициируются две переменные и // выводятся результаты выполнения // операторов ~ , & , | , и ^ #include <cstdio> #include <cstdlib> #include <iostream> using namespace std;
C++ Программа не останавливается в нужный момент
Программа должна выводить близнецов не выше числа n*2, но она это делает. Вот условие, если кому то нужно: "Дано натуральное число n. Выяснить, имеются ли среди чисел n, n+1,.....,2n близнецы, т.е. простые числа, разность между которыми равна двум. #include <stdio.h> #include <conio.h> bool simple(int n) { int t = n>>1;// t = n/2. for(int i=2;i<t;i++) if( !(n%i) )...
C++ Удаление элементов массива функцией http://www.cyberforum.ru/cpp-beginners/thread1306710.html
Здравствуйте, уважаемые форумчане Задача состоит в том, чтобы при помощи функции создать массив с выводом на печать, а затем удалить чётные элементы массива. Проблема в том, что функция удаления чётных элементов Mod2Del не работает. Вторые сутки бьюсь с этой проблемой и не могу понять, что идёт не так При этом я уверен, что ошибка моя банальна и проста, как три рубля. Пожайлуста, помогите...
C++ Структуры: рост учеников Задача по структурам Известен рост каждого из 25 учеников класса. Ни одна пара учеников не имеет одинакового роста. а) Определить фамилии самого высокого и самого низкого учеников класса. б) Определить фамилии двух учеников, являющихся самыми высокими, без учета действительно самого высокого ученика класса. в) Определить фамилии двух учеников, являющихся самыми подробнее

Показать сообщение отдельно
Kai24
Сообщений: n/a
21.11.2014, 11:47     Процедура цифровой сортировки списка (Digital Sort)
Помогите, прошу!
Разработать процедуру цифровой сортировки списка (DigitalSort). Для проверки правильности сортировки использовать сервисные процедуры для работы со списками, разработанные в лабораторной работе № 9.


Лаба номер 9:

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
#include <iostream>
#include <time.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include<math.h>
#include <string>
const int n=10;
using namespace std;
struct Node{
       Node *next;
       int el;
}; 
 
 
Node* MassVozvr(Node *Head, Node *tail)
{ 
      tail=(Node*)&Head;
      int i, Summel=0, serial=1;
     for(i=0;i<n;i++)
     {
      Node *t=new Node();
      t->el=i+1;
       tail->next=t;
           tail=t;
}
Node *p=Head;
     while(p!=NULL)
     {
         if((p->next!=NULL)&&((p->el)>(p->next->el)))
           serial++;          
       int k=p->el;           
      Summel=Summel+k;            
     cout<<p->el<<" ";
     p=p->next;
     }
     printf("\n");
     printf("Summ:%d\nSerial:%d\n",Summel,serial);
     return Head;
      }
      
      
      
 Node* delet(Node *Head)
 {
       while(Head!=NULL)
    {
       Node *p=Head;
       Head=Head->next;
       delete p;
       } 
       return Head; 
       } 
       
      
 Node* MassUbiv(Node *Head, Node *tail) 
{  
      int i, Summel=0, Serial=1;
      tail=(Node*)&Head;
          for(i=0;i<n;i++)
     {
      Node *b=new Node();
    b->el=n-i;
    b->next=NULL;
            tail->next=b;
           tail=b;
}
     Node *v1=Head;
     while(v1!=NULL)
     {
          if((v1->next!=NULL)&&((v1->el)>(v1->next->el)))
           Serial++;              
        int k=v1->el;           
      Summel=Summel+k;             
     cout<<v1->el<<" ";
     v1=v1->next;
     }
     printf("\n");
     printf("Summ:%d\nSerial:%d\n",Summel,Serial);
 
     return Head;
     } 
     
 
Node* Randomize(Node *Head, Node *tail)
{     tail=(Node*)&Head;
      int i, Summel=0, Serial=1;
       for(i=0;i<n;i++)
     {
      Node *g=new Node();
      g->el=rand()%1000;
     tail->next=g;
           tail=g;
}
        Node *g1=Head;
     while(g1!=NULL)
     {
          if((g1->next!=NULL)&&((g1->el)>(g1->next->el)))
           Serial++;     
        int k=g1->el;           
      Summel=Summel+k;             
     cout<<g1->el<<" ";
     g1=g1->next;
     }
     printf("\nSumm:%d\nSerial:%d",Summel,Serial);
     return Head;
     }
int main()
{
    int i;
   Node *Head=NULL, *tail=NULL;
     printf("\n\n-------------Increase------------\n\n");
    Head=MassVozvr(Head,tail);
    Head=delet(Head);
    printf("\n\n-------------Deacrease------------\n\n");
    Head=MassUbiv(Head, tail);
    Head=delet(Head);          
   
 printf("\n\n-------------Deacrease------------\n\n");
    Head=Randomize(Head, tail);
     Head=delet(Head); 
        
}
Нужно отсортировать цифровой сортировкой каждый массив( возвр, убыв, рандом) + чтобы сортировка была вставлена в эту проггу.

пробовал это
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
spis *DigitalSort(spis *S, int L){
 int j,i;
 int d;
 spis *p,*t;
 tle Q[256];
 bool b;
 for (j=L-1;j>=0;j--) {
     for (i=0;i<256;i++) Q[i].b=false;
     p=S;         
     while (p!=NULL) {
           d=int(p->key[j])+128;         
           if (!Q[d].b) {
              Q[d].head=Q[d].tail=p;
              Q[d].b=true;
           } else {
             Q[d].tail->next=p;
             Q[d].tail=p;
           }
           p=p->next; 
     }
     b=false;
     for (i=0;i<256;i++) {
         if (Q[i].b) {
            if (!b) {
               t=Q[i].head;
               b=true;
            } else p->next=Q[i].head;
            p=Q[i].tail;            
         }
     }
     p->next=NULL;
     S=t;
Не вышло.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 23:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru