Форум: Форум C++Разное
Новые темы: 00
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Отсортировать массив строк

Сообщения:  [1-7] 

 
 автор: alex19921992   (28.01.2007 в 13:45)   письмо автору
 
   для: in_mysql   (23.01.2007 в 22:26)
 

Это популярный алгоритм сортировки в лексикографическом порядке.
Можно сортировать "пузырьком":
есто эн строк, тогда проходишься по массиву эн квадрат раз и сравниваешь 2 соседние строки: энную и эн плюс первую таким образом:
идешь по строкам одновременно и сравниваешь номера символов на этих местах:
если первый больше второго, то меняем строки местами и сравниваем дальше следующие 2 строки, если меньше то ничего не меняем просто дальше идем, а если равны то сравниваем следующие 2 символа.

  Ответить  
 
 автор: rty   (26.01.2007 в 12:34)   письмо автору
 
   для: in_mysql   (23.01.2007 в 22:26)
 

используй функцию strcmp( str1, str2)

  Ответить  
 
 автор: cheops   (24.01.2007 в 01:17)   письмо автору
 
   для: in_mysql   (23.01.2007 в 22:26)
 

А можно действительно использовать алгоритм sort()
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;

int main()
{
  typedef vector<string> StringVector;
  StringVector coll;

  try
  {
    char input[80];
    string str;
    while(true)
    {
      cout << "Введите строку ";
      fgets(input, 80, stdin);
      // Если введена пустая строка - выходим из цикла
      if(strlen(input) <= 1) break;
      // Удаляем завершающий перевод строки
      input[strlen(input) - 1] = '\0';
      // Присваиваем строке str значение input
      str = input;
      coll.push_back(str);
    }

    // Сортируем коллекцию
    sort(coll.begin(), coll.end());

    StringVector::const_iterator pos;
    for(pos = coll.begin(); pos != coll.end(); ++pos)
    {
      cout << *pos << "\n";
    }
  }
  catch(bad_alloc)
  {
    cout << "Не удалось выделить память под коллекцию\n";
  }

  return 0;
}

  Ответить  
 
 автор: cheops   (24.01.2007 в 01:16)   письмо автору
 
   для: in_mysql   (23.01.2007 в 22:26)
 

Можно использовать какой-нибудь ассоциативный контейнер, например, мультимножество, которое автоматически сортирует свои элементы
#include <iostream>
#include <set>
#include <string>
using namespace std;

int main()
{
  // Отображение
  typedef multiset<string> StringMultiset;
  StringMultiset coll;

  try
  {
    char input[80];
    string str;
    while(true)
    {
      cout << "Введите строку ";
      fgets(input, 80, stdin);
      // Если введена пустая строка - выходим из цикла
      if(strlen(input) <= 1) break;
      // Удаляем завершающий перевод строки
      input[strlen(input) - 1] = '\0';
      // Присваиваем строке str значение input
      str = input;
      coll.insert(str);
    }
    
    StringMultiset::const_iterator pos;
    for(pos = coll.begin(); pos != coll.end(); ++pos)
    {
      cout << *pos << "\n";
    }
  }
  catch(bad_alloc)
  {
    cout << "Не удалось выделить память под коллекцию\n";
  }

  return 0;
}

  Ответить  
 
 автор: in_mysql   (24.01.2007 в 00:41)
 
   для: SuperSonic   (24.01.2007 в 00:36)
 

скупо... а поподробнее?

  Ответить  
 
 автор: SuperSonic   (24.01.2007 в 00:36)
 
   для: in_mysql   (23.01.2007 в 22:26)
 

sort

  Ответить  
 
 автор: in_mysql   (23.01.2007 в 22:26)
 
 

Пусть имеется массив строк - например, содержимое файла - нужно отсортировать его по алфавиту - вопрос как?

  Ответить  

Сообщения:  [1-7] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования