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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++: IDE, инструментарий Для чего использовать cmake? http://www.cyberforum.ru/cpp-beginners/thread1496054.html
Здравствуйте. У меня вопрос: Зачем использовать cmake? Можно же вручную (через "Создать проект") сделать проект в той же Visual Studio, а не использовать cmake. Поясните мне, а то я пугаюсь этой cmake.
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;
C++ Вызов функции-члена класса по адресу в памяти http://www.cyberforum.ru/cpp-beginners/thread1496016.html
Всем хорошего дня :) Допустим, что где-то есть static функция, не принимающая аргументов и ничего не возвращающая. Имея один лишь только её адрес в памяти, можно сделать вот так: void (*f)() = reinterpret_cast<void (*)()>(0x004028E0); f() Тут всё ясно. Теперь допустим, что есть функция-член класса (не статическая). Её адрес в памяти тоже известен. Нужно её вызвать...
C++ Угадайка с наименьшем количеством шагов Доброго времени суток , сижу сижу , не выходит у меня что-то. Игра угадайка , пользователь вводит число от 1 до 100 , компьютер должен угадывать с наименьшем количеством шагов. К примеру. Я выбрал число 14. Компьютер выдает 50? Я говорю ему через switch допустим меньше. Он делит пополам 50 и выдает 25 и спрашивает , я ему опять меньше, он выдает 12 или 13, я ему больше и тут, если я не... подробнее

Показать сообщение отдельно
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;
 
Текущее время: 04:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru