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

Сортировка слиянием c++ - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Асинхронная запись http://www.cyberforum.ru/cpp-beginners/thread558086.html
Нужно реализовать программу, которая бы записывала какие-то данные в файл по средствам асинхронной записи. Подскажите, пожалуйста, как организовать такой алгоритм и как показать при работе программы, что это именно асинхронная запись?
C++ Дано число n. Верно ли, что это число содержит ровно 3 одинаковых цифры Помогите пожалуйста с решением очень надо.))) С++ Добавлено через 44 минуты Парни выручайте... осталось 30 минут((( срочно нужно, а то отчисление грозит Добавлено через 21 минуту Помогите пожалуйста с решением очень надо.))) С++ Добавлено через 44 минуты Парни выручайте... осталось 30 минут((( срочно нужно, а то отчисление грозит http://www.cyberforum.ru/cpp-beginners/thread558084.html
C++ Некоректно работает программа
Дорое утро всем. У меня возникло несколько вопросов . 1. Не пойму почему не могу выбрать 8 и 9 пункт меню. 2. Когда вывожу задолжность ( resc ) для 1 введенного номера не выводит ничего, для 2 выводит дважды. Дальше вроде нормально. 3. Ну и привыборе сортировки ошибка. Это впринципе все. #include <iostream.h> #include <sstream> #include <conio.h>
C++ Нужна информация
Обыскал весь интернет нужно найти "Метод шифрования А со звёздочкой" или вроде как оно ещё называется "А star" может у кого есть какая информация об этом методе может кто презентации делал по это теме и т.д. Буду очень признателен!!!
C++ Как вывести адрес адреса массива? http://www.cyberforum.ru/cpp-beginners/thread558013.html
Есть массив символов, например, char s="Sea jakals";. Вывести этот массив в лог, как строку не проблема: Log<<s; (Log - файловый поток вывода, в котором открыт на запись файл "Log.Log"), вывести адрес начала этой строки тоже не проблема: Log<<(void *)s;. А как вывести адрес, по которому хранится сам этот адрес?
C++ подключение include <omp.h> подскажите, пожалуйста, как подключить. Сейчас пишет: fatal error C1083: Cannot open include file: 'omp.h': No such file or directory в configuration properties поставил yes в OpenMP Support подробнее

Показать сообщение отдельно
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,917
Записей в блоге: 1
25.04.2012, 17:21     Сортировка слиянием c++
у тебя программа не работает.
и зачем в ней у тебя 3 списка?

Добавлено через 1 час 20 минут
Вот посмотри это.
Сортировка не совсем работает, надо отладить.
Но принцип сортировки, думаю ты поймёшь.
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
#pragma argsused
#include <iostream>
#include <math.h>
using namespace std;
struct node {
 int body;
 node* next;
};
 
struct list {
 node* head;
 node* tail;
 list();
 void Add(int l);
 void AddFront(int l);
 void Print();
 void Sort();
};
 
 
list::list(){
head=NULL;
tail=NULL;
}
 
void list::Add(int l){
        node* c=new node;
        c->body=l;
        if (!head) head=c;
        else       tail->next=c;
        tail=c;
        c->next=NULL;
        
}
 
void list::AddFront(int l){
        node* c=new node;
        c->body=l;
        if (!tail) tail=c;
        c->next=head;
        head=c;
        
}
node* merge( node* lp1,  node* lp2){
     node* begin=NULL;
     node* end=NULL;
     node* insertion;
     while(lp1&&lp2){
         if(lp1->body>lp2->body){
             insertion=lp1;
             lp1=lp1->next;
         }else{
             insertion=lp2;
             lp2=lp2->next;
         }
         if(!end){
             begin=end=insertion;
         }else{
             end->next=insertion;
             end=end->next;
         }
     }
     insertion=(lp1)?lp1:lp2;
      if(!end){
             begin=end=insertion;
         }else{
             end->next=insertion;
             end=end->next;
         }
      end->next=NULL;
      return begin;
 
}
node* MergeSort(node* start){
    if (!start) return NULL;
    node* med;
    node* temp;
    med=temp=start;
    while(temp){
        temp=(!temp->next)?NULL:temp->next->next;
        if(temp)med=med->next;
    }
    if(med){
        temp=med->next;
        med->next=NULL;
        start=MergeSort(start);
        temp=MergeSort(temp);
        return merge(start, temp);
    }
    else return start;
}
void list::Sort(){
    head=MergeSort(head);
} 
void list::Print(){
        node* t=head;
        while (t){
                cout << t->body << " ";
                t=t->next;
        }
 }
void main()
{
    list spisok1;
    int n1=0, n2=0;
    cout <<"vvedite kolichestvo el-ov i 1ii spisok, yporiadochenni po nevozrastaniy";
    int p;
    cin >> p;
    for (int i=1; i<=p; i++){
        cout << i << ": ";
        int l;
        cin >> l;
        spisok1.AddFront(l);
        n1++;
    }
    cout <<"Ishodny Spisok"<<endl;
    spisok1.Print();
    spisok1.Sort();
    cout <<endl<<"sortirovanny Spisok"<<endl;
    spisok1.Print();
    cin >> p;
    
}
 
Текущее время: 11:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru