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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Denis123456789
43 / 43 / 17
Регистрация: 02.06.2013
Сообщений: 180
#1

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

23.06.2013, 00:49. Просмотров 680. Ответов 19
Метки нет (Все метки)

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

Переписать данные файла input.txt в файл output, отсортировав их по возрастанию средней оценки методом выбора - C++
В файле input.txt содержатся сведения о группе студентов в формате: номер группы; запись о каждом студенте группы содержит следующие...

Пустые INPUT и OUTPUT - C++
Задача: Напечатать текст из файла, подчёркивая (ставя минусы в соответствующих позициях следующей строки) все входящие в него заглавные...

Сформировать два файла из некоторых чисел. Записать в третий файл положительные элементы второго файла и отрицательные элементы первого - C++
Сформировать два файла из некоторых чисел. Записать в третий файл положительные элементы второго файла и отрицательные элементы первого.

Прочитать из файла массив, отсортировать, результат вывести на экран. - C++
Разработать приложение, выполняющее следующие функции. Прочитать из файла массив строк символов. Отсортировать массив в лексикографическом...

Отсортировать по возрастанию и вывести на экран сперва чётные элементы вектора, а затем нечётные - C++
Привет. Вообщем, стоит такая задача: "Вывести на экран сначала отсортированные по возрастанию элементы массива Y(25) стоящие на чётных...

Массив считать из файла, отсортировать по возрастанию и записать в новый файл - C++
Создаем текстовый файл из num строК, каждая строка содержит трехразрядное число сгенерированное, далее функция читает содержимое файла в...

Программа получает входные данные из файла input.txt. Файл содержит строки, содержащие математические действия - C++
Помогите написать программу Программа получает входные данные из файла input.txt. Файл содержит строки, содержащие математические...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Maxtron
48 / 48 / 2
Регистрация: 17.11.2012
Сообщений: 227
Записей в блоге: 1
23.06.2013, 00:56     Отсортировать элементы файла input и вывести их в файл output #2
Как вариант считать данные из файла в массив, отсортировать его и записать в файл.
ValeryS
Модератор
6542 / 5008 / 461
Регистрация: 14.02.2011
Сообщений: 16,653
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
Модератор
Эксперт CЭксперт С++
12980 / 7292 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 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
Модератор
6542 / 5008 / 461
Регистрация: 14.02.2011
Сообщений: 16,653
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
Модератор
6542 / 5008 / 461
Регистрация: 14.02.2011
Сообщений: 16,653
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
Модератор
Эксперт CЭксперт С++
6997 / 4168 / 594
Регистрация: 29.11.2010
Сообщений: 11,047
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
Модератор
Эксперт CЭксперт С++
6997 / 4168 / 594
Регистрация: 29.11.2010
Сообщений: 11,047
23.06.2013, 02:09     Отсортировать элементы файла input и вывести их в файл output #14
@Denis123456789, так как данные надо где-то хранить в виде множества (при сортировке необходимо знать все элементы, а не только соседние), а массивов и контейнеров использовать нельзя, единственное место, хранящее всю эту информацию, остается исходный файл. И с помощью него и множественных считываний с начала до конца, нерационально делаете свою работу.
Croessmah
Модератор
Эксперт CЭксперт С++
12980 / 7292 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 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
Модератор
Эксперт CЭксперт С++
6997 / 4168 / 594
Регистрация: 29.11.2010
Сообщений: 11,047
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
Модератор
Эксперт CЭксперт С++
6997 / 4168 / 594
Регистрация: 29.11.2010
Сообщений: 11,047
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++
Помогите, пожалуйста В файле записано не более 100 чисел. Отсортировать их по возрастанию суммы цифр и записать в другой файл....

Дан одномерный массив из n (n≤104) элементов, осортировать его по возрастанию методом выбора через input.txt, output.txt - C++
Дан одномерный массив из n (n≤104) элементов a1,a2,…,an.( |ai|≤2×109). Сортировать по возрастанию методом выбора через input.txt, output.txt

как сделать в MS VS 2010 express output не в консоль в output windows - C++
сабж заранее спасибо

вывести из файла 1 и 6 элементы - C++
у меня есть файл со следующими данными. 5 5 4 3 66 778 993 102 1143

Не могу понять почему в файл OUTPUT.TXT ничего не записывается - C++
#include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; int main() { int n,i; ifstream in(&quot;INPUT.TXT&quot;); in &gt;&gt;...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru