Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
UnityMan
1 / 2 / 1
Регистрация: 17.12.2015
Сообщений: 75
#1

Сортировка слов текстового файла путём слияния данных из файла и заданного внутреннего массива - C++

27.12.2015, 00:49. Просмотров 514. Ответов 7
Метки нет (Все метки)

Здравствуйте.

Имеется задание, которое я ни в коем случае не прошу за меня сделать. Мне непонятно пару моментов, которые бы мне хотелось пояснить с вашей помощью.

Цитата Сообщение от Задание
Написать программу, которая осуществляет сортировку слов текстового файла (одно слово в одной строке) путём слияния данных из файла и заданного внутреннего массива.

1. Исходный текстовый файл генерируется случайным образом: количество слов в нём случайно (до 10000) и сами слова сгенерированы при помощи случайных чисел.

2. Сортировка осуществляется следующим образом: даны два вспомогательных файл и некоторый внутренний массив. Сначала первая порция данных из исходного файла читается в память, и оттуда упорядоченно заносится во внутренний массив, для чего используется метод простых или бинарных вставок.

3. Далее из массива упорядоченные данные переписываются во вспомогательный файл. Затем следующая порция данных из исходного файла упорядоченно заносится в массив, после чего происходит слияние данных из внутренней структуры и ранее заполненного вспомогательного файла. Результат слияния заносится в другой вспомогательный файл. Так продолжается до тех пор, пока все данные не будут отсортированы.
Мне непонятно следующее:

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

2. "Сначала первая порция данных из исходного файла " - сколько в себя включает "порция"? На моё усмотрение?

3. И самое главное: каким образом происходит сортировка? Алфавитно относительно других слов/внутри каждого слова/алфавитно относительно других слов + внутри каждого слова?

К сожалению, мне негде и не у кого уточнить данные вопросы, а делать надо, как обычно, в темпе вальса, поэтому хотел бы спросить как поняли эти моменты вы.


Спасибо за внимание!

Добавлено через 10 минут
123
http://www.cyberforum.ru/cpp-beginners/thread2247232.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2015, 00:49
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Сортировка слов текстового файла путём слияния данных из файла и заданного внутреннего массива (C++):

Сортировка массива из текстового файла по возрастанию
Сортировка массива из текстового файла по возрастанию ...

Преобразование текстового файла в двоичный и чтение исходных данных из двоичного файла.
#include<iostream> #include<fstream> #include<locale.h> #include<iomanip>...

Как создать массив строк, считывая данные из файла (сортировка данных из файла)
Доброго времени суток мне нужно отсортировать по алфавиту слова , которые...

Добавить в конец первого текстового файла содержимое второго текстового файла
Даны два текстовых файла. Добавить в конец первого файла содержимое второго...

Сортировка текстового файла
Крошка сын к отцу пришел... а точнее дочка- первокурсница, с просьбой - Папа,...

7
Melvil
48 / 47 / 26
Регистрация: 20.05.2015
Сообщений: 251
27.12.2015, 01:10 #2
Цитата Сообщение от UnityMan Посмотреть сообщение
1. "слова сгенерированы при помощи случайных чисел" - как это понять? Знаю, что можно завести алфавитный массив, а потом случайно перемешивать оттуда значения. Это имелось в виду?
2. "Сначала первая порция данных из исходного файла " - сколько в себя включает "порция"? На моё усмотрение?
3. И самое главное: каким образом происходит сортировка? Алфавитно относительно других слов/внутри каждого слова/алфавитно относительно других слов + внутри каждого слова?
1. Скорее всего берется большой символьный массив чаров и каждый элемент заполняется случайной буквой Примерно вот так:
C++
1
2
3
char mas[10000];
    for (int i = 0; i < 10000; i++)
        mas[i] = rand() % 27 + 97;
