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

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

Войти
Регистрация
Восстановить пароль
 
sergei60
47 / 28 / 4
Регистрация: 10.06.2012
Сообщений: 374
#1

Ошибка в сортировке массива - C++

12.08.2015, 08:09. Просмотров 213. Ответов 2
Метки нет (Все метки)

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
#include <cmath>
#include <iostream>
using namespace std;
void sort(int n);
void swap(int *p1,int *p2);
int a[7];
    int main(){
        int i;
        for(i=0; i<7; i++){
            cout<<"введите "<< i << " элемент массива :";
            cin>>a[i];
        }
        sort(7);
        cout<<"Здесь все элементы отсортированного массива :"
        <<endl;
        for(i=0; i<7; i++)
        cout <<a[i]<<" ";
        return 0;
    }
    //функция сортировки  массива: сортирует массив а,
    //состоящий из n элементов.
    void sort (int n){
        int i,j,high;
        for (i= 0; i<n+1; i++){
            //в этой части цикла производится поиск
            //наибольшего элемента в диапазоне от i до n-1
            //индекс найденного элемента присваивается
            //переменной high
            high=i;
            for (j=n; j>i+1;j--)
            if (a[j]>a[high])
            high=j;
            //в этой части цикла выполняется перестановка,
            //если это необходимо.
            if (i !=high)
            swap(&a[i],&a[high]);
        }
    }
    //функция перестановки.
    //меняет местами значения,на которые указывают 
    //переменные  p1 и p2.
    void swap (int *p1,int *p2){
        int temp=*p1;
        *p1=*p2;
        *p2 =temp;
    }
Не работает сортировка массива . Вот вывод :введите 0 элемент массива :9
введите 1 элемент массива :9
введите 2 элемент массива :9
введите 3 элемент массива :9
введите 4 элемент массива :6
введите 5 элемент массива :5
введите 6 элемент массива :4333
Здесь все элементы отсортированного массива :
4333 9 9 9 9 5 6
Причем не работает именно при таком вводе элементов массива.

Добавлено через 17 минут
Я думал ,что эта ошибка из за разрядности вводимых элементов ,но нет . Вот вывод с одноразрядными числамивведите 0 элемент массива :4
введите 1 элемент массива :1
введите 2 элемент массива :9
введите 3 элемент массива :8
введите 4 элемент массива :7
введите 5 элемент массива :5
введите 6 элемент массива :6
Здесь все элементы отсортированного массива :
9 8 7 6 4 5 1
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.08.2015, 08:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка в сортировке массива (C++):

ошибка в сортировке массива - C++
Здравствуйте, помогите пожалуйста исправить ошибку Жалуется на скобку Задание: Нужен код сортировки массива методом...

Ошибка в сортировке массива - C++
#include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;time.h&gt; using namespace std; const int nmax = 100; //Функция создает...

Ошибка в сортировке массива по убыванию - C++
Подскажите в чем ошибка, сортирую массив по убыванию #include &lt;iostream&gt; #include &lt;ctime&gt; #include &lt;cstdlib&gt; using...

Ошибка в сортировке\выводе массива - C++
Помогите исправить ошибку в программе. Задание: В квадратной матрице 3х3 поменять местами столбец, имеющий наибольший элемент со...

Обработка двумерного массива(ошибка в сортировке) - C++
Ребят 2 вопроса, но самый главный заключается в сортировке.Подскажите пожалуйста где ошибся, я уже не могу найти, это бред какой-то... ...

Ошибка в сортировке элементов массива через указатели - C++
Доброго времени суток! Ради интереса играюсь с указателями. Ниже код и он не работает. То есть должна происходить сортировка элементов...

2
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
12.08.2015, 08:18 #2
sergei60, вижу выход за пределы массива. Массив из 7 элементов, т.е. индексы должны лежать в диапазоне [0..6]. Однако при вызове sort(7) видно, что i,j могут достигать значения 7. По алгоритмам сортировки рекомендую посмотреть тут.
0
_Scorpius_
50 / 50 / 24
Регистрация: 01.04.2015
Сообщений: 106
12.08.2015, 08:28 #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    void sort (int n){
        int i,j,high;
        for (i=0; i<n-1; i++){
            //в этой части цикла производится поиск
            //наибольшего элемента в диапазоне от i до n-1
            //индекс найденного элемента присваивается
            //переменной high
            high=i;
            for (j=n-1; j>i;j--)
            if (a[j]>a[high])
            high=j;
            //в этой части цикла выполняется перестановка,
            //если это необходимо.
            if (i !=high)
            swap(&a[i],&a[high]);
        }
    }
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.08.2015, 08:28
Привет! Вот еще темы с ответами:

Ошибка при сортировке двумерного массива по возрастанию - C++
По убыванию сортировка работает полноценно,а по возрастанию первое число НЕ понимаю откуда появляется :wall:. Помогите решить данную...

Ошибка в сортировке - C++
#include &lt;iostream&gt; using namespace std; int main() { int A, c; for (int i = 0; i &lt; 3; i++) { for (int j = 0; j &lt; 3;...

Ошибка в сортировке - C++
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;algorithm&gt; int const N = 5; using namespace std; class book{ ...

Ошибка в сортировке - C++
Часть программы я сделал, но сортировка массива выходит кривой, та строка, которая после сортировки должна быть первой, внезапно...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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