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

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

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

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

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

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

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

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

Исправить программу, чтоб считывала текст из файла Input.txt и выводит в файл Output.txt - C++
Даны координаты центра и радиус R окружности, координаты точки. Найти точки пересечения касательных с окружностью input.txt 1 1 1 2 2...

В файле input.txt содержатся сведения о группе студентов. переписать данные файла в файл output.txt, отсортировав их по возрастанию - C++
Добрый вечер!!! Я - новичок по работе с С++, помогите, пожалуйста, написать программу на этом языке. В файле input.txt содержатся сведения...

Найти минимальное и максимальное числа из input.txt и записать его в файл output.txt - C++
Еще раз приветствую дорогие программисты.Надеюсь на вашу помощь. Найти минимальное и максимальное числа из input.txt и записать его в...

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

19
Maxtron
50 / 50 / 3
Регистрация: 17.11.2012
Сообщений: 228
Записей в блоге: 1
23.06.2013, 00:56 #2
Как вариант считать данные из файла в массив, отсортировать его и записать в файл.
0
ValeryS
Модератор
6654 / 5063 / 470
Регистрация: 14.02.2011
Сообщений: 16,934
23.06.2013, 00:57 #3
Цитата Сообщение от Denis123456789 Посмотреть сообщение
Есть файл input, в котором элементы располагаются столбцом.
сам то понял?
в файле нет ни столбцов ни строчек одни нолики и единички
Цитата Сообщение от Denis123456789 Посмотреть сообщение
Помогите решить.
в чем заключается помощь?
Написать за тебя?
0
Denis123456789
43 / 43 / 17
Регистрация: 02.06.2013
Сообщений: 181
23.06.2013, 01:03  [ТС] #4
@ValeryS, файл текстовый, а не бинарный. Помощь заключается в том, чтобы объяснить в общих чертах алгоритм. Кстати, массивы использовать нельзя.

Добавлено через 1 минуту
@Maxtron, можно, только вот массивы по заданию нельзя использовать. Ну с массивами вообще несложно было бы
0
Croessmah
Эксперт CЭксперт С++
13424 / 7578 / 856
Регистрация: 27.09.2012
Сообщений: 18,666
Записей в блоге: 3
Завершенные тесты: 1
23.06.2013, 01:10 #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"));
}
0
ValeryS
Модератор
6654 / 5063 / 470
Регистрация: 14.02.2011
Сообщений: 16,934
23.06.2013, 01:12 #6
Цитата Сообщение от Denis123456789 Посмотреть сообщение
ValeryS, файл текстовый, а не бинарный.
и что?
думаешь на диске буковки появятся?
Цитата Сообщение от Denis123456789 Посмотреть сообщение
Кстати, массивы использовать нельзя.
раз файл текстовый то используй строки
Цитата Сообщение от Denis123456789 Посмотреть сообщение
Помощь заключается в том, чтобы объяснить в общих чертах алгоритм.
для этого неплохо бы знать формат файла ввода и файла вывода
да и
Цитата Сообщение от Denis123456789 Посмотреть сообщение
Нужно отсортировать элементы файла
ни о чем не говорить
как отсортировать ?
По алфавиту ?по длине слов?
0
Denis123456789
43 / 43 / 17
Регистрация: 02.06.2013
Сообщений: 181
23.06.2013, 01:28  [ТС] #7
@Croessmah, работает, но я думаю списки тоже использовать нельзя

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

Не по теме:

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

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

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

Вы предлагаете без массивов и контейнеров отсортировать элементы? Тогда множество раз проходите по исходному файлу, каждый раз записывая в результирующий минимальный элемент(ы)
0
Denis123456789
43 / 43 / 17
Регистрация: 02.06.2013
Сообщений: 181
23.06.2013, 02:06  [ТС] #13
Цитата Сообщение от MrGluck Посмотреть сообщение
компилятором хоть можно пользоваться?
не думаю, самому надо в машинный язык переводить)))
Цитата Сообщение от MrGluck Посмотреть сообщение
Тогда множество раз проходите по исходному файлу, каждый раз записывая в результирующий минимальный элемент(ы)
Да вот сам думая как так может быть
Цитата Сообщение от MrGluck Посмотреть сообщение
Тогда множество раз проходите по исходному файлу, каждый раз записывая в результирующий минимальный элемент(ы)
Тоже так думал сделать, но всё же код какой-то нерациональный тогда будет
0
MrGluck
Модератор
Эксперт CЭксперт С++
7279 / 4440 / 650
Регистрация: 29.11.2010
Сообщений: 12,022
23.06.2013, 02:09 #14
@Denis123456789, так как данные надо где-то хранить в виде множества (при сортировке необходимо знать все элементы, а не только соседние), а массивов и контейнеров использовать нельзя, единственное место, хранящее всю эту информацию, остается исходный файл. И с помощью него и множественных считываний с начала до конца, нерационально делаете свою работу.
0
Croessmah
Эксперт CЭксперт С++
13424 / 7578 / 856
Регистрация: 27.09.2012
Сообщений: 18,666
Записей в блоге: 3
Завершенные тесты: 1
23.06.2013, 02:20 #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();
    }
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.06.2013, 02:20
Привет! Вот еще темы с ответами:

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

Отсортировать все слова из текстового файла по алфавиту и вывести результат в новый файл - C++
Есть файл, в котором набрано некоторый текст. Написать программу, которая может отсортировать все слова из него по алфавиту и вывести...

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

Если в строке есть хоть один ноль - вывести в файл output.txt "YES", иначе вывести "NO"; - C++
Задача. В файле input.txt содержится неприрывная строка нулей и единиц. Если в строке есть хоть один ноль - вывести в файл output.txt...


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

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

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