Форум программистов, компьютерный форум CyberForum.ru

Отсортировать элементы файла input и вывести их в файл output - C++

Восстановить пароль Регистрация
 
Denis123456789
43 / 43 / 17
Регистрация: 02.06.2013
Сообщений: 180
23.06.2013, 00:49     Отсортировать элементы файла input и вывести их в файл output #1
Здравствуйте. Помогите решить. Есть файл input, в котором элементы располагаются столбцом. Нужно отсортировать элементы файла input и вывести их в файл output.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.06.2013, 00:49     Отсортировать элементы файла input и вывести их в файл output
Посмотрите здесь:

C++ В файле input.txt содержатся сведения о группе студентов. переписать данные файла в файл output.txt, отсортировав их по возрастанию
C++ Переписать данные файла input.txt в output.txt, отсортировав их
C++ Переписать данные файла input.txt в output.txt, отсортировав их
Если в строке есть хоть один ноль - вывести в файл output.txt "YES", иначе вывести "NO"; C++
Исправить программу, чтоб считывала текст из файла Input.txt и выводит в файл Output.txt C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Maxtron
 Аватар для Maxtron
47 / 47 / 2
Регистрация: 17.11.2012
Сообщений: 224
Записей в блоге: 1
23.06.2013, 00:56     Отсортировать элементы файла input и вывести их в файл output #2
Как вариант считать данные из файла в массив, отсортировать его и записать в файл.
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,065
23.06.2013, 00:57     Отсортировать элементы файла input и вывести их в файл output #3
Цитата Сообщение от Denis123456789 Посмотреть сообщение
Есть файл input, в котором элементы располагаются столбцом.
сам то понял?
в файле нет ни столбцов ни строчек одни нолики и единички
Цитата Сообщение от Denis123456789 Посмотреть сообщение
Помогите решить.
в чем заключается помощь?
Написать за тебя?
Denis123456789
43 / 43 / 17
Регистрация: 02.06.2013
Сообщений: 180
23.06.2013, 01:03  [ТС]     Отсортировать элементы файла input и вывести их в файл output #4
@ValeryS, файл текстовый, а не бинарный. Помощь заключается в том, чтобы объяснить в общих чертах алгоритм. Кстати, массивы использовать нельзя.

Добавлено через 1 минуту
@Maxtron, можно, только вот массивы по заданию нельзя использовать. Ну с массивами вообще несложно было бы
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,920
Записей в блоге: 2
Завершенные тесты: 1
23.06.2013, 01:10     Отсортировать элементы файла input и вывести их в файл output #5
Цитата Сообщение от Denis123456789 Посмотреть сообщение
Кстати, массивы использовать нельзя.
Ну тогда список
C++
1
2
3
4
5
6
7
8
9
10
11
#include <fstream>
#include <list>
#include <algorithm>
#include <iterator>
int main(){
    std::ifstream inFile("input.txt");
    std::ofstream outFile("output.txt");
    std::list< int > lst((std::istream_iterator< int >(inFile)),std::istream_iterator< int >());
    lst.sort();
    std::copy(lst.begin(),lst.end(),std::ostream_iterator< int >(outFile,"\n"));
}
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,065
23.06.2013, 01:12     Отсортировать элементы файла input и вывести их в файл output #6
Цитата Сообщение от Denis123456789 Посмотреть сообщение
ValeryS, файл текстовый, а не бинарный.
и что?
думаешь на диске буковки появятся?
Цитата Сообщение от Denis123456789 Посмотреть сообщение
Кстати, массивы использовать нельзя.
раз файл текстовый то используй строки
Цитата Сообщение от Denis123456789 Посмотреть сообщение
Помощь заключается в том, чтобы объяснить в общих чертах алгоритм.
для этого неплохо бы знать формат файла ввода и файла вывода
да и
Цитата Сообщение от Denis123456789 Посмотреть сообщение
Нужно отсортировать элементы файла
ни о чем не говорить
как отсортировать ?
По алфавиту ?по длине слов?
Denis123456789
43 / 43 / 17
Регистрация: 02.06.2013
Сообщений: 180
23.06.2013, 01:28  [ТС]     Отсортировать элементы файла input и вывести их в файл output #7
@Croessmah, работает, но я думаю списки тоже использовать нельзя

