Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.01.2012, 21:01   #1
S@n4eeeeez
Пользователь
 
Регистрация: 17.01.2012
Сообщений: 15
Восклицание ПРОБЛЕМА С СОРТИРОВКОЙ

ребят вот готовая программа, тут идет сортировка чисел по возрастанию, как сделать чтобы было по убыванию?
Код:
#include "stdafx.h"
#include <conio.h>
#include <iostream>
#include <algorithm>
#include <string>
#include <functional>

using namespace std;

bool IsWordSeparator(char ch)
{
  
  return !isalpha(ch) && !isdigit(ch);
}
void SortWords(string& str)
{
  for (string::iterator iter = str.begin(), end = str.end(); iter != end;)
  {
    iter = find_if(iter, end, not1(ptr_fun(IsWordSeparator)));
    if (iter != end)
    {
      string::iterator wordEnd = find_if(iter + 1, end, &IsWordSeparator);
      sort(iter, wordEnd);
      iter = wordEnd;
      if (iter != end)
        ++iter;
    }
  }
}

int main()
{
  string str = "8921340, 2341, 36754,  987123;,";
  cout << "do sortirovki: " << str << endl;
  SortWords(str);
  cout << "posle sortirovki:  " << str << endl;
  getch ();
  return 0;
}
S@n4eeeeez вне форума Ответить с цитированием
Старый 19.01.2012, 21:11   #2
Serj0987
Пользователь
 
Регистрация: 18.04.2009
Сообщений: 44
По умолчанию

Вот так, если я не ошибаюсь
Код:
#include "stdafx.h"
#include <conio.h>
#include <iostream>
#include <algorithm>
#include <string>
#include <functional>

using namespace std;

bool cmp( int a, int b ) {return a > b; }

bool IsWordSeparator(char ch)
{
  
  return !isalpha(ch) && !isdigit(ch);
}
void SortWords(string& str)
{
  for (string::iterator iter = str.begin(), end = str.end(); iter != end;)
  {
    iter = find_if(iter, end, not1(ptr_fun(IsWordSeparator)));
    if (iter != end)
    {
      string::iterator wordEnd = find_if(iter + 1, end, &IsWordSeparator);
      sort(iter, wordEnd,cmp);
      iter = wordEnd;
      if (iter != end)
        ++iter;
    }
  }
}

   

int main()
{

  string str = "8921340, 2341, 36754,  987123;,";
  cout << "do sortirovki: " << str << endl;
  SortWords(str);
  cout << "posle sortirovki:  " << str << endl;
  getch ();
  return 0;
}
Программы на заказ Delphi, Pascal, PHP.
ICQ:636-494-826
E-mail:serj0987@yandex.ru.

Последний раз редактировалось Serj0987; 19.01.2012 в 21:14.
Serj0987 вне форума Ответить с цитированием
Старый 19.01.2012, 21:21   #3
S@n4eeeeez
Пользователь
 
Регистрация: 17.01.2012
Сообщений: 15
По умолчанию

идеально)) спасибо большое
S@n4eeeeez вне форума Ответить с цитированием
Старый 19.01.2012, 21:26   #4
S@n4eeeeez
Пользователь
 
Регистрация: 17.01.2012
Сообщений: 15
По умолчанию

bool cmp( int a, int b ) {return a > b; } надо было только это добавить?
S@n4eeeeez вне форума Ответить с цитированием
Старый 19.01.2012, 21:28   #5
Serj0987
Пользователь
 
Регистрация: 18.04.2009
Сообщений: 44
По умолчанию

и добавить в вызов sort третий параметр
Программы на заказ Delphi, Pascal, PHP.
ICQ:636-494-826
E-mail:serj0987@yandex.ru.
Serj0987 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с сортировкой массива GaJIbI4 Помощь студентам 7 04.01.2012 02:05
проблема с Сортировкой в Excel! Romka12345 Microsoft Office Excel 2 30.11.2011 14:18
Проблема с STL сортировкой Skender Помощь студентам 4 01.11.2011 18:12
Проблема с сортировкой matbe14 Помощь студентам 0 29.09.2011 11:16
Проблема с сортировкой Anubys Помощь студентам 0 19.04.2011 17:10