Но не забывайте ещё пробелы учесть между словами.
2. В данном случае думаю, не принципиально, можете брать хотя бы по одному слову.
3. В данном случае, я думаю, что по алфавиту, почитайте подробнее по поводу быстрой сортировки QuickSort.
1
UnityMan
1 / 2 / 1
Регистрация: 17.12.2015
Сообщений: 75
27.12.2015, 01:17  [ТС] #3
Melvil,
Цитата Сообщение от Melvil Посмотреть сообщение
3. В данном случае, я думаю, что по алфавиту, почитайте подробнее по поводу быстрой сортировки QuickSort.
В задании про быструю сортировку ни слова не сказано. Указано лишь
Цитата Сообщение от UnityMan Посмотреть сообщение
упорядоченно заносится во внутренний массив, для чего используется метод простых или бинарных вставок.
И похоже, что как раз-таки само слово сортируется, т.е. сортировка внутри слова.
0
Melvil
48 / 47 / 26
Регистрация: 20.05.2015
Сообщений: 251
27.12.2015, 01:23 #4
Цитата Сообщение от UnityMan Посмотреть сообщение
И похоже, что как раз-таки само слово сортируется, т.е. сортировка внутри слова.
Проглядел про вставки, но тем не менее, представьте себе, у вас есть слова, записанные в хаотичном порядке, а вы возьмете и начнете сортировать их изнутри, в итоге ни одного слова не разобрать. В независимости от того, какой тип сортировки вы используете, результат по сути должен быть один и тот же. Так что - алфавит.
0
UnityMan
1 / 2 / 1
Регистрация: 17.12.2015
Сообщений: 75
27.12.2015, 01:36  [ТС] #5
Melvil, но если Вы ещё разок внимательно вчитаетесь в задание, то увидите, что там происходит слияние из отсортированных порций, но ни слова не сказано, что надо эти порции сортировать друг относительно друга в алфавитном порядке. Тогда какой смысл проводить алфавитную сортировку в пределах одной порции?
Цитата Сообщение от Melvil Посмотреть сообщение
представьте себе, у вас есть слова, записанные в хаотичном порядке, а вы возьмете и начнете сортировать их изнутри, в итоге ни одного слова не разобрать
Представляю:
Цитата Сообщение от Порция 1 (изначальная)
bacdefd
debf
bdae
Цитата Сообщение от Порция 1 (остортированная)
abcddef
bdef
abde
Что не так?
0
Melvil
48 / 47 / 26
Регистрация: 20.05.2015
Сообщений: 251
27.12.2015, 01:40 #6
Цитата Сообщение от UnityMan Посмотреть сообщение
Что не так?
Были у вас слова:
Vanya
Petya
Dima
А стали:
aanVy
aePty
amiD
Но не отрицаю, возможно, вы и правы.
0
UnityMan
1 / 2 / 1
Регистрация: 17.12.2015
Сообщений: 75
27.12.2015, 02:04  [ТС] #7
Melvil,
Цитата Сообщение от Melvil Посмотреть сообщение
Были у вас слова:
Vanya
Petya
Dima
Маловероятно, что радномизированные слова будут представлены чем-то что-то типа имен или других существующих слов.

Цитата Сообщение от UnityMan Посмотреть сообщение
происходит слияние из отсортированных порций, но ни слова не сказано, что надо эти порции сортировать друг относительно друга в алфавитном порядке. Тогда какой смысл проводить алфавитную сортировку в пределах одной порции?
А как тогда быть с этим?
Просто согласно Вашей логике должно получится что-то типа такого:
Порция 1 (изначальная)
nkoaer
bukg
ased
Порция 1 (осортированная)
ased
bukg
nkoaer
Порция 2 (изначальная)
boop
arttng
nolskf
Порция 2 (остортированная)
arttng
boop
nolskf
Результирующая порция
ased
bukg
nkoaer
arttng
boop
nolskf
Я прав?
0
Melvil
48 / 47 / 26
Регистрация: 20.05.2015
Сообщений: 251
27.12.2015, 11:30 #8
Цитата Сообщение от UnityMan Посмотреть сообщение
Я прав?
Посмотрел ещё раз, получается, что всё зависит от того какую порцию вы возьмете. Если рассчитывать, что порция больше одного слова, т.е. несколько, то вы правы, да.
0
27.12.2015, 11:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.12.2015, 11:30
Привет! Вот еще темы с решениями:

Исключить из заданного текстового файла символы-разделители
Нужно исключить из заданного текстового файла символы-разделители (пробел,...

Функция считывания слов с текстового файла
Доброго времени суток!) Задача такова: Считать из текстового файла слова в...

Копирование нечетных слов из текстового файла
Доброго времени суток! У меня есть очень простая программа на плюсах. Копирует...

С текстового файла прочитать строку слов
1.С текстового файла прочитать строку слов. помогите решить очень нужно буду...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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