Добавлено через 6 минут
Цитата Сообщение от ValeryS Посмотреть сообщение
и что?
думаешь на диске буковки появятся?
На диске нет,а в самом файле появятся, только цифры, а не буквы
Цитата Сообщение от ValeryS Посмотреть сообщение
раз файл текстовый то используй строки
строки-это массив типа char
Цитата Сообщение от ValeryS Посмотреть сообщение
для этого неплохо бы знать формат файла ввода и файла вывода
да и
Отсортировать по возрастанию значения элементов надо
Пример файлов:
input:
4
2
1
3
output:
1
2
3
4
Croessmah
23.06.2013, 01:30
  #8

Не по теме:

Цитата Сообщение от Denis123456789 Посмотреть сообщение
а в самом файле появятся
смешно кто Вам такое сказал?

Denis123456789
43 / 43 / 17
Регистрация: 02.06.2013
Сообщений: 180
23.06.2013, 01:34  [ТС]     Отсортировать элементы файла input и вывести их в файл output #9
Цитата Сообщение от Croessmah Посмотреть сообщение
смешно кто Вам такое сказал?
Я не говорю сейчас о том, как этот файл будет храниться на жёстком диске компьютера.
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,065
23.06.2013, 01:41     Отсортировать элементы файла input и вывести их в файл output #10
Цитата Сообщение от Denis123456789 Посмотреть сообщение
строки-это массив типа char
отстал ты от жизни уже давно есть тип данных std::string

короче принцип такой
создаешь файл output на чтение и на запись
копируешь все из входного в выходной
потом выходной сортируешь
допустим пузырьком
считываешь в одну переменную первое значение(запись) во вторую второе
сравниваешь их
если первая меньше второй ничего не делаешь
считываешь в первую переменную второе значение во вторую третье
теперь допустим во второй меньше значение чем в первой
тогда записываешь значение второй переменной на вторую запись а первой на третью
придется сильно использовать функцию fseek
http://devoid.com.ua/functions-about...ons/fseek.html
Denis123456789
43 / 43 / 17
Регистрация: 02.06.2013
Сообщений: 180
23.06.2013, 01:53  [ТС]     Отсортировать элементы файла input и вывести их в файл output #11
Цитата Сообщение от ValeryS Посмотреть сообщение
отстал ты от жизни уже давно есть тип данных std::string
Не думаю, что этот класс можно по условию использовать
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
23.06.2013, 01:59     Отсортировать элементы файла input и вывести их в файл output #12
Цитата Сообщение от Denis123456789 Посмотреть сообщение
Не думаю, что этот класс можно по условию использовать
компилятором хоть можно пользоваться?

Вы предлагаете без массивов и контейнеров отсортировать элементы? Тогда множество раз проходите по исходному файлу, каждый раз записывая в результирующий минимальный элемент(ы)
Denis123456789
43 / 43 / 17
Регистрация: 02.06.2013
Сообщений: 180
23.06.2013, 02:06  [ТС]     Отсортировать элементы файла input и вывести их в файл output #13
Цитата Сообщение от MrGluck Посмотреть сообщение
компилятором хоть можно пользоваться?
не думаю, самому надо в машинный язык переводить)))
Цитата Сообщение от MrGluck Посмотреть сообщение
Тогда множество раз проходите по исходному файлу, каждый раз записывая в результирующий минимальный элемент(ы)
Да вот сам думая как так может быть
Цитата Сообщение от MrGluck Посмотреть сообщение
Тогда множество раз проходите по исходному файлу, каждый раз записывая в результирующий минимальный элемент(ы)
Тоже так думал сделать, но всё же код какой-то нерациональный тогда будет
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
23.06.2013, 02:09     Отсортировать элементы файла input и вывести их в файл output #14
@Denis123456789, так как данные надо где-то хранить в виде множества (при сортировке необходимо знать все элементы, а не только соседние), а массивов и контейнеров использовать нельзя, единственное место, хранящее всю эту информацию, остается исходный файл. И с помощью него и множественных считываний с начала до конца, нерационально делаете свою работу.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,920
Записей в блоге: 2
Завершенные тесты: 1
23.06.2013, 02:20     Отсортировать элементы файла input и вывести их в файл output #15
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <fstream>
#include <algorithm>
#include <iterator>
template <typename T,typename Iterator>
std::pair<T,size_t> getMin(Iterator begin,Iterator end){
    std::pair<T, size_t> temp(0,0);
    if(begin!=end){
        temp.first=*(begin++);
        temp.second=1;
    }
    for(;begin!=end;++begin)
        if(*begin<temp.first){
            temp.first=*begin;
            temp.second=1;
        }else{
            if(*begin==temp.first)
                ++temp.second;
        }
    return temp;
}
 
