Help - Работа с файлами |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Help - Работа с файлами |
ursus |
1.06.2006 16:59
Сообщение
#1
|
Гость |
Помогите решить!!!!!!!!!!!, please!!!!
Для зачета 1 осталась: Число компонент файла f, компонентами которого являются целые числа кратно 10. Преписать компоненты файла f в файл g, изменяя порядок чисел в каждой десятке так, чтобы вначале шли отрицательные числа десятки, а за ними - неотрицательные |
Clon |
1.06.2006 19:12
Сообщение
#2
|
Новичок Группа: Пользователи Сообщений: 37 Пол: Мужской Репутация: 0 |
Ну вот примерно так, если, конечно, я правильно понял задание
program ubu(input,output); Сообщение отредактировано: volvo - 2.11.2006 19:09 |
volvo |
1.06.2006 19:35
Сообщение
#3
|
Гость |
Clon, у тебя жестоко нарушена структура программы. В частности, описания процедур внутри блока If ... Then ... Else
|
Clon |
1.06.2006 19:51
Сообщение
#4
|
Новичок Группа: Пользователи Сообщений: 37 Пол: Мужской Репутация: 0 |
Тьфу, сорри, выложил по ошибке не то. Сейчас поправил
|
Malice |
1.06.2006 20:45
Сообщение
#5
|
Профи Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: 20 |
Тьфу, сорри, выложил по ошибке не то. Сейчас поправил Все равно что-то не то, ни одного write(g,..) нет, как результат сохраняется ? Я думаю вот такой основной блок надо: nn:=0; reset(q); rewrite(w); Правда все положительные числа в обратном порядке встанут, ну и что, это не оговаривалось |
Clon |
1.06.2006 22:22
Сообщение
#6
|
Новичок Группа: Пользователи Сообщений: 37 Пол: Мужской Репутация: 0 |
Ну не знаю, у меня все работает. Сначала пишет содержимое файла, а потом его отсортированный вариант.
|
volvo |
1.06.2006 22:46
Сообщение
#7
|
Гость |
Clon, а ты на размер файла G после прогона твоей программы посмотреть не хочешь?
А задание было: Цитата Преписать компоненты файла f в файл g, изменяя порядок чисел в каждой десятке <...> |
Clon |
2.06.2006 16:27
Сообщение
#8
|
Новичок Группа: Пользователи Сообщений: 37 Пол: Мужской Репутация: 0 |
volvo Ой...
Ну тогда так program ubu(input,output); |
Unknown |
3.06.2006 15:45
Сообщение
#9
|
Гость |
Всем доброго времени суток!
У меня похожее задание: Заполнить файл f целыми числами, полученными с помощью генератора случайных чисел. Получить в файле g те компоненты файла f, которые являются четными. Но я чего-то вообще не догоняю, как работать с файлами... Мне всю прогу не надо, а хотя бы первую часть, т.е. заполнить файл f, даже не рандомно, а вручную, чтоб разобраться. Вот, что пишу я: Код var f:file of integer; a,i:integer; begin assign(f,'file.dat'); rewrite(f); repeat write(f,a); until eof(f) end. По идее, юзер вводит последовательность целых чисел до тех пор, пока не будет нажата комбинация Ctrl+Z и Enter, и вся эта последовательность сохраняется в файле с именем file.dat. Все верно? Или я что-то не так понял? Не работает... Имеет ли значение, работаю я в Турбо или в Борланд Паскале? |
volvo |
3.06.2006 16:15
Сообщение
#10
|
Гость |
Unknown, во-первых, где ты получаешь значение от пользователя? Нету этого, добавь...
А во-вторых, перед завершением программы не забудь сделать Close(f), чтобы все внесенные значения гарантированно записались в файл, иначе все записанное в буфер просто будет потеряно... |
Гость |
3.06.2006 16:30
Сообщение
#11
|
Гость |
volvo, сорри, close(f) я просто забыл написать, а, т.к. я - гость, редактировать посты не могу...
Проблема в том, что при прогоне программы она никак не взаимодействует с юзером(просто мигает экран и все): на строке write(f,a); ничего не происходит, а на строке until eof(f) условие считается выполненным, несмотря на то, что Ctrl+Z не нажаты... Еще раз повторю вопрос: имеет значение, пишу я на Турбо Паскале или на Борланд Паскале? Просто некоторые различия у них есть, может различия есть и в работе с файлами? |
Гость |
3.06.2006 16:33
Сообщение
#12
|
Гость |
volvo, а разве строка write(f,a); не отвечает за "получение значения от пользователя"? За что тогда отвечает эта строка?
|
volvo |
3.06.2006 17:04
Сообщение
#13
|
Гость |
Эта строка пишет содержимое переменной a в файл... А вот где ты запрашиваешь то значение, которое будет записываться?
Кстати, я сейчас еще кое-что заметил: eof(f) будет истиной сразу же, поэтому после записи первого значения цикл у тебя закончится... Для того, чтобы продолжать цикл до нажатия Ctrl+Z тебе надо сделать until not eof; { <--- С клавиатуры !!! } Возможно, в Турбо и Борланд Паскале и есть какие-то отличия, но здесь разницы абсолютно нет. |
Гость |
3.06.2006 17:15
Сообщение
#14
|
Гость |
Ага... Кажется, понял! Огромное спасибо!
|
Текстовая версия | 27.04.2024 8:52 |