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

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

Войти
Регистрация
Восстановить пароль
 
 
cats2013
1 / 1 / 0
Регистрация: 14.04.2013
Сообщений: 17
#1

Программа не компилируется - C++

05.05.2013, 20:14. Просмотров 585. Ответов 17
Метки нет (Все метки)

Доброго всем времени суток!

Не могу скомпилировать программу.

У меня задача написать программу сортировки целых чисел методом быстрой сортировки с использованием partition - разделения и setPivot функции.


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
// This program demonstrates the QuickSort Algorithm.
#include <iostream>
#include <algorithm>
using namespace std;
 
 
 
 
//**********************************************************
// partition selects the value in the middle of the        *
// array set as the pivot. The list is rearranged so       *
// all the values less than the pivot are on its left      *
// and all the values greater than pivot are on its right. *
//**********************************************************
 
template <class T1>
int partition(T1 set[], int start, int end)
{
   int pivotValue, pivotIndex, mid;
 
   mid = (start + end) / 2;
   swap(set[start], set[mid]);
   pivotIndex = start;
   pivotValue = set[start];
   for (int scan = start + 1; scan <= end; scan++)
   {
      if (set[scan] < pivotValue)
      {
         pivotIndex++;
         swap(set[pivotIndex], set[scan]);
      }
   }
   swap(set[start], set[pivotIndex]);
   return pivotIndex;
}
 
//************************************************
// quickSort uses the quicksort algorithm to     *
// sort set, from set[start] through set[end].   *
//************************************************
 
template <class T>
void quickSort(T set[], int start, int end)
{
   T pivotPoint;
 
   if (start < end)
   {
      // Get the pivot point.
      pivotPoint = partition(set, start, end);
      // Sort the first sub list.
      quickSort(set, start, pivotPoint - 1);
      // Sort the second sub list.
      quickSort(set, pivotPoint + 1, end);
   }
}
//**********************************************
// swap simply exchanges the contents of       *
// value1 and value2.                          *
//**********************************************
 
template <class T>
void swap(T &value1, T &value2)
{
   int temp = value1;
 
   value1 = value2;
   value2 = temp;
}
 
int main()
{
   const int SIZE = 10;  // Array size
   int count;            // Loop counter
 
   // need to override the [] function?
   int array[SIZE] = {7, 3, 9, 2, 0, 1, 8, 4, 6, 5};
 
   // Display the array contents.
   for (count = 0; count < SIZE; count++)
      cout << array[count] << " ";
   cout << endl;
 
   // Sort the array.
   quickSort(array, 0, SIZE - 1);
 
   // Display the array contents.
   for (count = 0; count < SIZE; count++)
      cout << array[count] << " ";
   cout << endl;
   return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.05.2013, 20:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Программа не компилируется (C++):

Программа компилируется в Borland 6.0 но не компилируется в Visual Studio 2008 - C++
Ета програма компилируетса в борланде 6.0 но не компилируетса в Visualstudio 2008 и в борланде 10-м почему? #include&lt;iostream&gt; ...

Первая программа. Код не компилируется и не запускается программа. - C++
Первая программа, первая ошибка Здравствуйте! Решил учить С++. Скачал книгу Programming: Principles and Practice Using C++, Бьерн...

Программа не компилируется - C++
Установил Borland С+++ 5,5 в папку C:\BCC, в папке bin как положено создал bcc32.cfg и link32.cfg как полагается с соответствующим...

Не компилируется программа - C++
Написал программу для вычисления корней квадратного уравнения. С языком знаком целых 2 пары, само собой она неправильная и по-этому не...

Не компилируется программа - C++
#include &quot;StdAfx.h&quot; #include &quot;Line.h&quot; Line::Line(Point* start, Point* end) { this-&gt;Start = start; this-&gt;End = end; } ...

Не компилируется программа - C++
Скпомпилируйте, у меня одной оно не так как надо работает??? # include &lt;iostream&gt; # include &lt;iomanip&gt; # include &lt;cmath&gt; #...

17
Bend3r
149 / 136 / 18
Регистрация: 29.07.2012
Сообщений: 709
05.05.2013, 20:35 #2
На что указывает компилятор? На какую строку?
1
UnsKneD
алкокодер
154 / 150 / 11
Регистрация: 27.12.2012
Сообщений: 548
05.05.2013, 20:47 #3
cats2013, конечно у вас ничего не скомпилируется.
Здесь вы используете функцию swap из std
C++
1
swap(set[start], set[mid]);
А здесь уже функция swap которую написали вы.
C++
1
void swap(
Естественно любой вызов swap() будет неоднозначным.
1
cats2013
1 / 1 / 0
Регистрация: 14.04.2013
Сообщений: 17
05.05.2013, 21:35  [ТС] #4
Все-равно не пойму.

Вот скрин ошибок которые выдаёт компилятор:
0
Миниатюры
Программа не компилируется  
Belfegor
Ghost
173 / 173 / 6
Регистрация: 16.09.2012
Сообщений: 526
05.05.2013, 22:45 #5
все компилируется и работает http://ideone.com/Ce9BEw
0
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
05.05.2013, 22:55 #6
cats2013, уберите
C++
1
using namespace std;
и добавьте в начало main():
C++
1
2
using std::cout;
using std::endl;
1
Belfegor
Ghost
173 / 173 / 6
Регистрация: 16.09.2012
Сообщений: 526
05.05.2013, 22:59 #7
Цитата Сообщение от Tulosba Посмотреть сообщение
2
using std::cout;
using std::endl;
1) там используется и cin и главная функция объявлена, почитали бы код...
1
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
05.05.2013, 23:04 #8
Цитата Сообщение от Belfegor Посмотреть сообщение
) там используется и cin и главная функция объявлена, почитали бы код...
Неужели? И где же?
0
Bend3r
149 / 136 / 18
Регистрация: 29.07.2012
Сообщений: 709
05.05.2013, 23:04 #9
Цитата Сообщение от Tulosba Посмотреть сообщение
cats2013, уберите
C++
1
using namespace std;
и добавьте в начало main():
C++
1
2
using std::cout;
using std::endl;
Разница?
1
Belfegor
Ghost
173 / 173 / 6
Регистрация: 16.09.2012
Сообщений: 526
05.05.2013, 23:07 #10
Tulosba, пардон, у себя при тесте ручной ввод навоял, всравно от вашего совета ничего не изменилось бы
1
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
05.05.2013, 23:11 #11
Belfegor, почему тогда у меня изменилось? Какая у Вас среда разработки и какие ошибки появляются?

Добавлено через 1 минуту
Цитата Сообщение от Bend3r Посмотреть сообщение
Разница?
Разница в том, что при using namespace std; хватается много лишнего. В том числе стандартная функция swap. Так как в данном коде используется свой вариант swap, компилятор не может решить что использовать (по крайней мере VS2012).
0
Belfegor
Ghost
173 / 173 / 6
Регистрация: 16.09.2012
Сообщений: 526
05.05.2013, 23:14 #12
Цитата Сообщение от Tulosba Посмотреть сообщение
Какая у Вас среда разработки и какие ошибки появляются?
нетбинс, кодблокс, вс12 - никаких ошбок, + ideone , копайте в сторону своего компилятора никогда не один не будет брать стандарт если написано вручную
0
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
05.05.2013, 23:36 #13
Цитата Сообщение от Belfegor Посмотреть сообщение
вс12 - никаких ошбок
Тем не менее, на VS2010/12 наблюдаю ошибки:
'swap' : ambiguous call to overloaded function
Цитата Сообщение от Belfegor Посмотреть сообщение
всравно от вашего совета ничего не изменилось бы
В Visual Studio поведение меняется.
0
abit
264 / 263 / 33
Регистрация: 03.02.2013
Сообщений: 731
06.05.2013, 00:17 #14
Tulosba,
да это какой-то баг у мастдая, прога полностью в станадрте, не раздумывайте над этой фигнёй, разрешите уже неоднозначность, раз ваш компилятор об этом мечтает - например в хорошем стиле программирования плохо писать using namespace std;

попробуйте сперва решить проблему например так:
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
#include <iostream>
#include <algorithm>
using std::cout;    using std::endl;
 
 
 
 
//**********************************************************
// partition selects the value in the middle of the *
// array set as the pivot. The list is rearranged so *
// all the values less than the pivot are on its left *
// and all the values greater than pivot are on its right. *
//**********************************************************
 
template <class T1>
int partition(T1 set[], int start, int end) {
    int pivotValue, pivotIndex, mid;
 
    mid = (start + end) / 2;
    std::swap(set[start], set[mid]);
    pivotIndex = start;
    pivotValue = set[start];
    for (int scan = start + 1; scan <= end; scan++) {
        if (set[scan] < pivotValue) {
            pivotIndex++;
            std::swap(set[pivotIndex], set[scan]);
        }
    }
    std::swap(set[start], set[pivotIndex]);
    return pivotIndex;
}
 
//************************************************
// quickSort uses the quicksort algorithm to *
// sort set, from set[start] through set[end]. *
//************************************************
 
template <class T>
void quickSort(T set[], int start, int end) {
    T pivotPoint;
 
    if (start < end) {
// Get the pivot point.
        pivotPoint = partition(set, start, end);
// Sort the first sub list.
        quickSort(set, start, pivotPoint - 1);
// Sort the second sub list.
        quickSort(set, pivotPoint + 1, end);
    }
}
//**********************************************
// swap simply exchanges the contents of *
// value1 and value2. *
//**********************************************
 
template <class T>
void swap(T &value1, T &value2) {
    int temp = value1;
 
    value1 = value2;
    value2 = temp;
}
 
int main() {
    const int SIZE = 10; // Array size
    int count; // Loop counter
 
// need to override the [] function?
    int array[SIZE] = {7, 3, 9, 2, 0, 1, 8, 4, 6, 5};
 
// Display the array contents.
    for (count = 0; count < SIZE; count++)
        cout << array[count] << " ";
    cout << endl;
 
// Sort the array.
    quickSort(array, 0, SIZE - 1);
 
// Display the array contents.
    for (count = 0; count < SIZE; count++)
        cout << array[count] << " ";
    cout << endl;
    return 0;
}
Добавлено через 2 минуты
если поможет, то можно вернуть в partition swap вместо std::swap и после
C++
1
mid = (start + end) / 2;
написать
C++
1
using std::swap;
1
cats2013
1 / 1 / 0
Регистрация: 14.04.2013
Сообщений: 17
06.05.2013, 07:20  [ТС] #15
Да, ABIT - действительно помогло!!!!
Спасибо!!!

У меня траблы с компилятором Dev - C++ после того как перешел на Windows 8.

Добавлено через 3 минуты
А не подскажите, ещё как сртировать несколько массисов разной длинны.

Output должен быть примерно такой:

Sorted First Array:
-18 -1 1 9 9 33 34 45 75 100

Sorted Second Array:
86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

Sorted Third Array (first ten):
28 28 41 53 58 123 140 142 148 153
Sorted Third Array (last ten):
32591 32604 32609 32637 32662 32678 32685 32702 32726 32757

Press any key to continue . . .


0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.05.2013, 07:20
Привет! Вот еще темы с ответами:

Не компилируется программа - C++
Здравствуйте. Цель - откомпилировать программу и запустить на WinXP. Проблема в том, что с определенными настройками проект либо...

Не компилируется программа - C++
// Students.cpp: определяет точку входа для консольного приложения. // #include &lt;stdlib.h&gt; // Для работы со структурой #include...

Не компилируется программа - C++
------ Построение начато: проект: Rapid Roll, Конфигурация: Debug Win32 ------ Компиляция... raiders3d.cpp c:\rapid...

Не компилируется программа - C++
Привет. Прошу помочь, если это конечно возможно, не компилируется этот код в dev cpp, версия 5.11. Подскажите, что не так. Выдает такую...


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
06.05.2013, 07:20
Ответ Создать тему
Опции темы

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