template <typename T,typename Iterator>
std::pair<T,size_t> getMinNext(Iterator begin,Iterator end,T minPrev){
    std::pair<T, size_t> temp(minPrev,0);
    for(;begin!=end;++begin)
        if(*begin>minPrev){
            temp.first=*(begin++);
            temp.second=1;
            break;
        }
    for(;begin!=end;++begin)
        if(*begin<temp.first && *begin>minPrev){
            temp.first=*begin;
            temp.second=1;
        }else{
            if(*begin==temp.first)
                ++temp.second;
        }
    return temp;
}
 
 
int main(){
    std::ifstream inFile("input.txt");
    std::ofstream outFile("output.txt");
    std::pair<int,size_t> tempPrev=getMin<int, std::istream_iterator< int >>((std::istream_iterator< int >(inFile)),std::istream_iterator< int >());
    for(size_t i=0;i<tempPrev.second;++i)
        outFile<<tempPrev.first<<"\n";
    inFile.close();
    while(tempPrev.second){
        inFile.open("input.txt");
        tempPrev=getMinNext((std::istream_iterator< int >(inFile)),std::istream_iterator< int >(),tempPrev.first);
        for(size_t i=0;i<tempPrev.second;++i)
            outFile<<tempPrev.first<<"\n";
        inFile.close();
    }
}
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
23.06.2013, 02:26     Отсортировать элементы файла input и вывести их в файл output #16
Сейчас скажут, никаких pair, никаких stl алгоритмов.

А если pair, то почему бы не tuple?
Croessmah
23.06.2013, 02:30
  #17

Не по теме:

Цитата Сообщение от MrGluck Посмотреть сообщение
Сейчас скажут, никаких pair, никаких stl алгоритмов.
никаких потоков и size_t
Цитата Сообщение от MrGluck Посмотреть сообщение
А если pair, то почему бы не tuple?
я выбрал пару, переделайте с кортежем если хотите. Суть от этого все равно не поменяется- как был Г-алгоритм, так и останется

MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
23.06.2013, 02:33     Отсортировать элементы файла input и вывести их в файл output #18
Цитата Сообщение от Croessmah Посмотреть сообщение
никаких потоков и size_t
нет, в последнее время я слышу: а как это сделать без std:: ?

Фишка с кортежем это как раз в хранении всех слов в нем "а-ля массив") а не "слово - количество". Кстати про второе я тоже думал, просто решил, что наверняка и это нельзя, а значит дело-дрянь и нечего свое время убивать на это т.к. все равно
Цитата Сообщение от Croessmah Посмотреть сообщение
Г-алгоритм
Croessmah
23.06.2013, 02:35
  #19

Не по теме:

Цитата Сообщение от MrGluck Посмотреть сообщение
а как это сделать без std::
первый раз слышу

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.06.2013, 02:37     Отсортировать элементы файла input и вывести их в файл output
Еще ссылки по теме:

C++ Переписать данные файла input.txt в файл output.txt, отсортировать их в алфавитном порядке по фамилии
C++ Найти минимальное и максимальное числа из input.txt и записать его в файл output.txt
Переписать данные файла input.txt в файл output, отсортировав их по возрастанию средней оценки методом выбора C++

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

Или воспользуйтесь поиском по форуму:
MrGluck
23.06.2013, 02:37     Отсортировать элементы файла input и вывести их в файл output
  #20
Yandex
Объявления
23.06.2013, 02:37     Отсортировать элементы файла input и вывести их в файл output
Ответ Создать тему
Опции темы

Текущее время: 09:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru