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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2014, 16:52   #1
Cryddok
 
Регистрация: 20.05.2014
Сообщений: 3
Сообщение Сортировка строк по алфавиту

Здравствуйте! Пытался написать программу для сортировки строк,взятых из текстового файла, методом пузырька,но почему- то программа работает только с одной строкой при чем берет ее где-то из середины файла.
Код:
#include <iostream>
#include <string>
#include <conio.h>
#include <fstream>
 using namespace std;
int main()
{
    char strings[1102][61], str[61];
    ifstream inp("temp.txt");
    if (!inp)
    {
        cout << "Error opening file temp.txt!" << endl;
        system("pause");
        return 0;
    }
    
    ofstream out("output.txt");
    if (!out)
    {
        cout << "Error creation file output.txt!" << endl;
        system("pause");
        return 0;
    }
    int count = 0, i, j;
    while(inp.getline(str,60));
	{strcpy(strings[count++], str);
	}
    /* Выводим считаные строки */
    for(i = 0; i < count; i++)
        cout<<strings[i]<<'\n';
    /* Сортировка методом пузырька */
    for(i = 1; i < count; i++)
        for(j = 0; j < count - i; j++)
            if(strcmp(strings[j], strings[j+1]) > 0){
                strcpy(str, strings[j]);
                strcpy(strings[j], strings[j+1]);
                strcpy(strings[j+1], str);
            }
    /* Выводим отсортированные строки */
    for(i = 0; i < count; i++)
        out<<strings[i]<<'\n';
    system("pause");
}
Cryddok вне форума Ответить с цитированием
Старый 27.05.2014, 19:56   #2
casekey
Пользователь
 
Регистрация: 03.11.2010
Сообщений: 95
По умолчанию

Если уж пишете на с++, то пользуйтесь его сильными сторонами:
Код:
  ifstream file("test.txt");
  
  typedef std::vector<std::string> StrVector;
  StrVector strings;
  std::string currentStr;
  
  while(!file.eof())
  {
    file >> currentStr;
    strings.push_back(currentStr);
  }

  std::sort(strings.begin(), strings.end());

  StrVector::iterator it, begin, end;
  begin = strings.begin();
  end = strings.end();

  for (it = begin; it!=end; it++)
    std::cout << (*it) << "\n";
casekey вне форума Ответить с цитированием
Старый 27.05.2014, 20:25   #3
Cryddok
 
Регистрация: 20.05.2014
Сообщений: 3
По умолчанию

Цитата:
Сообщение от casekey Посмотреть сообщение
Если уж пишете на с++, то пользуйтесь его сильными сторонами:
спасибо) а можно пояснить, пожалуйста, а то я еще таким не пользовался никогда
Cryddok вне форума Ответить с цитированием
Старый 27.05.2014, 20:58   #4
casekey
Пользователь
 
Регистрация: 03.11.2010
Сообщений: 95
По умолчанию

вместо сишных строк а-ля char[XXL] переходите на использование std::string.
С массивов на вектора, мапы, и другие STL контейнеры.

Я считаю, что разумнее использовать их, при разработке на С++.

По std::string, std::vector, да и много чему еще очень хорошая информация уже есть в доках
casekey вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка массива по длине строк и по алфавиту CrOsP Общие вопросы Delphi 6 07.09.2013 12:07
Сортировка строк по алфавиту yugik Общие вопросы C/C++ 4 21.05.2010 14:01
Сортировка строк по алфавиту Tsvetochek Microsoft Office Excel 2 10.05.2010 21:43
сортировка списка строк по алфавиту -GT- Общие вопросы C/C++ 0 26.11.2009 20:27
Сортировка строк по алфавиту в структуре с помощью указателей Anarki Общие вопросы C/C++ 2 23.10.2009 19:36