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

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

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

массив сортировка - C++

22.11.2013, 21:34. Просмотров 226. Ответов 2
Метки нет (Все метки)

C++ (Qt)
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
#include <iostream>
 
using namespace std;
 
int main()
 
{
    // Ввод массива
 
    int const n = 11;
    int mas[n];
    int i;
    for (i = 0; i < n; i++) cin >> mas[i];
 
    // Количество элементов массива равных 0
 
    int count = 0;
    for (i = 0; i < n; i++)
        if (mas[i] == 0) count++;
    cout << count << ' ';
 
    // Сумма элементов массива расположенных после минимального элемента
 
    int min = 0;
    for (i = 0; i < n; i++)
        if (mas[i] < mas[min]) min = i;
 
    int sum = 0;
    for (i = min + 1; i < n; i++)
        sum += mas[i];
    cout << sum << '\n';
 
    // Упорядочить элементы массива по возрастанию модулей
 
    int j;
    for (i = n - 1; i >= 1; i--)
        for (j = 0; j < i; j++){
 
            if (abs(mas[j]) > abs(mas[j + 1])){
 
                int sort = mas[j];
                mas[j] = mas[j + 1];
                mas[j + 1] = sort;
 
            }
        }
 
        for (i = 0; i < n; i++)
            cout << mas[i] << ' ';
 
        return 0;
}
Помогите понять, что надо изменить.

Входные данные:
10 8 -4 3 0 -7 4 2 5 0 1

Верный результат
2 12.000000
0.00 0.00 1.00 2.00 3.00 4.00 -4.00 5.00 -7.00 8.00

мой результат
2 12
0 0 1 2 3 -4 4 5 -7 8 10

как это исправить?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2013, 21:34     массив сортировка
Посмотрите здесь:

2-х массив сортировка - C++
Привет всем. люди добрые подскажите пж по такому условию есть массив: 1 3 4 9 7 6 1 6 1 мах в этом массиве мах1=4, мах2=9,...

Массив сортировка - C++
Дан массив a. Расположить его элементы в порядке возрастания. Использовать шейкерную (челночную, пузырьковую с чередованием направлений...

Двумерный массив - сортировка. - C++
Дано задание по двумерным матрицам: 1)Упорядочить строки целочисленной прямоугольной матрицы по возрастанию количества одинаковых...

Одномерный массив, сортировка - C++
Вот задание. Надеюсь на помощь. Вот что у самого получилось... Что делать дальше? ...

Сортировка (двумерный массив) - C++
Найдите строку с максимальным элементом массива и поменяйте её местами с главной диагональю.

Динамический массив, сортировка - C++
Помогите пожалуйста написать программу: Ввести массив из 12 целых чисел в StringGrid, создать новый массив из чисел, которые делятся на 3,...

Сортировка массив с++ по заданию - C++
Всем привет! нужно сделать сортировку масива 1) по убыванию 2)пузырьком 3)внешний и внутренний цикл do while наброски помогите...

Массив,сортировка,файлы. - C++
вообщем надо сформировать динамический массив из вещественных чисел(ввод с клавиатуры),сформировать их по убыванию.вывести в двоичный файл...

C++, одномерный массив, сортировка. - C++
Приветствую! Подскажите, как сформировать массивы X и Y в задании: Заданы массив {bi}; i=1,n. Подсчитать количество нулевых...

Сортировка обменами (массив) - C++
Помогите с этой задачей пожалуйста Сортировка обменами. Дана последовательность чисел а1, а2, ..., аn. Требуется пе-реставить числа в...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Angeline
36 / 30 / 2
Регистрация: 21.10.2013
Сообщений: 197
22.11.2013, 23:55     массив сортировка #2
C++
1
2
3
4
5
6
7
8
9
/*после основной сортировки*/for (i=0; i<11; i++)
{
if (abs(mas[i])==abs(mas[i+1] && mas[i]<mas[i+1])
{
int sort = mas[j];
                mas[j] = mas[j + 1];
                mas[j + 1] = sort;
}
}
Jurlique
0 / 0 / 0
Регистрация: 13.11.2013
Сообщений: 47
23.11.2013, 00:04  [ТС]     массив сортировка #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
#include <iostream>
 
using namespace std;
 
int main()
 
{
    // Ввод массива
 
    int i, n;
    cin >> n;
    int *mas = new int[n];
    for (i = 0; i < n; i++) cin >> mas[i];
 
    // Количество элементов массива равных 0
 
    int count = 0;
    for (i = 0; i < n; i++)
        if (mas[i] == 0) count++;
    cout << count << ' ';
 
    // Сумма элементов массива расположенных после минимального элемента
 
    int min = 0;
    for (i = 0; i < n; i++)
        if (mas[i] < mas[min]) min = i;
 
    int sum = 0;
    for (i = min + 1; i < n; i++)
        sum += mas[i];
    cout << sum << '\n';
 
    // Упорядочить элементы массива по возрастанию модулей
 
    int j;
    for (i = n - 1; i >= 1; i--)
        for (j = 0; j < i; j++){
 
            if (abs(mas[j]) > abs(mas[j + 1])){
 
                int sort = mas[j];
                mas[j] = mas[j + 1];
                mas[j + 1] = sort;
 
            }
        }
 
        for (i = 0; i < 11; i++)
        {
            if (abs(mas[i]) == abs(mas[i + 1] && mas[i] < mas[i + 1]))
            {
                int sort = mas[j];
                mas[j] = mas[j + 1];
                mas[j + 1] = sort;
            }
        }
 
        for (i = 0; i < n; i++)
            cout << mas[i] << ' ';
 
        return 0;
}
Результат
2 12
0 1 0 2 3 -4 4 5 -7 8 - это не верно

Добавлено через 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
71
#include <iostream>
 
using namespace std;
 
void myfunc(float* mas, int start, int end); //Функция
 
int main()
 
{
    // Ввод массива
 
    int i, n;
    cin >> n;
    float *mas = new float[n];
    for (i = 0; i < n; i++) cin >> mas[i];
 
    // Количество элементов массива равных 0
 
    int count = 0;
    for (i = 0; i < n; i++)
        if (mas[i] == 0) count++;
    cout << count << ' ';
 
    // Сумма элементов массива расположенных после минимального элемента
 
    int min = 0;
    for (i = 0; i < n; i++)
        if (mas[i] < mas[min]) min = i;
 
    float sum = 0;
    for (i = min + 1; i < n; i++)
        sum += mas[i];
    cout << sum << '\n';
 
    // Подключаем функцию в программу
 
    myfunc(mas, 0, n - 1);
 
 
    // Вывод сортировки массива
 
    for (i = 0; i < 10; i++)
        cout << mas[i] << ' ';
 
        return 0;
}
 
//Функция(сортировка массива)
 
void myfunc(float* mas, int start, int end)
 
{
    int i = start, j = end;
    float x = abs(mas[(start + end) / 2]);
 
    do {
        while (abs(mas[i]) < x) i++;
        while (abs(mas[j]) > x) j--;
 
        if (i <= j) {
            if (i < j) { float a = mas[i]; mas[i] = mas[j]; mas[j] = a; }
            i++;
            j--;
        }
    } while (i <= j);
 
    if (i < end)
        myfunc(mas, i, end);
    if (start < j)
        myfunc(mas, start, j);
}
вот правильный код, у меня получилось так.
Ответ Создать тему
Опции темы

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