0 / 0 / 0
Регистрация: 13.02.2017
Сообщений: 41
1

Сортировка sort с использование if

27.04.2020, 16:42. Показов 1976. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!
Подскажите можно использовать sort для сортировка массива


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
#include <iostream>
#include <cmath>
#include <string.h> 
#include <string> 
#include <algorithm> 
 
using namespace std;
 
int main() {
    setlocale(LC_ALL, "rus");
    double s[6] = { 1.5,0.1,0,6.0,-9.2,-1.9 };
    int sum = 0;
    //сума положительных элементов
    for (int i = 0; i <= size(s)-1; i++) {
        if (s[i] > 0) {
            sum ++;
        }
    }
 
    cout << "Количество положительных элементов: " << sum << endl;
    //ищет 0 в массиве с конца и запоминает его положение
    int id = 0;
    for (int i1 = size(s)-1; i1 >= 0; i1--) {
        if (s[i1] == 0) {
            id = i1;
            break;
        }
    }
    
    float sum2 = 0;
    //цикл суммирования элементов массив до 0
    for (int i2 = id; i2 < 6; i2++) {
        sum2 += s[i2];
    }
    cout << "Сумма элементов после последнего 0: " << sum2 << endl;
 
    double tempS[size(s)-1] = { 0 };
 
    
 
    system("pause");
    return 0;
}

Необходимо отсортировать массив чтобы в начале были элементы основание которого равно 1,а дальше все остальные

Например 1.5,-1.9,0.1,0,6.0,-9.2
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.04.2020, 16:42
Ответы с готовыми решениями:

Использование команды sort
задачка: вывести топ 10 процессов, хавающих больше всего cpu, формат выдачи столбцов следующий:...

Использование функции sort
Вобщем нужна простенькая прога что бы сортировала n. Но нада использавать библиотеку #include...

Использование функции sort
Часто видел как в алгоритме std::sort(v.begin(),v.end(),Less); // импользуют самонаписанную функцию...

.sort() сортировка
есть некий массив (list) a, каждое значение которого - строка массив а сформирован поэлементным...

11
1709 / 1109 / 337
Регистрация: 25.01.2019
Сообщений: 2,910
27.04.2020, 16:57 2
Цитата Сообщение от DmiRials Посмотреть сообщение
Например 1.5,-1.9,0.1,0,6.0,-9.2
Цитата Сообщение от DmiRials Посмотреть сообщение
основание которого равно 1
"модуль целой части равен 1"? Это так понимать?

C++
1
2
3
4
5
    double s[6] = { 1.5,0.1,0,6.0,-9.2,-1.9 };
 
    std::sort(s, s + 6, [](double a, double b) { return static_cast<int>(fabs(a)) == 1; });
 
    for (auto a : s) std::cout << " " << a;
0
0 / 0 / 0
Регистрация: 13.02.2017
Сообщений: 41
27.04.2020, 17:02  [ТС] 3
Цитата Сообщение от Folian Посмотреть сообщение
модуль целой части равен 1
не модуль ,а основание
Например число 1.5 имеет основание 1. следовательно должно быть в начале массива. а число 9 имеет основание 9,значит необходимо расположить в конце.
Целая часть грубо говоря

Добавлено через 2 минуты
Folian,
Входные данные: 1.5,0.1,0,6.0,-9.2,-1.9
Выходные : 1.5,-1.9,0.1,0,6.0,-9.2
0
1709 / 1109 / 337
Регистрация: 25.01.2019
Сообщений: 2,910
27.04.2020, 17:02 4
Цитата Сообщение от DmiRials Посмотреть сообщение
Целая часть грубо говоря
тогда зачем -1.9 вперёд переставил?

Без модуля - то же самое, только без модуля.
C++
1
std::sort(s, s + 6, [](double a, double b) { return static_cast<int>(a) == 1; });
0
0 / 0 / 0
Регистрация: 13.02.2017
Сообщений: 41
27.04.2020, 17:05  [ТС] 5
Цитата Сообщение от Folian Посмотреть сообщение
тогда зачем -1.9 вперёд переставил?
Целая часть равна 1
Сортировка sort с использование if
0
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
27.04.2020, 17:07 6
Лучший ответ Сообщение было отмечено DmiRials как решение

Решение

Цитата Сообщение от DmiRials Посмотреть сообщение
Необходимо отсортировать массив чтобы в начале были элементы основание которого равно 1,а дальше все остальные
C++
1
2
3
4
5
6
7
8
9
        double s[6] = { 1.5,0.1,0,6.0,-9.2,-1.9 };
        std::sort(std::begin(s), std::end(s), [](double x1, double x2)
        {
            x1 = std::abs(x1);
            x2 = std::abs(x2);
            const bool n1 = int(x1) == 1;
            const bool n2 = int(x2) == 1;
            return n1 == n2? x1 < x2: n1;
        });
0
1709 / 1109 / 337
Регистрация: 25.01.2019
Сообщений: 2,910
27.04.2020, 17:10 7
Цитата Сообщение от DmiRials Посмотреть сообщение
Целая часть равна 1
ещё там написано что массив сам по себе целочисленный
"целая часть которых не превышает единицы, а потом все остальные" - тут обычная сортировка по возрастанию подойдёт. Все элементы больше единицы будут после неё, а все что меньше - до.
0
0 / 0 / 0
Регистрация: 13.02.2017
Сообщений: 41
27.04.2020, 17:16  [ТС] 8
Перед return (в sort)я могу произвести действия сравнения а потом вывести переменную правильно?

Добавлено через 3 минуты
Цитата Сообщение от Folian Посмотреть сообщение
ещё там написано что массив сам по себе целочисленный
Да написано что целые числа необходимо использовать,но преподаватель говорит что неправильно. Потом ткнул что в задании целые. Сказал опечатка и что необходимо использовать вещественные числа)))
0
0 / 0 / 0
Регистрация: 13.02.2017
Сообщений: 41
27.04.2020, 22:06  [ТС] 9
oleg-m1973,
подскажи как можно переделать твой код под такое условие
Сортировка sort с использование if
0
1709 / 1109 / 337
Регистрация: 25.01.2019
Сообщений: 2,910
27.04.2020, 22:15 10
Это врач писал? Неужели сложно нормально переписать?
Теперь меньше единицы сначала?
Внизу результат?

C++
1
2
3
4
5
6
7
    double s[5] = { -3.9, -0.8, 1.4, 0.9, 2.6 };
 
    std::sort(s, s + 5, [](double a, double b) { return static_cast<int>(fabs(a)) < 1; }); 
     /*//по сути меньше единицы только ноль, так что можно
    std::sort(s, s + 5, [](double a, double b) { return !(static_cast<int>(fabs(a))); });
    */
    for (auto a : s) std::cout << " " << a;
Миниатюры
Сортировка sort с использование if  
0
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
27.04.2020, 22:15 11
Цитата Сообщение от DmiRials Посмотреть сообщение
подскажи как можно переделать твой код под такое условие
C++
1
2
3
4
5
6
7
8
9
        std::sort(std::begin(s), std::end(s), [](double x1, double x2)
        {
            const bool n1 = std::abs(x1) < 1;
            const bool n2 = std::abs(x2) < 1;
            return 
                n1 && n2? std::abs(x1) < std::abs(x2):
                !n1 && !n2? x1 < x2: 
                n1;
        });
2
1709 / 1109 / 337
Регистрация: 25.01.2019
Сообщений: 2,910
27.04.2020, 22:31 12
А! Ещё параллельно по возрастанию сортировка нужна! Если так, то моя писанина идет нафиг.
0
27.04.2020, 22:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.04.2020, 22:31
Помогаю со студенческими работами здесь

Сортировка .sort
Здравствуйте, подскажите пожалуйста как отсортировать числа в порядке возрастания a =...

q-sort сортировка
Здраствуйте , не могу понять где в коде ошибка . Выдает такое :d:\program...

Использование std::sort для собственно vector'a
Всем доброго времени суток, необходимо создать рабочий контейнер вектора с итератором, сказано -...

Сортировка Bead sort
Помогите пожалуйста, нужно написать программу сортировки массива бисерной сортировкой, я только...

Сортировка ADODataSet1->Sort
Доброго времени суток! Подскажите, пожалуйста что не так. Необходимо отсортировать записи БД Access...

сортировка вектора sort()
программа заполняет вектор рандомными числами в диапазоне от 1 до 100 сортирует с помощью...


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

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

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