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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Разбить строку http://www.cyberforum.ru/cpp-beginners/thread214539.html
Просьба написать программу на С++ , которая разбивает строку длинной в 200 символов на строки по 20.
C++ Дана строка, состоящая из букв, цифр, запятых, точек, знаков «+» и «–». Выделить подстроку, которая соответствует записи целого числа. #include <iostream.h> #include <string.h> int main() { char st,st2; int i,j; cout << "Vvedite stroku"; cin >> st; int n=strlen(st); http://www.cyberforum.ru/cpp-beginners/thread214531.html
C++ Не видит класс итераторов
Предметная область: Множество натуральных чисел, Реализованное через Хеш таблицы С цепочками. В классе "myhash" не воспринимается класс "it_hash" а точнее не воспринимается функция it_hash begin() const; Вот Код: #include<iostream> using namespace std;
error C2059: синтаксическая ошибка C++
Добрый день. Собственно, проблема вот в чем. Класс ContStack является наследником чисто виртуалього интерфейса NVICont. При компиляции в месте "Arg<T>* _p;" выдает ошибку: error C2059: синтаксическая ошибка: < 1> g:\vronskiy_lab5_\vronskiy_lab5=(\container.h(90): см. ссылку на создание экземпляров класса шаблон при компиляции "ContStack<Arg,T>"...
C++ MDI запретить создание одного и того же документа http://www.cyberforum.ru/cpp-beginners/thread214515.html
Как запретить создание одного и того же документа в MDI-интерфейсе. (то есть документа одного и того же типа)? И если такой документ создан, перекидывать фокус на него?
C++ функция, суммирует матрицы можно ли организовать её в таком виде? int normsumm(int *perv, int *vtor, int razm) { int *ps, summ; ps=summ; for (int i;i<razm*razm;i++) { *ps=*perv+*vtor; подробнее

Показать сообщение отдельно
isaak
101 / 38 / 9
Регистрация: 17.10.2010
Сообщений: 634
24.06.2012, 14:54  [ТС]     Сортировка слиянием
Подскажите пожалуйста как правильно описать глобальную переменную, подскажите пожалуйста, где ошибка:
Main.cpp:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <time.h>
#include <stdlib.h>
#include <iostream>
#include "MergeSort.h"
extern int N;
void main(void) {
    int const N = 10;
    int i, *a = new int[N];
 
    srand(unsigned(time(NULL)));
    for(i=0; i<N; i++) std::cout << (a[i] = int((double(rand()) / RAND_MAX) * 100)) << "\t";
    std::cout << std::endl;
 
    MergeSort(a, N);
 
    for(i=0; i<N; i++) std::cout << a[i] << "\t";
    std::cout << std::endl;
    delete[] a;
}
MergeSort.cpp:
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
#include <assert.h>
 
#include "MergeSort.h"
 
#ifdef DEBUG_ECHO
#include <iostream>
using namespace std;
 
 
#endif
extern int N;
 
void Merge(int array[], int first, int middle, int last, int temp[]) {
    int idx = first;            // Куда будем делать слияние
    int begin1 = first, end1 = middle;  // Первый из двух сливаемых массивов array[begin1]..array[end1]
    int begin2 = middle+1, end2 = last; // Второй из двух сливаемых массивов array[begin2]..array[end2]
 
    for(; begin1 <= end1 && begin2 <= end2; ) {
        if (array[begin1] < array[begin2]) 
            temp[idx] = array[begin1++];
        else
            temp[idx] = array[begin2++];
        idx++;
    }
 
    for(; begin1 <= end1; )
        temp[idx++] = array[begin1++];
 
    for(; begin2 <= end2; )
        temp[idx++] = array[begin2++];
 
    #ifdef DEBUG_ECHO           // Печать отладочной информации (если разрешено)
    int _z;
    cout << "***merge process begin" << endl;
    for(_z = first; _z <= last; _z++) cout << array[_z] << (_z==middle ? " - " : "  ");
    cout << endl;
    for(_z = first; _z <= last; _z++) cout << temp[_z] << "  ";
    cout << endl << "***merge process end" << endl;
    #endif
 
    for(idx = first; idx <= last; idx++) 
        array[idx] = temp[idx];
}
 
void InternalMergeSort(int array[], int first, int last, int buffer[]) {
    #ifdef DEBUG_ECHO           // Печать отладочной информации (если разрешено)
    cout << "MergeSort: " << first << "  " << last << endl;
    #endif
 
    if (first < last) {
        int m = (first + last)/2;
        InternalMergeSort(array, first, m, buffer);
        InternalMergeSort(array, m+1, last, buffer);
        Merge(array, first, m, last, buffer);
    }
}
 
void MergeSort(int array[], int first, int last) {
    // Временный массив выделяется только один раз
    // (не тратим время на бесполезное перераспределение памяти)
    int *buffer = new int[N];
    InternalMergeSort(array, 0, N-1, buffer);
    delete[] buffer;
}
MergeSort.h:
C++
1
2
3
4
5
6
7
8
9
10
11
#ifndef __MERGE_SORT_H__
#define __MERGE_SORT_H__
 
// Включить печать отладочных сообщений.
#define DEBUG_ECHO 1
 
extern int N;
// Сортировка слиянием
void MergeSort(int array[], int  N);
 
#endif
Все равно выдает ошибки:

Error 3 error LNK1120: 2 unresolved externals C:\Users\Администратор\Documents\Visual Studio 2010\Projects\C++\Console\p1783\Collating sort\Debug\Collating sort.exe 1 1 Collating sort
Error 2 error LNK2001: unresolved external symbol "int N" (?N@@3HA) C:\Users\Администратор\Documents\Visual Studio 2010\Projects\C++\Console\p1783\Collating sort\Collating sort\MergeSort.obj Collating sort
Error 1 error LNK2019: unresolved external symbol "void __cdecl MergeSort(int * const,int)" (?MergeSort@@YAXQAHH@Z) referenced in function _main C:\Users\Администратор\Documents\Visual Studio 2010\Projects\C++\Console\p1783\Collating sort\Collating sort\Main.obj Collating sort

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