Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2011, 20:59   #1
Руслан555
Пользователь
 
Аватар для Руслан555
 
Регистрация: 13.12.2011
Сообщений: 11
По умолчанию Надо написать функцию: удаление записи по имени

В общем программа выдает на экран таблицу которая содержит в себе имя,должность и зарпалту, надо добавить функцию , чтобы она удаляла запись из таблицы по имени.
Помогите пожалуйста.Ребят очень срочно нужно.

Последний раз редактировалось Руслан555; 19.12.2011 в 21:29.
Руслан555 вне форума Ответить с цитированием
Старый 19.12.2011, 21:39   #2
Руслан555
Пользователь
 
Аватар для Руслан555
 
Регистрация: 13.12.2011
Сообщений: 11
По умолчанию

Можете просто код написать удаления записи

Последний раз редактировалось Руслан555; 19.12.2011 в 22:20.
Руслан555 вне форума Ответить с цитированием
Старый 20.12.2011, 03:35   #3
Adyvan
Пользователь
 
Регистрация: 15.01.2011
Сообщений: 24
По умолчанию

Ну если у тебя записано все структурой
Код:
type
    re=record
     name:string;
     dolzh:string;
     ZP:longint;
    end;
а она записана как массив
Код:
a:array[1..n]of re;
то можно найти номер элемента так (str => это строка имени, кот. надо удалить):
Код:
for t:=1 to n do
 if(a[t].name = str)
  break;
после выполнения последнего кода в переменной t содержится номер подходящего элемента.

Ну а тут уже решай сам как удалять будешь изменять старый массив или создавать новый...
Adyvan вне форума Ответить с цитированием
Старый 20.12.2011, 03:51   #4
Adyvan
Пользователь
 
Регистрация: 15.01.2011
Сообщений: 24
По умолчанию

Код:
for t:=1 to n do
 if(a[t].name = str)
  break;
Код:
for q:=t to n-1 do
  a[q]:=a[q+1]; {только я не помню если можно присвоить запись записи}
а теперь из массива размером n удален элемент подходящий условию(a[t].name = str) и последний элемент массива (a[n]) равен предпоследнему (a[n-1])

это решение правильно если ты используешь массив. Но я боюсь, что тебе надо использовать динамические переменные

Последний раз редактировалось Adyvan; 20.12.2011 в 03:54.
Adyvan вне форума Ответить с цитированием
Старый 20.12.2011, 20:26   #5
Руслан555
Пользователь
 
Аватар для Руслан555
 
Регистрация: 13.12.2011
Сообщений: 11
По умолчанию

Мне надо чтобы удаление происходило по имени это можно сделать во так как на снимке, только не получается код написать.
Изображения
Тип файла: jpg Снимок.jpg (21.2 Кб, 125 просмотров)
Руслан555 вне форума Ответить с цитированием
Старый 20.12.2011, 21:25   #6
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Из изображения видно, что это работа с динамическими структурами: списком.

Adyvan
Цитата:
for q:=t to n-1 do
a[q]:=a[q+1]; {только я не помню если можно присвоить запись записи}
Однотипные записи можно присваивать друг другу.
Поскольку исходного кода нет, то могу предложить вариант:
Код:
 {поиск записи по ключу key}
function find(beg: pnode; key: word; var p,pp: pnode): boolean;
{beg - указатель на начало списка
  key - то, что ищем. Тут надо описывать как string
  p - указатель на найденную запись
  pp - указатель на предыдущую запись}
begin
  p:=beg;
  while p <> nil do begin
     if p^.d = key then begin
        find := true; exit end;
     pp := p;
     p := p^.p;
   end;
   find := false;
end;
{удаление записи, найденной функцией find()}
prosedure del(var beg : pnode; key word);
{ beg и key - см. функцию find()}
var p : pnode;
pp: pnode;
begin
   if not find(beg, key,p,pp) then begin
      writeln('Удаление не выполнено'); exit end;
   else
       pp^.p := p^.p; {перенос указателя}
   dispose(p); {освобождение памяти}
end;
Думаешь, что это поможет ?
PS: Код срисован из книги: Т.А. Павловская, Программирование на ЯВУ. Паскаль.
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление части имени файла при сохранении BDA2011 Microsoft Office Excel 4 25.01.2012 12:28
SOS Надо написать код в С++ ( есть образец, надо переделать просто!) Беата Общие вопросы C/C++ 9 08.12.2010 22:13
Удаление файла любого расширения\имени zhekanvidia Общие вопросы C/C++ 3 01.06.2010 04:17
удаление имени группы ячеяк cub Microsoft Office Excel 2 05.08.2009 18:11
задача под windows,помогите написать.Надо написать на Borland C++Builder 6. eddddii Помощь студентам 9 23.05.2008 17:04