miss_graffiti
Долгожитель
|
KMA, с динамическим в паскале замучаешься... это надо иметь представление о ссылках, как минимум. Пусть уж лучше считает, что сотрудников не больше 100.
|
Всего сообщений: 670 | Присоединился: сентябрь 2005 | Отправлено: 20 апр. 2006 18:50 | IP
|
|
KMA
Долгожитель
|
Ну да, что-то вроде этого... Просто все равно надо решать в общем виде... А ссылки ведь это не сложно... Однако я так и не понял для чего создается это массив
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 20 апр. 2006 19:36 | IP
|
|
miss_graffiti
Долгожитель
|
об указателях, в смысле. это че-то меня после лекции проглючило. если человеку сложно разобраться со статическими массивами, не надо его грузить динамическими... зачем создавал массив?... ну, с одной стороны, с ним быстрее и возможно удобнее работать, чем каждый раз считывать информацию из файла. с другой - может, так требуется по заданию.
|
Всего сообщений: 670 | Присоединился: сентябрь 2005 | Отправлено: 20 апр. 2006 23:59 | IP
|
|
KMA
Долгожитель
|
Просто он же использует типизированный файл, при помощи процедур seek (files, i); где files это имя файла, а i это номер элемента файла, то она устанавливает вот эта процедура устанавливает указатель на i элемент, при чем ведется отсчет с 0, и функции fileSize (files); которая возвращет значение количества элементов файла, можно обращаться с файлами, практчески как с массивом, толко вот записи больше... А так, отличий никаких нет... По поводу быстроты работы, честно скажу, что это спорный вопрос, для одной операции с массивом требуется вначале все считать, то есть потратить столько же операций, сколько и для простой сортировки этого файла, например... Однако всякое бывает... Если операций ДЕЙСТВИТЕЛЬНО МНОГО, то тогда действительно лучше использовать массив, при чем лучше ссылок, но можно и простой... Но это все теоретические вопросы, надо больше практики... Итак Abor что тебе еще не понятно в твоей задаче, как найти людей с одинаковыми номерами??? Или другое???
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 21 апр. 2006 11:48 | IP
|
|
Abror
Удален
|
Да мне не понятно как вывести людей с первыми двумя одинаковыми номерами?? Еше можно вопрос почему нельзя использовать расширение pas? И еше раз можно что такое seek?? Спасибо!
|
Всего сообщений: N/A | Присоединился: N/A | Отправлено: 21 апр. 2006 13:56 | IP
|
|
KMA
Долгожитель
|
Угу... Смотри у тебя есть файл... Так как он типизированный, то мы знаем по сколько места отводится под каждый элемент этого файла... Следовательно мы можем обращаться к этим элементам когда захотим, вот для этого и служит Seek (f, i); где f твоя файловая переменная, а i номер элемента (аналогию можно провести с массивом mas {i}, т. е. ты обращаешься к элементу массива с номером i. а файл соответственно, если его имя mas то будет выглядеть так seek (mas, i)). Расширение pas можно использоватЬ, можно использовать хоть jpg... Но если ты создаешь свою программу, которая работает с определенными типами данных, то лучше давать названия, которых нет, так как, например, по твоим записям получается то, что это файл может быть прочитан программой Pascal. Но прочитает то он неверно... Вот в чем вся делема, т. е. не надо создавать такое расширение файла, который заведомо будет читаться неверно... Это хорошо у тебя один файл, а если программа используется в принципе многократно??? Ерунда получается, ведь так... Сравниния я напишу, во всяком случае постараюсь доступно объяснить, но не сейчас, попозже... (Сообщение отредактировал KMA 21 апр. 2006 19:54)
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 21 апр. 2006 19:53 | IP
|
|
Abror
Удален
|
Про расширение я понял спасибо! А почему мы пишем seek(f,0); а не seek(f,i);?
|
Всего сообщений: N/A | Присоединился: N/A | Отправлено: 21 апр. 2006 21:18 | IP
|
|
KMA
Долгожитель
|
Мне было надо начинать с первого элемента файла, поэтому я и пишу с 0, а не с какого-то i... Т. е. я заменил твое ReSet на более умную операцию...
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 21 апр. 2006 22:29 | IP
|
|
KMA
Долгожитель
|
Abror, должно получиться что-то вроде этого по твоему решению, и созданному типу данных, это может и не самый лучший, при чем далеко не самый лучший, но все какой ни есть способ решения... seek (f, 0); for i:= 0 to fileSize (f)-1 do begin read (f, buf); mas{i}:=buf end; for i:=0 to file fileSize (f)-1 do begin flag:=true; for j:=i+1 to fileSize (f) do begin if (mas{i}.number[1]=mas[j].number [1]) and (mas{i}.number[2]=mas[j].number [2]) and (mas{j}.number<>'') then begin if flag then writeLn (mas{i}.name, ' ', mas{i}.surname) flag:=false; mas[j].number:=''; end; end; (Сообщение отредактировал KMA 22 апр. 2006 1:02)
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 22 апр. 2006 1:01 | IP
|
|
Guest
Новичок
|
Помогите, пожалуйста решить три задачи (или хотя бы одну), задачи тут_http://www.nexusgod.newmail.ru/z01.txt
|
Всего сообщений: Нет | Присоединился: Never | Отправлено: 23 апр. 2006 12:26 | IP
|
|
|