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

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

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

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

08.06.2012, 22:49. Просмотров 244. Ответов 3
Метки нет (Все метки)

Здравствуйте
Есть у меня такой код
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
Подскажите пожалуйста, как решить?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.06.2012, 22:49     Неполадки с сортировкой массива
Посмотрите здесь:

Отсортировать одномерный массив, заполненный случайными числами, сортировкой Шелла и сортировкой выбором - C++
Отсортировать одномерный массив, заполненный случайными числами, сортировкой Шелла и сортировкой выбором.

Сортировкой двумерного массива - C++
Дан файл, типа: Катя 1992 55 Аня 1993 61 Оля 1994 50 Нужно что бы отсортировало и вывело на экран, так: Аня 1993 61 Катя 1992...

Ошибка в программе с сортировкой массива - C++
Задание. 1. Получить матрицу А(m x n), образованную по закону А (ij) = (i+j)*tan(j). 2. Получить матрицу В из матрицы А, упорядочив...

Отсортировать элементы массива любой сортировкой - C++
Отсортировать элементы массива любой сортировкой 6 1 9 13 5 44 35 8.

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

Не понятно с сортировкой! - C++
Добрый вечер! Возникла неясность с пузырьковой сортировкой. В чём загвоздка? В задании надо присвоить в структуру оператор &lt;, чтобы...

траблы с сортировкой - C++
вот собственно задание первые два я сделал, а третье чет с косяком =\ в одномерном массиве, состоящем из n вещественных элементов,...

Непонятки с сортировкой - C++
Добрый вечер. Практически выполнил задание, но в конце возникла проблема с сортировкой, а именно, в задании нужно ввести название товара,...

Цикл с сортировкой - C++
Если действительный вектор x(x1;x2,...,xn)имеет хотя бы одну компоненту, которая меньше 2,то все отрицательные компоненты заменить их...

Не получается с сортировкой Шелла на С++ - C++
Доброго времени суток.Сразу оговорюсь &quot;код не мой я ещё слаб в написании но стремлюсь к обучении&quot;. Не получается допилить програму...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
darkknight2008
62 / 62 / 6
Регистрация: 16.10.2011
Сообщений: 200
08.06.2012, 22:57     Неполадки с сортировкой массива #2
exit - уже есть функция с таким именем. Вот тебе и выдает ошибку из-за того, что ты создаешь массив с именем exit, а такое имя уже занято.
Andrey.K
342 / 263 / 15
Регистрация: 14.11.2010
Сообщений: 482
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     Неполадки с сортировкой массива
Ответ Создать тему
Опции темы

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