Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
42 / 41 / 5
Регистрация: 27.11.2009
Сообщений: 100
1

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

23.06.2011, 17:08. Показов 461. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет...вот завтра надо сдавать, а что то мой мозг подкипает. В общем суть такова: есть массив, который передаётся в функцию(функцию выложил). Нужно преобразовать так, что бы вначале шли элементы отличающиеся от максимального не более чем на 20%, а дальше все остальные. Привожу саму функцию:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void sort(int ar[], int n)
{
        int max = 0;
        int maxi;
        for (int i = 1; i < n; i++)
        if (ar[i]>max) { maxi = i; max = ar[i]; }
        swap(ar[maxi], ar[0]);   
        double koffMax = max/100*20;
        int k = 1;
        
        for(int i = 0; i < n-1; i++)
        {
            if(max-ar[i+1] < koffMax)
            {
                //Не могу додуматься что писать здесь ;(
            }
        }
        
 
        for(int i = 0; i < n; i++)
            cout << ar[i] << endl;
}
Help
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.06.2011, 17:08
Ответы с готовыми решениями:

Быстрая сортировка(сортировка Хоара). Отсортировать фрагмент массива
Мне нужно отсортировать фрагмент массива, расположенный между первым и последним отрицательным...

Сортировка массива: перенести положительные числа в начало, а отрицательные - в конец массива
Дан вещественный массив A(N). Отсортировать его таким образом, чтобы все положительные числа...

Сортировка массива по сумме цифр элементов массива в порядке возрастания(неубывания)
Мне нужно написать программу, которая будет сортировать заданный массив по сумме цифр его элементов...

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

2
программист С++
860 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
23.06.2011, 19:09 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
#include <conio.h>
#include <stdlib.h>
#include <locale>
#include <iostream>
#include <algorithm>
 
using namespace std;
 
void sort(double* A, size_t size)
{
    double a = *max_element(A, A + size);
    stable_partition(A, A + size, 
        [=](double e)->bool
        {
            return e / a >= 0.8;
    });
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    size_t M;
    cout << "Введите размер массива A" << endl;
    cin >> M;
 
    double * A = new double[M];
 
    cout << "Введите " << M << " элементов массива A" << endl;
    for (size_t i = 0; i < M; ++i)
        cin >> A[i];
 
    sort(A, M);
 
    cout << "Полученный массив A" << endl;
    for (size_t i = 0; i < M; ++i)
        cout << A[i] << " ";
 
    _getch();
 
    delete[]A;
 
    return EXIT_SUCCESS;
}
0
заставил Бендера
854 / 319 / 17
Регистрация: 05.12.2010
Сообщений: 1,708
Записей в блоге: 6
23.06.2011, 19:40 3
Psixodelik, еще один, как вариант, без функции:
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
#include <cstdlib>
#include <iostream>
#include <cmath>
#include <clocale>
using namespace std;
int main(int argc, char *argv[])
{    setlocale (LC_CTYPE, "rus");   
    int m;
    double koff = 0.2;
    cout << "Ввести размер массива" << endl;
    cin >> m;
    int Masiv[m];
    cout << "Ввести массив :"<< m << endl;
    for(int i=0; i<m; i++)
    cin >> Masiv[i];
 
int max = Masiv[0]; int n;
    for (int i=1; i < m; i++)
      if (Masiv[i]>max) {n = i; max = Masiv[i]; }
// вышли из цикла 
//  индекс максимума - в переменной n
 swap(Masiv[n], Masiv[0]);    //  сам максимум - на первое место в массиве 
// 20 процентов от максимального элемента
double koffMax = max * koff; 
int i = 1; int k = 1;
while (i < m)
{  if ((max - Masiv[i]) < koffMax) 
    if(i > k) 
    {
        swap(Masiv[i], Masiv[k]);
      ++k; 
    }
    ++i;   
}
// Вывод массива
for(int i = 0; i < m; ++i)
   cout <<Masiv[i]<<' ';
cout <<endl; 
    
    system("PAUSE");
    return EXIT_SUCCESS;
}
0
23.06.2011, 19:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.06.2011, 19:40
Помогаю со студенческими работами здесь

Сортировка массива. Ошибка после ввода размерности массива
подскажите почему после ввода размерности массива выдает ошибку #include&lt;iostream&gt;...

Сортировка массива структур через сортировку массива указателей
Ошибка возникает в функции void sort(student **ppStud, int k, char ch). Кто видит ошибку -...

Сортировка массива, вместо массива выводит мусор
Здравствуйте Уважаемые жители форума! Есть рабочий код сортируем массив выбором поиск...

Указатели массива и сортировка массива
Доброго времени суток, вот бьюсь над проблемой, нужна программа которая б сортировку динамического...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru