Работа с файлами, внешними модулями., Помогите в создании программы или хотя бы подскажите алгоритм работы: |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.
Работа с файлами, внешними модулями., Помогите в создании программы или хотя бы подскажите алгоритм работы: |
Света |
Сообщение
#1
|
Группа: Пользователи Сообщений: 5 Пол: Женский Реальное имя: Света Репутация: 0 |
Задание: В файле хранится набор целых чисел. Найти первые три наибольшие по абсолютной величине числа н после каждого из них вставить нулевой элемент. Результат сохранить в новый файл. содержимое исходного и конечного файлов распечатать на экране. программа поиска наибольших чисел должна находиться в отдельном модуле. Использование массивов недопустимо.
|
volvo |
Сообщение
#2
|
Гость |
Вот набросок:
var После этого в переменных m1, m2, m3 будут 3 наибольших по абс. величине значения. Второй проход по файлу, опять читаем число X, и сравниваем его с каждым из максимумов. Что-то вот такого типа: if (m1 <> -maxint) and (m1 = X) then beginДальше попробуй самостоятельно. |
amega |
Сообщение
#3
|
? Группа: Пользователи Сообщений: 283 Пол: Мужской Репутация: 4 |
Хотел бы добавить что после прохода по файлу если он типизирован то незабыть поставить файловый указатель на начало файла после первогоо прохода по файлу там где искали максимальные значения.
|
Lapp |
Сообщение
#4
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
volvo, так она вставит нули после каждого числа, равного m1, m2 и m3, тогда как в задании речь идет только о первых трех. Нужно еще затирать их при вставке нулей. Типа вот так:
if (m1 <> -maxint) and (m1 = X) then begin 2 amega: а зачем переставлять файловый указатель? -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
volvo |
Сообщение
#5
|
Гость |
Цитата так она вставит нули после каждого числа, равного m1, m2 и m3, тогда как в задании речь идет только о первых трех. В задании - неоднозначность: <6, 7, 8, 3, 4, 5, 8, 7, 4> После каких элементов ставить нули? Только после 8, 8 и 7 (они же - три максимальных)? Либо после 6, 7, 8, 8, 7? (они же - три максимальных, но обязательно РАЗНЫХ, и добавлять нули после всех вхождений)? Если по первому варианту (я сначала его и рассматривал) - то и в первом фрагменте условия должны быть нестрогими: if abs(X) >= m1 then begin+ твое исправление, если по второму - то так, как во втором посте... Лично я склоняюсь ко второму варианту, иначе: <8, 8, 8, 8, 8, 8, 1, 2, 3, 4> - странно как-то, после первых трех восьмерок - нули будут, а после следующих трех (числа-то все же максимальны по модулю) уже нет... Ждем автора с уточнением... |
amega |
Сообщение
#6
|
? Группа: Пользователи Сообщений: 283 Пол: Мужской Репутация: 4 |
ну как мы прошли по файлу нашли 3 максимальних значения потом же нада в новый файл переписать только вставлять нули, но а считывать то с первого нада а файловый указатель то остался в конце файла онож выдаст ошыбку. Эт ели второй раз открыть в режиме ресет тогда не нада
|
Lapp |
Сообщение
#7
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
В задании - неоднозначность Мне кажется, неоднозначности нет. Ключевым словом в задании является слово "первые". Второе толкование лишает это слово смысла - что, я полагаю, недопустимо при толковании задания.-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Текстовая версия | 26.04.2024 0:23 |