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

Как сделать сортировку строки по убыванию(также и для отрицательных чисел)

12.08.2022, 12:34. Показов 695. Ответов 11
Метки с++ (Все метки)

Знаю, что это можно сделать так:
C++
1
2
3
4
sort(str.begin(), str.end(), [](int a, int b)      // Сортировка по убыванию
                {
                    return a > b;
                });
Но это не работает с отрицательными числами. Помогите, пожалуйста
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.08.2022, 12:34
Ответы с готовыми решениями:

Как сделать сортировку чисел в файле (d.txt), по убыванию
import random n=int(input("Введіть кількість чисел в файлі: ")) ser_s=0 matr= for i in...

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

Как сделать, чтобы выводило цифры также для отрицательных значений?
Написать выражение, возвращающее старшую цифру из дробной части меньшего из двух заданных...

Как сделать сортировку по убыванию с полем soccer?
Есть таблица command в ней поля id_command name_command images_command games win nin los...

Как сделать сортировку по убыванию/возрастанию массива объектов?
Как сделать сортировку по убыванию/возрастанию массива объектов? Так? или не так? //убывание ...

11
Chipmunk
2579 / 2482 / 576
Регистрация: 13.04.2015
Сообщений: 5,910
12.08.2022, 12:38 2
Цитата Сообщение от Volyn Посмотреть сообщение
Но это не работает с отрицательными числами
Почему это?
0
0 / 0 / 0
Регистрация: 12.08.2022
Сообщений: 7
12.08.2022, 13:00  [ТС] 3
Если ввожу 4567, то выводит 7654. Всё верно.
Если 456-7, то 7654-

Добавлено через 16 минут
Вот весь код для наглядности:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <string>
#include <algorithm>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "ru");
    string str;
    cout << "Введите строку: ";
    cin >> str;
    sort(str.begin(), str.end(), [](int a, int b)      // Сортировка по убыванию
        {
            return a > b;
        });
    cout <<"Полученный результат: "<< str << endl;
    return 0;
}
0
Chipmunk
2579 / 2482 / 576
Регистрация: 13.04.2015
Сообщений: 5,910
12.08.2022, 13:08 4
Цитата Сообщение от Volyn Посмотреть сообщение
Введите строку
Вот именно - строку. И сортирует символы в строке. Можешь еще букв туда добавить.
Цитата Сообщение от Volyn Посмотреть сообщение
456-7
Тут сам-то с разбегу не поймёшь что написано. Четыреста пятьдесят шесть минус семь.
0
0 / 0 / 0
Регистрация: 12.08.2022
Сообщений: 7
12.08.2022, 13:12  [ТС] 5
Цитата Сообщение от I can Посмотреть сообщение
Тут сам-то с разбегу не поймёшь что написано
Эти числа должны быть отдельно. То есть четыре, пять, шесть и минус семь
0
Chipmunk
2579 / 2482 / 576
Регистрация: 13.04.2015
Сообщений: 5,910
12.08.2022, 13:33 6
Лучший ответ Сообщение было отмечено Volyn как решение

Решение

Цитата Сообщение от Volyn Посмотреть сообщение
Эти числа должны быть отдельно
Это ты знаешь, а программа нет. Заноси их в массив целых чисел (int) и сортируй.
0
582 / 366 / 179
Регистрация: 18.10.2020
Сообщений: 1,351
12.08.2022, 16:07 7
ну если прога рассчитана на работу с числами, то почему бы не вводить числа?


C++
1
*удалено*
ой забыл самое главное)

Добавлено через 5 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <cstring>
#include <iostream>
#include <cmath>
 
int main()
{
   int d;
   std::cin >> d;
   while(std::cin.get() != '\n');
   bool sign = d < 0;
   char buf[40];
   d = abs(d);
   int i = 0;
   if(sign)
   buf[i++] = '-';
   while(d)
   {buf[i++] = '0' + d % 10; d/=10;}
   buf[i] = '\0';
   std::cout << buf;
   std::cin.get();
}
0
138 / 117 / 44
Регистрация: 09.03.2016
Сообщений: 1,016
13.08.2022, 00:25 8
Убей бог не могу понять, как сией программой пользовать...
0
582 / 366 / 179
Регистрация: 18.10.2020
Сообщений: 1,351
13.08.2022, 00:27 9
Наталья8,
C++
1
std::cout << "input decimal and press Enter: ";
C++
1
std::cout << "\n\nPress Enter to exit..."
0
138 / 117 / 44
Регистрация: 09.03.2016
Сообщений: 1,016
13.08.2022, 00:30 10
Число переворачивает, что ли?
0
582 / 366 / 179
Регистрация: 18.10.2020
Сообщений: 1,351
13.08.2022, 00:31 11
Наталья8, угу
0
138 / 117 / 44
Регистрация: 09.03.2016
Сообщений: 1,016
13.08.2022, 00:31 12
Ладно. вам виднее...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.08.2022, 00:31
Помогаю со студенческими работами здесь

Сделать сортировку для таблицы так, чтобы коэффициенты увлеченности формировались по убыванию
Добрый вечер. Помогите пожалуйста с данной задачей:) Дан начальный Stringgrid1 размер которого 7...

Упорядочить строки матрицы по убыванию количества отрицательных элементов для каждой строки
Дано матрицу розмерности N на M. Упорядочить строки по убыванию количества отрицательных елементов...

Как сделать тоже самое для отрицательных чисел?
перевод из 16-й в десятичную.это для положительных, а как добавить для отрицательных чисел? type...

Упорядочить строки матрицы по убыванию количества отрицательных элементов для каждого ряда
Помогите с заданием очень срочно надо в Си я только начал писать. Вообщем дана матрица размером М...

Нужно сделать сортировку по дате рождения, по убыванию
Надо отсортировать по дате рождения Всю голову сломал то тут ошибка то там #include...

В двумерном массиве сделать сортировку каждого ряда по убыванию
В двумерном массиве сделать сортировку каждого ряда по убыванию. CLS PRINT DIM X(3, 6) FOR i...


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

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

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