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

Отсортировать первую треть (или две трети) массива в порядке возрастания, остальную часть - развернуть - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сдвинуть элементы на одну позицию вправо\влево http://www.cyberforum.ru/cpp-beginners/thread1496029.html
Ребята помогите пожалуйста с решением задачи на с++ : Сдвинуть элементы на одну позицию вправо\влево.
C++ Тело лямбды. Двумерный массив Здравствуйте. Возник вопрос, при попытке реализации примитивнейшей программы. "Требуется {, вводящая тело лямбды". Что это значит? #include "stdafx.h" #include <iostream> using namespace std; int main() { setlocale(LC_ALL,"rus"); int a; cout<<"Введите массив "<<endl; http://www.cyberforum.ru/cpp-beginners/thread1496024.html
C++ Вызов функции-члена класса по адресу в памяти
Всем хорошего дня :) Допустим, что где-то есть static функция, не принимающая аргументов и ничего не возвращающая. Имея один лишь только её адрес в памяти, можно сделать вот так: void (*f)() = reinterpret_cast<void (*)()>(0x004028E0); f() Тут всё ясно. Теперь допустим, что есть функция-член класса (не статическая). Её адрес в памяти тоже известен. Нужно её вызвать...
Угадайка с наименьшем количеством шагов C++
Доброго времени суток , сижу сижу , не выходит у меня что-то. Игра угадайка , пользователь вводит число от 1 до 100 , компьютер должен угадывать с наименьшем количеством шагов. К примеру. Я выбрал число 14. Компьютер выдает 50? Я говорю ему через switch допустим меньше. Он делит пополам 50 и выдает 25 и спрашивает , я ему опять меньше, он выдает 12 или 13, я ему больше и тут, если я не...
C++ Как передать в функцию русский текст http://www.cyberforum.ru/cpp-beginners/thread1495998.html
Есть такие функции Append ( const uint16 * aText,int32 aLength = -1 ) Append ( const char * aText,int32 aLength = -1,int32 aCodePage = 0 ); Append the eight-bit string aText. If aLength is -1 the text must be null-terminated, otherwise the length is aLength. A code page of 0 (the default) implies UTF-8. Как в aText запихать русский текст? В любую из двух Добавлено через 40...
C++ Создать функции добавления и удаления узла из бинарного дерева Требуется описать функции добавления и удаления узла в бинарном дереве. Вот исходный код. Извиняюсь за комментарии: #include <cstddef> # include <conio.h> #include <stdio.h> #include <iostream> using std::cout; using std::endl; using std::cin; //Íàøà ñòðóêòóðà struct node подробнее

Показать сообщение отдельно
Maksumko
12 / 12 / 4
Регистрация: 13.06.2015
Сообщений: 60
10.07.2015, 13:16     Отсортировать первую треть (или две трети) массива в порядке возрастания, остальную часть - развернуть
Добавлено через 32 минуты
вот код который сортирует ( сори есле не так понял )

1 вариант :

2/3 от мин к макс | 1/3 от мак к мин
----------------> | <---------------

2 вариант:

2/3 от макс к мин | 1/3 от мин к макс
<----------------- | ----------------->

есле в if менять знаки можно изменить направление

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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
const int sz = 18;
 
void sortArrayOne(int arr[], int halfPath);
void sortArrayTwo(int arr[], int halfPath);
void sortSecondPartOne(int arr[], int sz, int halfPath);
void sortSecondPartTwo(int arr[],int halfPath);
 
int main()
{
    setlocale(LC_ALL, "rus");
    int myArray[sz];
    float averageNum = 0.0;
    float resAV = 0.0;
    int halfPath = 0;
 
    cout << "\nВведите среднее значение -> ";
    cin >> averageNum;
 
    srand(time(NULL));
    halfPath = (sz / 3) * 2;
 
    //Заповняємо масив
    for (int i = 0; i < sz; i++)
    {
        myArray[i] = rand() % 100 + 1;
    }
    //Виводимо масив
    cout << "\nВыводим массив : \n\n";
    for (int i = 0; i < sz; i++)
    {
        if (i == 12)
        {
            cout << " |";
        }
        cout << " " << myArray[i];
    }
    //Сумуємо 2/3 масиву не чіпаючи 1/3
    for (int i = 0; i < halfPath; i++)
    {
        resAV += myArray[i];
        if (i == halfPath - 1)
        {
            resAV = resAV / i;
        }
    }
 
    //Провірка нашого значення
    if (resAV > averageNum)
    {
        cout << "\n\nСортируем №1 \n";
        sortArrayOne(myArray, halfPath);
    }
    if (resAV < averageNum)
    {
        cout << "\n\nСортируем №2 \n";
        sortArrayTwo(myArray, halfPath);
    }
 
    //Вивід
    cout << "\n\nВыводим сортированный массив : \n\n";
    for (int i = 0; i < sz; i++)
    {
        if (i == 12)
        {
            cout << " |";
        }
        cout << " " << myArray[i];
    }
 
    cout << "\n\n";
    return 0;
}
 
void sortArrayOne(int arr[], int halfPath)
{
    int tmp = 0;
 
    for (int i = 0; i < halfPath-1; i++)
    {
        if (i == halfPath - 2)
        {
            sortSecondPartOne(arr, sz, halfPath);
        }
        for (int j = i + 1; j < halfPath; j++)
        {
            if (arr[i] > arr[j])
            {
                tmp = arr[i];
                arr[i] = arr[j];
                arr[j] = tmp;
            }           
        }       
    }
}
 
void sortArrayTwo(int arr[], int halfPath)
{
    int tmp = 0;
    sortSecondPartTwo(arr, halfPath);
 
    for (int i = halfPath; i < sz - 1; i++)
    {
        for (int j = i + 1; j < sz; j++)
        {
            if (arr[i] > arr[j])
            {
                tmp = arr[i];
                arr[i] = arr[j];
                arr[j] = tmp;
            }
        }
    }
}
 
void sortSecondPartOne(int arr[], int sz, int halfPath)
{
    int tmp = 0;
 
    for (int i = halfPath; i < sz-1; i++)
    {
        for (int j = i + 1; j < sz; j++)
        {
            if (arr[i] < arr[j])
            {
                tmp = arr[i];
                arr[i] = arr[j];
                arr[j] = tmp;
            }
        }
    }
}
 
void sortSecondPartTwo(int arr[],int halfPath)
{
    int tmp = 0;
 
    for (int i = 0; i < halfPath - 1; i++)
    {
        for (int j = i + 1; j < halfPath; j++)
        {
            if (arr[i] < arr[j])
            {
                tmp = arr[i];
                arr[i] = arr[j];
                arr[j] = tmp;
            }
        }
    }
}
Добавлено через 5 минут
C++
1
2
3
4
5
6
//Заголовочные файлы
#include <iostream>
#include <cstdlib> //for rand()
#include <ctime> //for srand(time(NULL));
 
using namespace std;
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru