![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
HalkW |
![]() ![]()
Сообщение
#1
|
|||
Группа: Пользователи Сообщений: 3 Пол: Мужской Реальное имя: Серёжа Репутация: ![]() ![]() ![]() |
Столкнулся с небольшой проблемой,а именно:
Задача: Создать текстовые файлы, содержащие один текстовую, а другой числовую информацию (количество слов и чисел может быть неодинаковым). Используя стек, создать другой текстовый файл, в котором числа и слова чередовались и были бы записаны в обратном порядке ("лишние" числа или слова были бы записаны в конец файла). Всё вроде бы хорошо,создаю файлы генераторами.Но вот вывод в третий файл меня смущает.Закодирован! Текст программы: uses crt; ---------------------------
И файлы: Сообщение отредактировано: volvo - 28.06.2009 18:47 Прикрепленные файлы ![]() ![]() |
|||
Krjuger |
![]()
Сообщение
#2
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 652 Пол: Мужской Реальное имя: Алексей Репутация: ![]() ![]() ![]() |
Во первых заключите ваш код в соответствующие теги.Во вторых,а вы вообще каким паскалем пользуетесь и паскалем ли?В третьих,процедура blockwrite описывается следующим образом:
Цитата Синтаксис procedure BlockWrite(var F: File; var Buffer; Count: Integer); procedure BlockWrite(var F: File; var Buffer; Count: Integer; var RecordCount: Integer); Описание Процедура BlockWrite записывает Count записей из Buffer в двоичный файл. Если переменная RecordCount указана в аргументах процедуры, то BlockWrite сохраняет в ней количество фактически добавленных записей. Если диск переполнен или возникла другая ошибка, RecordCount может быть меньше Count. Я думаю вам уже должно быть понятно,что это не совсем то, что вам нужно.потому что в результате вашей работы вы получите файл типа байл,а он уж никак не текстовый.поэтому при просмотре данного файла в обычном блокноте вы видите вместо желаемого результата всякие иероглифы. И вообще текстовый файл это файл типа text,а все остальное это уже типизированные файлы. Сообщение отредактировано: Krjuger - 28.06.2009 18:13 |
volvo |
![]()
Сообщение
#3
|
Гость ![]() |
Цитата Во вторых,а вы вообще каким паскалем пользуетесь и паскалем ли? Проблемы в чем? Код из первого сообщения (в отличие от приводимого обычно тобой, кстати) прекрасно компилируется любым Паскаль-компилятором, другое дело, что автор запутался в типах файлов, но это Паскаль в любом случае...Добавлено через 4 мин. Цитата поэтому при просмотре данного файла в обычном блокноте вы видите вместо желаемого результата всякие иероглифы. При записи кириллицы (или скажем псевдографики) в файл типа Text (и при просмотре этого файла блокнотом) ты тоже получишь вместо записанного всякие иероглифы, и что? Не веришь - спроси у пользователя sheka, он знает... |
HalkW |
![]()
Сообщение
#4
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Реальное имя: Серёжа Репутация: ![]() ![]() ![]() |
Ну так вот,Паскаль это 7.1.Ну всмысле версия,а вот с выводом проблема.И если записывать в файл с помощью генератора,информация так же получается закодированной-не обязательно текстовый формат.
|
Krjuger |
![]()
Сообщение
#5
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 652 Пол: Мужской Реальное имя: Алексей Репутация: ![]() ![]() ![]() |
Цитата При записи кириллицы (или скажем псевдографики) в файл типа Text (и при просмотре этого файла блокнотом) ты тоже получишь вместо записанного всякие иероглифы, и что? Не веришь - спроси у пользователя sheka Знаю,сталкивался,но тут то реч немного о другом все таки...И давай не будем в каджой теме переходить на личности?Оке?Я спрашиваю ту информацию,которая мне необходима,чтобы помоч...Если у тебя таких вопросов не возникает,это уже сугубо твое дело. Цитата в файл с помощью генератора Ты имееш в виду процедуру рандома при заполнении файла числами?. Вот смотри,ты заполнил свой стек,у тебя есть записи типа строки и типа челых чисел.Все на этом твоя работа с твоими входными файлами должна закончится.Дальше ты береш идеш в начало стека,сначала читаеш из строковой части пишеш строку потом число,ну или наоборот,затем просто переходиш к следующиму элементу по твоей ^.next.так будеш делать пока не дойдеш до последнего.Но тут появляется маленькая загвоздка количество строк и чисел разное.Я думаю необходимо сделать проверку,если данная часть пуста то ничего не пишем,если что то есть то пишем.Надеюсь ты понял,что я предложил...... Сообщение отредактировано: Krjuger - 28.06.2009 21:40 |
Lapp |
![]()
Сообщение
#6
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
HalkW, во-первых, тебе нужно все три файла объявить как text (ибо у тебя в условии они проходят как текстовые). Затем создай file1.txt и file2.txt в обычном блокноте, примерно так:
file1.txt Код aaaa bbbb cccc ddd eeeeee ffffff qwerty hjhjhjhjhj sdfg hjhj xcvb asd bnbnbnbb file2.txt Код 1 2 3 4 5 4 34 46 7 8 56 Читать из этих файлов операторами Read и ReadLn. Во-вторых, тебе потребуется процедура для чтения слова из файла (например, тут: Разбиение на слова. Все способы. ). Попробуй это все сделать и приходи снова, если не получится. Да, и не забывай закрывать файлы перед выходом оператором Close. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
HalkW |
![]()
Сообщение
#7
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Реальное имя: Серёжа Репутация: ![]() ![]() ![]() |
После замены на text,нам будут недоступны процедуры блоквраит ?Задача услажняется?)
|
Лопарь |
![]()
Сообщение
#8
|
Гость ![]() |
|
Krjuger |
![]()
Сообщение
#9
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 652 Пол: Мужской Реальное имя: Алексей Репутация: ![]() ![]() ![]() |
Извини конешно,но чем она усложняется?что ты используеш блокврайт для записи 1 значения из строки и 1 значения из чисел,что ты будеш использовать обычные write writeln,ты все равно приимуществ блокврайта не особо используеш,а если выразится точнее,то блокфрайт может сразу целые блоки копировать(отсуда и его название),а ты все равно этого не делаеш.
|
Lapp |
![]()
Сообщение
#10
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
ты все равно этого не делаеш. Если уж на то пошло, то правильнее будет сказать, что blockwrite использован совершенно неверно. Из целой переменной (два байта) записывался только один, а из строковой (256 байт) почему-то два байта..HalkW, прочти внимательно условие и пойми, что это задание - на отработку именно файлов типа text. А они существуют не для усложнения, а для упрощения. Работать с на уровне blockwrite намного сложнее. Добавлено через 5 мин. Из целой переменной (два байта) записывался только один, а из строковой (256 байт) почему-то два байта Упс сорри, недогляд, не посмотрел на открытие файла. Правильно так: из целой записывалось 128 байт, а из строковой таки 256. Но - и с длиной, и с хвостом..)) Короче, ответ все равно один: используй text, Write и WriteLn.-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
![]() ![]() |
![]() |
Текстовая версия | 18.06.2025 14:51 |