Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Jurlique
0 / 0 / 1
Регистрация: 13.11.2013
Сообщений: 47
1

массив сортировка

22.11.2013, 21:34. Просмотров 868. Ответов 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

как это исправить?
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2013, 21:34
Ответы с готовыми решениями:

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

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

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

Массив. Сортировка. Ф-ции
:-#include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; #include &lt;ctime&gt; #define n 11 ...

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

2
Angeline
37 / 31 / 4
Регистрация: 21.10.2013
Сообщений: 197
22.11.2013, 23:55 2
Лучший ответ Сообщение было отмечено Jurlique как решение

Решение

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;
}
}
0
Jurlique
0 / 0 / 1
Регистрация: 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);
}
вот правильный код, у меня получилось так.
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.11.2013, 00:04

Массив Сортировка пузырьком
#include &quot;stdafx.h&quot; #include &lt;Windows.h&gt; #include &lt;iostream&gt; using namespace std; int main() {...

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

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


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

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

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