|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - Pascal. Запись из массива в файлы. |
|
|
Разное - Pascal. Запись из массива в файлы.
|
Новый участник Сообщения: 26 |
Профиль | Отправить PM | Цитировать
Здравствуйте!
Решаю следующую задачу: Даны символьные файлы F и G. Определить, совпадают ли компоненты файла F с компонентами файла G. Если нет, то получить номер первого не совпадающего компонента. В общем, до написания проверки основного условия задачи я еще не дошла. На данном этапе реализовала заполнение массива случайными символами. Теперь хочу чтобы этот массив записался в файлы F и G. Но подключить правильно процедуру у меня не получается. Интересно то, что если записывать код по заполнению массива без процедуры, сразу в теле основной программы, то тогда массив символов успешно записывается в оба файла. Значит я что-то не правильно процедуру подключаю. Подскажите, пожалуйста, что нужно поменять. Думаю, что к реализации основной идеи задачи я смогу приступить только после того, как получиться записать символьный массив в файлы А иначе не с чем работать Преподаватель сказала, что нужно, чтобы присутствовала хотя бы одна процедура или функция. А лучше всего, что бы было и то и другое. Думаю, что это было бы и удобно, использовать процедуру Вот код программы, который я написала на данном этапе. program f_2a; {Даны символьные файлы F и G. Определить, совпадают ли компоненты файла F с компонентами файла G. Если нет, то получить номер первого не совпадающего компонента.} uses crt; const m=10; simvolij : array [0..38] of char = ('a','b','c','d','e','f','g','h','i','j', 'k','l','m','n','o','p','q','r','s','t', 'u','v','w','x','y','z','0','1','2','3', '4','5','6','7','8','9','+','-','*'); type file1 = file of char; file2 = file of char; var f1 : file1; f2 : file2; procedure input_massiv; var i : byte; SimMas : array [1..m] of char; begin randomize; for i:=1 to m do begin SimMas[i]:=simvolij[random(38)]; end; end; BEGIN clrscr; assign(f1,'F.txt'); rewrite(f1); write(f1,input_massiv); assign(f2,'G.txt'); rewrite(f2); write(f2,input_massiv); close(f1); close(f2); END. |
|
Отправлено: 13:05, 23-01-2012 |
Новый участник Сообщения: 26
|
Профиль | Отправить PM | Цитировать Только не подумайте, что я прошу написать за меня код. Просто прошу подсказать.
А то вдруг найдутся те, кто подумает, что я халяву ищу |
Отправлено: 13:31, 23-01-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Разный Сообщения: 1294
|
Профиль | Отправить PM | Цитировать процедуры ничего не возвращают
в прошлой теме про матрицы был пример процедуры, посмотрите |
Отправлено: 17:21, 23-01-2012 | #3 |
Старожил Сообщения: 280
|
Профиль | Отправить PM | Цитировать Цитата lenaustkz84:
procedure HochuMassivVFajl(mas:array of char; filename:string); var f: file of char; i:integer; begin assign(f,filename); rewrite(f); for i:=1 to length(mas) do write(f,mas[i]); close(f); end; типа SimMas : array [1..m] of char; procedure input_massiv(mas); var i : byte; begin randomize; for i:=1 to length(mas) do begin mas[i]:=simvolij[random(38)]; end; end; потом забить, выйти замуж, нарожать детей и учиться, как варить борщ, вместо Pascal'я. |
|
------- Отправлено: 17:27, 23-01-2012 | #4 |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать RostVY, лучше не привыкать передавать массивы в качестве параметра функции/процедуры
lenaustkz84, по хорошему массивы в данном случае - излишнее усложнение - можно сразу писать в файл генерируемые символы |
|
Отправлено: 09:42, 26-01-2012 | #5 |
Разный Сообщения: 1294
|
Профиль | Отправить PM | Цитировать Цитата Busla:
|
|
Отправлено: 11:02, 26-01-2012 | #6 |
Старожил Сообщения: 280
|
Профиль | Отправить PM | Цитировать Цитата Busla:
|
|
------- Отправлено: 12:01, 26-01-2012 | #7 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Busla:
Надо относиться аккуратно, т.к. пока массив маленький и вызовов мало, то все в порядке - скорости чтения/записи позволяют. А если возникнет множественный вызов (в цикле) или рекурсивный вызов, то возникнет слишком большая избыточная нагрузка на память. И в какой-то момент ее просто не хватит. Поэтому аккуратно! Если необходимо работать с копией массива - то пересылаем весь (скорее многопоточные приложения). Если мы его все равно вернем в качестве результата, то работаем с указателем на массив. |
|
------- Отправлено: 13:11, 26-01-2012 | #8 |
Старожил Сообщения: 280
|
Профиль | Отправить PM | Цитировать Цитата lxa85:
здесь вот, например, http://www.freepascal.org/docs-html/ref/refsu59.html написано "In the latter cases the procedure receives a pointer to the actual array. In the former case, it receives a copy of the array." Так что, как минимум, это зависит от версии компилятора или от его настроек и копируется массив в более старых версиях. Кстати, вы какую версию имели в виду? |
|
------- Отправлено: 13:52, 26-01-2012 | #9 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать Цитата RostVY:
Цитата RostVY:
Поэтому если я передаю массив, то я передаю массив. Если указатель, то указатель. ПК - это бестолковый калькулятор. У него нет никаких других функций и назначений, кроме выполнения команд пользователя. Да, сейчас инженеры ведущих компиляторов прикладывают массу сил, чтобы оптимизировать убогий код. Поэтому может быть, после оптимизации, будет передаваться указатель вместо массива. Но строго говоря - это не так. |
||
------- Отправлено: 15:29, 26-01-2012 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - Всё о TURBO PASCAL (обсуждение, помощь в написание программ, ошибки, Pascal ABC) | Loading | Программирование и базы данных | 41 | 20-05-2015 15:28 | |
2008 R2 - Распределение массива | twinzzz75 | Windows Server 2008/2008 R2 | 10 | 19-01-2012 17:00 | |
[решено] Отключенная учетная запись и запись с истекшим сроком действия. В чем разница? | CaminoDeFlores | Microsoft Windows NT/2000/2003 | 4 | 01-06-2009 09:30 | |
Создание динамического массива на Pascal-е | Skynet | Программирование и базы данных | 3 | 09-10-2004 18:05 | |
PHP. Запись массива в файл. | Hemp | Вебмастеру | 3 | 08-10-2004 20:50 |
|