1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code]. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Телефонный справочник: добавляет/ удаляет контакты. Когда удаляет контакт пишет error всместо succes. Мозги пухнут. Помогите подкорректировать. Так выглядит после последней корректировки. procedure RemoveEntry(phoneEntry: Entry; var pb: PhoneBook; var ok: boolean);
unit phone; interface const MAX = 15; type Entry = record firstName: string[20]; lastName: string[30]; phoneNumber: string[15]; end; PhoneBook = ARRAY [1..MAX] of Entry;
procedure StoreNumber(phoneEntry: Entry; var pb: PhoneBook; var ok: boolean); procedure RemoveEntry(phoneEntry: Entry; var pb: PhoneBook; var ok: boolean); procedure DisplayPhoneBook(pb: PhoneBook); procedure NumberFor(pb: PhoneBook; firstName, lastName: string; var index: integer; var e: Entry); function NumberOfEntries(pb: PhoneBook): integer; function IsEmpty(a : Entry) : boolean; procedure InitArray(var pb: PhoneBook); implementation procedure InitArray(var pb: PhoneBook); var tmp: Entry; i: integer; begin tmp.firstName := ''; tmp.lastName := ''; tmp.phoneNumber := ''; for i := 1 to high(pb) do pb[i] := tmp; end;
function NumberOfEntries(pb: PhoneBook): integer; var nempty, i: integer; begin nempty := 0; for i:= 1 to high(pb) do begin if not IsEmpty(pb[i]) then nempty := nempty + 1; end; NumberOfEntries := nempty; end;
procedure NumberFor(pb: PhoneBook; firstName, lastName: string; var index: integer; var e: Entry); var i: integer; tmp: Entry; begin index := 0; tmp.firstName := ''; tmp.lastname := ''; tmp.phoneNumber := '';
for i := 1 to high(pb) do begin if (pb[i].firstname = firstname) and (pb[i].lastname = lastname) then begin tmp := pb[i]; index := i; end; end;
e := tmp; end;
procedure StoreNumber(phoneEntry: Entry; var pb: PhoneBook; var ok: boolean); var tmp: Entry; index: integer; tmpt: boolean; begin NumberFor(pb, phoneEntry.firstName, phoneEntry.lastname, index, tmp); tmpt := IsEmpty(tmp); if IsEmpty(tmp) then begin if NumberOfEntries(pb) < high(pb) then begin pb[NumberOfEntries(pb) + 1] := phoneEntry; ok := true; end else ok := false; end else begin pb[index] := phoneEntry; ok := true; end; end;
procedure RemoveEntry(phoneEntry: Entry; var pb: PhoneBook; var ok: boolean); var i, index: integer; tmp: Entry; tmpPB: PhoneBook; begin ok := false; tmp.firstName := ''; tmp.lastname := ''; tmp.phoneNumber := '';
for i := 1 to high(pb) do begin if (pb[i].firstName = phoneEntry.firstName) and (pb[i].lastName = phoneEntry.lastName) then begin pb[i] := tmp; ok := true; end; end;
InitArray(tmpPB);
index := 1; for i := 1 to high(pb) do begin if not IsEmpty(pb[i]) then begin tmpPB[index] := pb[i]; index := index + 1;
end; end;
pb := tmpPB; end;
function IsEmpty(a : Entry) : boolean; begin IsEmpty := (a.firstName = '') and (a.lastName = '') and (a.phoneNumber = ''); end;
procedure DisplayPhoneBook(pb: PhoneBook); var i: integer; begin WriteLn('PhoneBook:'); for i := 1 to high(pb) do if (not IsEmpty(pb[i])) then begin WriteLn('First name: ', pb[i].firstName); WriteLn('Last name: ', pb[i].lastName); WriteLn('Phone: ', pb[i].phoneNumber); end; end; end.
Сообщение отредактировано: bucket - 4.12.2009 1:42