![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Mapa |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 7 Пол: Женский Репутация: ![]() ![]() ![]() |
ПОМОГИТЕ исправить ошибку ПЛИЗ!
Код program z13; uses crt; type sp=^kniga; kniga= record fio: string[50]; adres:string; tel:longint; l:sp; end; var ff: file of kniga; bf: kniga; top,p,t,n:sp; fio,ffio:string[50]; adres,fadres:string; y,k:integer; tel,ftel:longint; r:real; flag:integer; {процедура создания файла} procedure pr(var top:sp); var p,t,n:sp; fio:string[50]; adres:string; tel:longint; begin assign(ff,'kniga.dat'); rewrite(ff); reset(ff); if flag=0 then begin top:=nil; flag:=1; end; clrscr; repeat write('BB fio - '); readln(bf.fio); if length(fio)<>0 then begin write(' BB adres - '); readln(bf.adres); write(' BB tel - '); readln(bf.tel); read(ff,bf); close(ff); new(n); n^.adres:=adres; n^.fio:=fio; n^.tel:=tel; n^.l:=nil; t:=top; p:=nil; while (t<>nil) and (fio>t^.fio) do begin p:=t; t:=t^.l; end; if p=nil then begin n^.l:=top; top:=n; end else begin n^.l:=p^.l; p^.l:=n; end; end; until length(fio)=0; t:=top; clrscr; writeln('spisok'); while t<>nil do begin write( t^.fio,' '); write( t^.adres,' '); writeln( t^.tel,' '); t:=t^.l; end; readln; end; {процедура удаления файла} procedure pdelete(var top:sp); var p,t,n:sp; ffio,fio:string[50]; fadres:string; ftel:longint; f:real; begin f:=0; t:=top; clrscr; writeln('кого удалить? (fio,adres,tel) '); readln( ffio); readln( fadres); readln( ftel); repeat if (t^.fio = ffio) and (t^.adres = fadres) and (t^.tel = ftel) then begin p^.l:=t^.l; dispose(t); write( ffio,' '); write( fadres,' '); write( ftel,' '); writeln( 'удален'); f:=1; end; t:=t^.l; until t=nil; if f=0 then begin writeln('в списке нет искомого человека'); readln; end; t:=top; writeln('spisok'); while t<>nil do begin write( t^.fio,' '); write( t^.adres,' '); writeln( t^.tel,' '); t:=t^.l; end; readln; end; {основная программа (меню)} begin assign(ff,'kniga.dat'); rewrite(ff); reset(ff); flag:=0; clrscr; repeat writeln('1 - добавить'); writeln('2 - удалить'); writeln('3 - выйти'); readln(y); clrscr; case y of 1: {writeln('1- процедура выполнена');} pr(top); 2: {writeln('2- процедура выполнена');} pdelete(top); end; if y>3 then writeln('ошибка ввода'); until y=3; end. Сообщение отредактировано: volvo - 1.06.2006 17:23 |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Программа компилируется прекрасно, стало быть "ошибка" - это неправильная работа? Без исходных данных и указания точного места ошибки вопрос останется без ответа.
Кому охота ползать по ТАКОЙ программе в поисках непонятно какой ошибки? |
Rolsik |
![]()
Сообщение
#3
|
![]() Группа: Пользователи Сообщений: 2 Пол: Мужской Реальное имя: Роланд Репутация: ![]() ![]() ![]() |
if length(fio)<>0 then Проблема явно в read(ff,bf);непонятен смысл этой строки, если было думано внести звпись в файл то писать надо было write(ff,bf) -------------------- Взмах крыла бабочки, может обернутся бурей в другом конце света
|
Mapa |
![]()
Сообщение
#4
|
Группа: Пользователи Сообщений: 7 Пол: Женский Репутация: ![]() ![]() ![]() |
проблема вот вчем:
нужно сделать программу Телефонный справочник 1-добавить (фамилию адрес телефон) при этом вывести список 2 -удалить (то же самое) добавление работает неправильно люди добрые помогите сделать чтоб работало (ибо до конца я не понимаю в этих указатель (каюсь)) |
Rolsik |
![]()
Сообщение
#5
|
![]() Группа: Пользователи Сообщений: 2 Пол: Мужской Реальное имя: Роланд Репутация: ![]() ![]() ![]() |
Если выложите полностью все условия задачи, то я попробую написать код заново... Т.к то, что выложено вами ранее написано так криво что проще переписать всё заново...
-------------------- Взмах крыла бабочки, может обернутся бурей в другом конце света
|
Lapp |
![]()
Сообщение
#6
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
люди добрые помогите сделать чтоб работало (ибо до конца я не понимаю в этих указатель (каюсь)) Я причесал твою прогу. Постарайся ее больше не лохматить. Стандартный сдвиг - 2 позиции. Зайди у себя в Паскалевской среде в Options - Environment - Editor. Там сними крестик с опции "Use tab characters". Поставь Tab size=2 и Indent size=2. program z13; Теперь по делу: у тебя файл открывался в нескольких местах, причем ты в каждом месте использовала и Reset, и Rewrite. Надо сделать это один раз - например, при входе в прогу. Это для начала ![]() -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Mapa |
![]()
Сообщение
#7
|
Группа: Пользователи Сообщений: 7 Пол: Женский Репутация: ![]() ![]() ![]() |
lapp посмотри пожалуйста
Заранее ОГРОМНОЕ СПАСИБО |
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
Mapa, ты знаешь, Rolsik в чем-то прав... Ту программу, которую ты привела, легче переписать заново, чем исправить... Ну, смотри, что происходит...
Возьмем, например, процедуру создания файла... Почему ты в этой же процедуре занимаешься добавлением элементов в список? Смысл в этом какой? Плюсы есть? Вот минус я тебе приведу: если тебе вдруг понадобится в другом месте программы внести в список ЕЩЕ один элемент, ты будешь переписывать тот же код... Дело все в том, что программы для работы с динамическими структурами должны строиться по принципу "разделяй и властвуй": добавить элемент в список - отдельная процедура, удалить элемент из списка - отдельная (НЕ привязываясь к файлам)... Распечатка списка - третья процедура... А потом из этих "кирпичиков" создавать программу... А не делать все одним "бетонным блоком". Уж очень этот блок неповоротливым получается... |
Lapp |
![]()
Сообщение
#9
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Mapa, я посмотрел, но диагноз неутешительный.. Действительно много ошибок и переделка нужна большая. Если ты сама писала этот код - продолжай задавать конкретные вопросы. Если нет - лучше с нуля по рекомендациям volvo и Rolsik'а. А может, и в любом случае лучше с нуля.. С блок-схемы.
-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
![]() ![]() |
![]() |
Текстовая версия | 19.06.2025 17:11 |