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

Неполадки с сортировкой массива - C++

Восстановить пароль Регистрация
 
Lianta
0 / 0 / 0
Регистрация: 23.04.2011
Сообщений: 13
08.06.2012, 22:49     Неполадки с сортировкой массива #1
Здравствуйте
Есть у меня такой код
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
#include <iostream>
#include <conio.h>
#include <locale.h>
#include <stdlib.h>
 
using namespace std;
 
void sort (int n);  //прототип функции сортировки
void swap (int *p1, int *p2); //функция, которая меняет местами две переменные
int enter [10] = {39, 12, 41, 21, 53, 10, 8, 45, 60, 50};   //входной массив
int exit [10];  //выходной массив
 
int main () {
    setlocale (0, "RUS");
    
    int k;
    cout << "Изначальный массив\n" << endl;
    for (k = 0; k < 10; k++) 
        cout << enter[k] << "\n\n";
 
    sort (10); //вызов функции сортировки
    cout << "Отсортированный массив\n" << endl;
 
    for (int i = 0; i < 10; i++)
        cout << exit [i] << "\n\n" << endl;
    
    _getch();
    return 0;
}
 
void sort (int n) {
    int amax, imax, t = 0; //максимальный элемент и его номер
    amax = enter [0];
    exit [0] = amax;
 
    for (int i = 0; i < n; i++) {
        imax = i;
        for (int j = i + 1; j < n; j++)
            if (enter [j] > amax) {
                t++;
                exit [t] = enter [j]; //переносим элемент во второй массив
                enter [imax] = -1; //в первый массив заносим -1
                amax = enter [j];   //заменяем максимальное значение
                imax = j;   //Заменяем номер максимального
                enter [imax] = -1;
            }
    }
 
    for (int i = 0; i < n; i++) {   //проверка оставшихся элементов и перенос их
        if (enter[i] != -1) {
            t++;
            exit [t] = enter [i];
            enter [i] = -1;
        }
    }
 
    //вставка погружением. проверка выходного массива и перестановка элементов в порядке возрастания
    for (int i = 0; i < n - t; i++) {
        for (t = i + t; t > 0; t--) {
            if (exit[t] < exit [t-1])
                swap (&exit[t], &exit[t-1]);
        }
    }
}
 
void swap (int *p1, int *p2) {
    int temp = *p1;
    *p1 = *p2;
    *p2 = temp;
}
Но не удается его скомпилировать, выдает ошибку
1>e:\v21_7\v21_7\code.cpp(11) : error C2365: 'exit' : redefinition; previous definition was 'function'
1> d:\program files\microsoft visual studio 8\vc\include\stdlib.h(406) : see declaration of 'exit'
1>e:\v21_7\v21_7\code.cpp(25) : error C2109: subscript requires array or pointer type
1>e:\v21_7\v21_7\code.cpp(34) : error C2109: subscript requires array or pointer type
1>e:\v21_7\v21_7\code.cpp(41) : error C2109: subscript requires array or pointer type
1>e:\v21_7\v21_7\code.cpp(52) : error C2109: subscript requires array or pointer type
1>e:\v21_7\v21_7\code.cpp(60) : error C2109: subscript requires array or pointer type
1>e:\v21_7\v21_7\code.cpp(60) : error C2109: subscript requires array or pointer type
1>e:\v21_7\v21_7\code.cpp(61) : error C2109: subscript requires array or pointer type
1>e:\v21_7\v21_7\code.cpp(61) : error C2109: subscript requires array or pointer type
Подскажите пожалуйста, как решить?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
darkknight2008
 Аватар для darkknight2008
61 / 61 / 6
Регистрация: 16.10.2011
Сообщений: 200
08.06.2012, 22:57     Неполадки с сортировкой массива #2
exit - уже есть функция с таким именем. Вот тебе и выдает ошибку из-за того, что ты создаешь массив с именем exit, а такое имя уже занято.
Andrey.K
 Аватар для Andrey.K
338 / 259 / 15
Регистрация: 14.11.2010
Сообщений: 480
08.06.2012, 22:58     Неполадки с сортировкой массива #3
Просто в пространстве имен идет где-то повторение с именем твоего массива exit , поэтому ругается, всё остальное правильно . Я заменил твой массив exit на массив exit1 и всё работает.
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
#include <iostream>
#include <conio.h>
#include <locale.h>
#include <stdlib.h>
 
using namespace std;
 
void sort (int n);  //прототип функции сортировки
void swap (int *p1, int *p2); //функция, которая меняет местами две переменные
int enter [10] = {39, 12, 41, 21, 53, 10, 8, 45, 60, 50};   //входной массив
int exit1 [10];  //выходной массив
 
int main () {
    setlocale (0, "RUS");
    
    int k;
    cout << "Изначальный массив\n" << endl;
    for (k = 0; k < 10; k++) 
        cout << enter[k] << "\n\n";
 
    sort (10); //вызов функции сортировки
    cout << "Отсортированный массив\n" << endl;
 
    for (int i = 0; i < 10; i++)
        cout << exit1 [i] << "\n\n" << endl;
    
    _getch();
    return 0;
}
 
void sort (int n) {
    int amax, imax, t = 0; //максимальный элемент и его номер
    amax = enter [0];
    exit1 [0] = amax;
 
    for (int i = 0; i < n; i++) {
        imax = i;
        for (int j = i + 1; j < n; j++)
            if (enter [j] > amax) {
                t++;
                exit1 [t] = enter [j]; //переносим элемент во второй массив
                enter [imax] = -1; //в первый массив заносим -1
                amax = enter [j];   //заменяем максимальное значение
                imax = j;   //Заменяем номер максимального
                enter [imax] = -1;
            }
    }
 
    for (int i = 0; i < n; i++) {   //проверка оставшихся элементов и перенос их
        if (enter[i] != -1) {
            t++;
            exit1 [t] = enter [i];
            enter [i] = -1;
        }
    }
 
    //вставка погружением. проверка выходного массива и перестановка элементов в порядке возрастания
    for (int i = 0; i < n - t; i++) {
        for (t = i + t; t > 0; t--) {
            if (exit1[t] < exit1 [t-1])
                swap (&exit1[t], &exit1[t-1]);
        }
    }
}
 
void swap (int *p1, int *p2) {
    int temp = *p1;
    *p1 = *p2;
    *p2 = temp;
}
Lianta
0 / 0 / 0
Регистрация: 23.04.2011
Сообщений: 13
08.06.2012, 23:01  [ТС]     Неполадки с сортировкой массива #4
Вот, отлично, тоже все заработало, спасибо большое!
Yandex
Объявления
08.06.2012, 23:01     Неполадки с сортировкой массива
Ответ Создать тему
Опции темы

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