0 / 0 / 0
Регистрация: 17.05.2013
Сообщений: 62
|
||||||
1 | ||||||
Создание и корректировка файла, содержащего сведения об абитуриентах07.10.2016, 22:41. Показов 3255. Ответов 27
Метки нет (Все метки)
Код 322 что означает, кто знает?
Добавлено через 21 минуту
0
|
07.10.2016, 22:41 | |
Ответы с готовыми решениями:
27
Создание и корректировка файла, содержащего сведения о студентах. Создание и корректировка файла, содержащего сведения о книгах, находящихся в библиотеке Создание текстового файла, содержащего информацию об абитуриентах, поступающих на указанную специальность Создание файла, содержащего сведения о машинах на складе, и работа с ним |
621 / 941 / 150
Регистрация: 10.08.2015
Сообщений: 5,018
|
|
09.10.2016, 23:57 | 21 |
застал, они кстати до сих пор кое где работают, артефакты из эпохи дос, там может это было и оправдано...
Тело процедуры должно обрамляться парой begin end; А у вас код посыпался... begin улетел вверх и как это вообще может работать непонятно по корректировке... суть корректировки в последовательном чтении файла и поиске нужной фамилии: - если фамилия найдена, то спрашиваем у пользователя новые данные, - возвращаемся в начало записи и пишем в файл измененный вариант Добавлено через 20 минут Вы давно общались с женщинами? Женщины не воспринимают вопросы типа: "привет, как дела, как настроение, чем занимаешься?" Однако по отдельности заданные те же вопросы не вызовут проблем в разговоре. У программистов все еще хуже... Поэтому запросы в командной строке должны быть понятны, лаконичны, предлагать варианты ответа по умолчанию, если это возможно. В этом плане раздельное чтение данных гораздо более гибкое, чем если слепить ввод в один оператор. А то что оно равноценно с точки зрения программы абсолютно не важно.
0
|
Модератор
|
||||||
10.10.2016, 00:03 | 22 | |||||
Про алгоритм открытия файла -- слишком сложно.
Прежде всего, в многозадачной среде что-то проверять перед действием бессмысленно -- на момент проверки все могло быть в порядке, но на момент совершения действия уже возникло препятствие и действие все равно завершится ошибкой. Поэтому более предпочтительной стратегией является не проверить предварительно, а выполнить действие и проверить его результат. Перечень кодов возврата известен: http://www.freepascal.org/docs... esult.html Безопасно пересоздавать файл по коду 2 -- файл не найден.
Добавлено через 5 минут Про пельмени и женщин -- вкусовщина. Но ваш вариант с раздельным вводом ещё и неэргономичен -- оператору намного проще вбить 3 оценки через пробел и нажать ввод, чем вводить по одной оценке. Тем не менее, ReadLn(a,b,c); где переменные не строковые позволяет вводить хоть по одному, хоть по вводу после каждого. Признайтесь уже себе самому, вы просто не знаете как работает стандартный паскалевский ввод, в чем только что расписались. Отнеситесь к вопросу с любовью и восполните пробелы.
0
|
621 / 941 / 150
Регистрация: 10.08.2015
Сообщений: 5,018
|
|
10.10.2016, 00:51 | 23 |
вот и приехали... а кто вам сказал что нужно вводить не строки? это здесь нужно ввести три числа и все хорошо...
так что не оператору, а это ваши личные предпочтения... когда понадобится вводить несколько десятков значений в строчку, вспомните мои слова, когда запутаетесь и свои про эргономику... насчет открытия файла, если не забывать подавлять реакции на ошибки и восстанавливать ее, то вариант с постпроверкой конечно предпочтительнее... предпочтительнее было бы организовать файловый ввод/вывод по человечески в самом ядре паскаля... я более чем уверен, что это всего лишь чей-то каприз с этими assign reset rewrite... для сравнения в С все намного проще и именно так как вы написали, но без танцев с бубном.
0
|
Модератор
|
|
10.10.2016, 08:57 | 24 |
vlisp,
Про не-строки в отношении оценок сказано в ответе #6 Создание и корректировка файла, содержащего сведения об абитуриентах А про разницу Read и ReadLn все же перечитайте и разберитесь, не упустите, что ReadLn игнорирует часть вводимых данных. В С хватает своих заморочек, но здесь мы их обсуждать не будем, для этого на форуме есть специальные тематические разделы. Как в С интерфейс с FILE не единственный, так и в FPC есть другие средства для файлового ввода/вывода. Но поскольку ТС их не использует, обсуждать их в этой теме было бы офтопиком. К сожалению, предмет обсуждения по теме далеко не исчерпан, у ТС пока не получилось написать то, что можно сдать с удовлетворительной оценкой (имеют место грубые логические ошибки). Обсуждать стоит именно это.
0
|
0 / 0 / 0
Регистрация: 17.05.2013
Сообщений: 62
|
|
10.10.2016, 11:04 [ТС] | 25 |
Кстати, вставила fileMode:=2; и все пошло без выкручиваний, и перезапись возможна, выложу конечный результат, когда все будет готово.
0
|
Модератор
|
||||||
10.10.2016, 11:50 | 26 | |||||
FileMode по умолчанию и так 2, если его не трогать:
http://www.freepascal.org/docs... emode.html
0
|
0 / 0 / 0
Регистрация: 17.05.2013
Сообщений: 62
|
||||||
10.10.2016, 12:41 [ТС] | 27 | |||||
Оказалось, нет, я его не трогала, но дозапись и перезапись не шла, а поставила FileMode:=2; и все пошло. У меня Borland Pascal, если это имеет значение. И похоже у многих ошибки вывода записи связаны с этим.
Вот конечный результат:
0
|
Модератор
|
||||||||||||||||||||||||||||||||||||||||||||||
10.10.2016, 16:24 | 28 | |||||||||||||||||||||||||||||||||||||||||||||
Чтобы не перепечатывать программу руками на форум, возьмите какой-либо редактор, который умеет открывать/сохранять текст в различных кодировках, например, AkelPad, или EmEditor, или еще какой-нибудь.
Откройте свою программу в нем, указав кодировку "OEM 866" или "Кириллица DOS" или что-то наподобие. Теперь можете свободно скопировать текст программы как есть. Можете даже править программу в этом редакторе, если это покажется удобнее. То, что сейчас помещено на форум, содержит синтаксические ошибки, препятствующие компиляции: 1 - ‘ и ’ вместо апострофов, 2 - begin перед function Vvod, 3 - использование неописанных переменных (regv, us), 4 - использование неописанного поля (q.matem). Это спишем на опечатки, все равно подобное компилятор просто не пропустит. Форматирование, конечно, штука необязательная (машина железная ей все равно), но сильно облегчающая чтение кода человеку. Хорошо бы взять за правило писать код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете :-) А вот это уже не только про форматирование. Основная программа 1. Использование глобальных переменных должно быть осмысленным, иначе это может быть дополнительно причиной ошибок. Желательно не описывать переменные раньше, чем они должны быть видны в последующем коде. 2. Для Кликните здесь для просмотра всего текста
есть более удобное решение. Достаточно заметить, что usl используется только чтобы отклонить выбор кроме 1, 2, 3, и ни для чего больше. Почему бы просто не проконтролировать ввод, получив отдельно ввод, отдельно логику исполнения: Кликните здесь для просмотра всего текста
Процедура Vivod 1. Reset(f) -- в том числе устанавливает указатель файла на начало, после него не нужен Seek(f,0). В программе закрытие файла присутствует только в самом конце, поэтому на самом деле нужды в Reset(f) нет, достаточно просто переместить указатель в начало по Seek(f,0). 2. Нет нужды делать f2 глобальной, она не используется нигде, кроме этой процедуры. Единственным оправданием глобальности могло быть использование в начале основной программы
4. Присутствуют 2 дублирующие строки WriteLn: экран/файл. Неплохо бы привести вывод в порядок, выше уже приводил пример форматного вывода табличкой:
Кликните здесь для просмотра всего текста
Кликните здесь для просмотра всего текста
Процедура Vvod 1. Писать в файл запись с fio='***' -- не очень хорошая идея, размер файла в записях можно получить по FileSize(f), состояние конца файла -- по EoF(f). 2. Программа без файла все равно не работает, почему бы не открыть его на старте по Reset. Это не помешает в Vvod сделать при необходимости Rewrite(f). Процедура Korr 1. eof(f)=true -- масло масляное, EoF(f) уже имеет одно из значений False/True:
0
|
10.10.2016, 16:24 | |
10.10.2016, 16:24 | |
Помогаю со студенческими работами здесь
28
Создание и обработка типизированного файла, содержащего сведения о месте жительства студента Редактирование текстового файла, содержащего сведения о студентах Обработка текстового файла, содержащего сведения о студентах Разработать программу формирования файла, содержащего сведения о школьниках Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |