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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.11.2008, 13:50   #1
kossner
 
Регистрация: 13.11.2008
Сообщений: 8
Вопрос Pascal - сортировка массива(файла?)

С клавиатуры вводится имя входного и выходного файла. В файле хранится некоторое (возможно очень большое, не помещающееся в память) количество целых чисел. Необходимо создать файл с именем, введенным с клавиатуры, в котором хранятся числа из первоначального файла в отсортированном виде. Также необходимо выдавать на экран количество сравнений и присваиваний.

Пример входного файла:
-5
71
0
-565
12

Варианты способов сортировки:
сортировка по убыванию значения;
простое слияние(внешняя сортировка);

Формат файла приведен в виде БНФ

У меня была сначала мысль загнать все числа из файла в массив( но как определить его длину? неизвестно же , сколько в файле чисел), массив упорядочить, а потом записать числа из массива в новый файл. Но как-то это не получилось. Помогите мне пожалуйста))
kossner вне форума Ответить с цитированием
Старый 13.11.2008, 14:09   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,547
По умолчанию

В каком диапазоне могут лежать числа во входном файле? Т.е. какое возможно минимальное число, а какое максимальное?
Arigato вне форума Ответить с цитированием
Старый 13.11.2008, 14:16   #3
kossner
 
Регистрация: 13.11.2008
Сообщений: 8
По умолчанию

В пределах целых чисел в стандарте паскаля - от -32768 до 32767
kossner вне форума Ответить с цитированием
Старый 13.11.2008, 15:54   #4
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,547
По умолчанию

Задача решается на Паскале или можно на Делфи? На Делфи есть красивое и простое решение, но на Паскале оно не пройдет.
Arigato вне форума Ответить с цитированием
Старый 13.11.2008, 15:58   #5
kossner
 
Регистрация: 13.11.2008
Сообщений: 8
По умолчанию

Только Паскаль (турбоПаскаль 7.0) , к сожалению...
kossner вне форума Ответить с цитированием
Старый 13.11.2008, 16:48   #6
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,547
По умолчанию

Тогда придётся проходить входной файл несколько раз и каждый раз выбирать минимальное значение, большее того, что было выбрано в прошлый раз. Считать количество вхождений этого значения в файл и записывать его в выходной файл в том количестве, в котором оно встречалось во входном файле. Другого варианта в голову не приходит.
При желании можно провести оптимизацию, уменьшим количество проходов входного файла, но свести все к 1 проходу я не знаю как.
На Делфи я бы реализовал такую задачу в виде линейной сортировки, но на Паскале не хватит памяти под данные.
Arigato вне форума Ответить с цитированием
Старый 13.11.2008, 17:31   #7
kossner
 
Регистрация: 13.11.2008
Сообщений: 8
По умолчанию

Можно чуть подробнее? а то я не очень-то с паскалем дружу.. И еще - как надо открывать / создавать файл с заданным с клавиатуры именем?
kossner вне форума Ответить с цитированием
Старый 13.11.2008, 17:37   #8
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,547
По умолчанию

Это можно прочитать в любом учебнике по Паскалю. Подробно идею я уже изложил.
Arigato вне форума Ответить с цитированием
Старый 13.11.2008, 17:52   #9
katletta
 
Регистрация: 24.10.2008
Сообщений: 5
По умолчанию

Присоединяюсь к просьбе kossner'a - расскажите поподробнее, у меня похожая задачка

Или, если рассказать про саму программу сложно или лениво, просветите , что это за способ сортировки - *простое слияние(внешняя сортировка)*?

Последний раз редактировалось SuperVisor; 05.12.2008 в 15:35. Причина: Есть такая замечательная кнопка - "правка" )))
katletta вне форума Ответить с цитированием
Старый 14.11.2008, 21:28   #10
kossner
 
Регистрация: 13.11.2008
Сообщений: 8
По умолчанию

Скажите пожалуйста, как мне обойти вот это - В файле хранится некоторое (возможно очень большое, не помещающееся в память) количество целых чисел.
kossner вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка массива ManU Помощь студентам 1 21.09.2008 10:41
Сортировка массива С/С++ Dagget Помощь студентам 1 16.07.2008 12:18
Сортировка массива Kraven Общие вопросы Delphi 3 25.06.2008 18:22
Сортировка массива vitalik007 Общие вопросы Delphi 2 22.09.2007 20:04
Сортировка массива MuRdErDoLL Помощь студентам 2 20.12.2006 00:58