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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.79
Алексей_123
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 51
30.11.2011, 21:33     Сортировка слиянием в С++ #1
Вот такое задание:
Составить программу реализации указанного метода сортировки и иллюстрации его выполнения. В программе предусмотреть просмотр входных и выходных данных и пошаговое перемещение элементов в соответствии с алгоритмом.
Для получения входных данных иметь три варианта:
a) непосредственный ввод и запись в текстовый файл;
b) генерирование с помощью датчика случайных чисел и запись в текстовый файл;
c) ввод из текстового файла
у меня в программе должна быть сортировка слиянием
vb.net
1
http://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D1%81%D0%BB%D0%B8%D1%8F%D0%BD%D0%B8%D0%B5%D0%BC
помогите откорректировать программу
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
#include <iostream> 
#include <cmath> 
#include <stdio.h> 
#include <time.h> 
using namespace std; 
template <typename Item>
void Merge(Item Mas[], int left, int right, int medium)
{         
    int j = left;
    int k = medium + 1;
    int count = right - left + 1;
    if (count <= 1) return;
    Item *TmpMas = new Item[count];
    for (int i = 0; i < count; i++)
    {
        if (j <= medium && k <= right)
        {
            if (Mas[j] < Mas[k]) 
                TmpMas[i] = Mas[j++];
            else 
                TmpMas[i] = Mas[k++];
        }
        else
        {
            if (j <= medium) 
                TmpMas[i] = Mas[j++];
            else 
                TmpMas[i] = Mas[k++];
        }
    }
    j = 0;
    for (int i = left; i <= right; i++)
    {
        Mas[i] = TmpMas[j++];
    }
    delete[] TmpMas;
}
FILE *t; 
int i,n,b,c; 
int *a; 
int main() 
{ 
    cout<<"Varianti vvoda (1 klava, 2 random, 3 iz faila)"<<endl; 
    cin>>c; 
    if (c==1) 
    { 
        cout<<"Chislo elementov massiva"<<endl; 
        cin>>n; 
        a= new int[n]; 
        cout<<"Vvod massiva"<<endl; 
        for (i=0;i<n;i++) 
            cin>>a[i]; 
        t=fopen("inoutput.txt","w"); 
        fprintf(t,"%d",n); 
        fprintf(t,"%s","\n"); 
        for (i=0;i<n;i++) 
        { 
            fprintf(t,"%d",a[i]); 
            fprintf(t,"%s"," "); 
        } 
        Merge(a,n); 
        for (i=0;i<n;i++) 
            cout<<a[i]<<" "; 
        fclose(t); 
    } 
    if (c==2) 
    { 
        cout<<"Kol-vo elementov massiva"<<endl; 
        cin>>n; 
        a= new int[n]; 
        for (i=0;i<n;i++) 
            a[i]=rand()%100; 
        cout<<endl; 
        for (i=0;i<n;i++) 
            cout<<a[i]<<" "; 
        cout<<endl; 
        t=fopen("inoutput.txt","w"); 
        fprintf(t,"%d",n); 
        fprintf(t,"%s","\n"); 
        for (i=0;i<n;i++) 
        { 
            fprintf(t,"%d",a[i]); 
            fprintf(t,"%s"," "); 
        } 
        Merge(a,n); 
        for (i=0;i<n;i++) 
            cout<<a[i]<<" "; 
        fclose(t); 
    } 
    if (c==3)
    {
        FILE* in;
        int ch;
        if ((in=fopen("inoutput.txt", "r"))!=NULL)
        {
            fscanf(in, "%5d", &ch);
            if (feof(in))
                printf("Pusto\n");
            else
         {
             n=0;
             fseek(in, 0, SEEK_SET);
             while (!feof(in))
             {
                 fscanf(in, "%5d", &ch);
                 n++;
             }
             a=new int[n];
             int t=0;
             fseek(in, 0, SEEK_SET);
             cout<<"massiv:\n";
             while (!feof(in))
             {
                 fscanf(in, "%5d", &ch);
                 a[t]=ch;
                 t++;
             }
             t--;
             for(i=0;i<t;i++)
                 cout<<a[i]<<" ";
             cout<<endl;
             Merge(a,t);
             for(i=0;i<t;i++)
                 cout<<a[i]<<" ";
         }
        }
        else
            cout<<"Nety faila";
        cout<<endl;
        for(int l=0;l<i;l++)
            cout<<a[l]<<" ";
        cout<<endl;
    }
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.11.2011, 21:33     Сортировка слиянием в С++
Посмотрите здесь:

C++ Сортировка слиянием
C++ Сортировка слиянием
C++ Сортировка слиянием
Сортировка слиянием C++
C++ сортировка слиянием
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Алексей_123
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 51
04.12.2011, 19:16  [ТС]     Сортировка слиянием в С++ #2
посмотрите пожалуйста

Добавлено через 20 часов 42 минуты
может быть я саму сортировку неправильно реализовал?

Добавлено через 2 часа 20 минут
Merge(a,n); выдает ошибку на этом
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
04.12.2011, 19:19     Сортировка слиянием в С++ #3
Алексей_123, есть встроенная функция в
C++
1
#include <algorithm>
Алексей_123
0 / 0 / 0
Регистрация: 22.09.2011
Сообщений: 51
04.12.2011, 19:23  [ТС]     Сортировка слиянием в С++ #4
какая функция?
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
04.12.2011, 19:31     Сортировка слиянием в С++ #5
Цитата Сообщение от Алексей_123 Посмотреть сообщение
какая функция?
C++
1
stable_sort()
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
04.12.2011, 19:34     Сортировка слиянием в С++ #6
Алексей_123, http://www.cplusplus.com/reference/algorithm/merge/
Yandex
Объявления
04.12.2011, 19:34     Сортировка слиянием в С++
Ответ Создать тему
Опции темы

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