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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.10.2010, 17:43   #1
Dima-91
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 198
Вопрос Структура данных

Задание: Разместить больных с учетом их пола по палатам так, чтобы больные с одинаковым диагнозом располагались по возможности вместе. Считать все палаты 4-х местными. Количество палат в больнице равно N.

Использую StringGrid, для размещения ФИО , номера палаты , диагноза и пола. Не могу понять как сделать обработчик, чтобы в номер палаты занасило по 4 человека,одинакового пола и если есть то и с одинаковыми болезнями.

Если несложно подскажите,какие нужны операторы, что бы сравнить пол,а также код который позволяет записывать в номер палаты 4 человека.
Dima-91 вне форума Ответить с цитированием
Старый 21.10.2010, 18:19   #2
Dima-91
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 198
По умолчанию

Код:
//Описание структуры записи:
    Spisok = record
    FIO : string[20];
    NP : integer;
    Diagnoz : string[30];
    Pol : string[10];
    end;


var
  Form1: TForm1;
  V : Spisok;
  N:integer;
  f : file of Spisok;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
//Добавить строку в таблицу 1.
 StringGrid1.RowCount:=StringGrid1.RowCount+1;
 N:=N+1;
 Label2.Caption:=inttostr(N);
 StringGrid1.Cells[0,N]:=inttostr(N);

end;



procedure TForm1.Button7Click(Sender: TObject);
begin
   Close;
end;

procedure TForm1.Button2Click(Sender: TObject);
var i,j:integer;
begin
//Удалить текущую строку в таблице 1.
 with StringGrid1 do begin
  for i := Row to RowCount - 2 do begin
   for j := 1 to 4 do
     cells[j,i]:=cells[j,i+1];
  end;
  RowCount:=RowCount-1;
  N:=N-1;
 Label2.Caption:=inttostr(N);
 end;

end;


procedure TForm1.Button3Click(Sender: TObject);
var i,j:integer;
begin
//Очистить  таблицу:
 With StringGrid1 do begin
  for i := 1 to RowCount-1 do
    for j := 0 to 4 do
    cells[j,i]:='';
  RowCount:=2;
  cells[0,1]:='1';
 end;
 N:=1;
 Label2.Caption:=inttostr(N);
end;


procedure TForm1.Button4Click(Sender: TObject);
var i:integer;
begin
//Открытие файла и его отображение в таблице 1.
 if OpenDialog1.Execute then begin
   AssignFile(f,OpenDialog1.FileName);
   Reset(f);
   Button3Click(Sender); //Очистка
   N:=0;
   while not eof(f) do begin
     read(f,V);
     N:=N+1;
     with StringGrid1 do begin
       if N>1 then RowCount:=RowCount+1;
       cells[1,N]:=V.FIO;
       cells[2,N]:=IntToStr(V.NP);
       cells[3,N]:=V.Diagnoz;
       cells[4,N]:=V.Pol;
       end;
   end;
   Label2.Caption:=IntToStr(N);

       end;
end;

procedure TForm1.Button5Click(Sender: TObject);
var
  i: Integer;
begin
//Сохранение таблицы 1 в файл.
 if SaveDialog1.Execute then begin
   AssignFile(f,SaveDialog1.FileName);
   Rewrite(f);
  with StringGrid1 do begin
   for i := 1 to N do begin
    try
     V.FIO:=cells[1,i];
     V.NP:=StrToInt(cells[2,i]);
     V.Diagnoz:=cells[3,i];
     V.Pol:=cells[4,i];
     write(f,V);
    except
      showmessage('Некорректные данные в таблице!');
    end;
   end;
  end;
  CloseFile(f);
  showmessage('Данные из таблицы успешно записаны в файл!');
 end;
end;

procedure TForm1.Button6Click(Sender: TObject);
begin

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
//Начальные действия при создании формы.
//Подписи столбцов:
 With StringGrid1 do begin
   RowCount:=2;
   cells[0,0]:=' № ';
   cells[1,0]:='  ФИО';
   cells[2,0]:=' Номер палаты';
   cells[3,0]:=' Диагноз';
   cells[4,0]:=' Пол';
   cells[0,1]:='1';
 end;
 N:=1;
 Label2.Caption:=inttostr(N);
end;
end.
Смог сделать всё, кроме самого важного.

Последний раз редактировалось Dima-91; 21.10.2010 в 18:22.
Dima-91 вне форума Ответить с цитированием
Старый 21.10.2010, 18:22   #3
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Цитата:
какие нужны операторы, что бы сравнить пол
if......then ........else.....
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 21.10.2010, 18:29   #4
Dima-91
Форумчанин
 
Регистрация: 28.09.2010
Сообщений: 198
По умолчанию

Можно так сравнить, пол?
Код:
if V.Pol= 'муж' then begin
Dima-91 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическая структура данных tanjusha Паскаль, Turbo Pascal, PascalABC.NET 2 01.07.2010 18:46
паскаль структура данных lunnamedl Помощь студентам 1 18.12.2009 21:12
Сложная Структура Данных diliana Помощь студентам 6 10.11.2009 22:57
Структура Базы Данных jeka5555 PHP 12 30.03.2009 07:46
Структура данных : сеть DesolationJam Помощь студентам 2 23.01.2008 10:41