Помощь - Поиск - Пользователи - Календарь
Полная версия: Паскаль. Записи
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Zoyka
База данных содержит фамилию пациента и диагноз. Написать программу, определяющую пациентов с наиболее распространенным заболеванием.

Базаданных задается самостоятельно (30 записей)


Uses crt;

Type BazaDannyx=record
FIO: string[40];
Diagnoz: string[50];
end;
Var pacient:array [1..30] of BazaDannyx;
i:integer;
Begin;
clrscr;
for i:=1 to 30 do
begin
writeln ('bbedite FIO' ,i, '-ogo pacienta');
readln (pacient[i].FIO);
writeln ('bbedite Diagnoz',i,'-ogo pacienta');
readln (pacient[i].Diagnoz);
end;
End.



вот мой код, нужно только поставить проверку на распространенный диагноз.


М
Тэги!! Правила Форума, п.5, и правила раздела Задачи, п.2
Lapp

Lapp
Цитата(Zoyka @ 22.04.2010 19:09) *
нужно только поставить проверку на распространенный диагноз.

1. Сделай еще одну запись и массив этих записей:
const
mD=20;
type
tDiag = record
Diag: string[50];
n: integer
end;
var
D: array[1..mD]of tDiag;
m: integer;


2. Частоты диагнозов определяешь в двойном цикле, тут же можно находить и самый частый диагноз (p, встречается x раз):
m:=0;
p:=1;
x:=1;
for i:=1 to 30 do with pacient[i] do begin
j:=1;
while j<=m do if D[j].Diag=Diagnoz then Break else Inc(j);
with D[j] do if j>m then begin
m:=j;
Diag:=Diagnoz;
n:=1
end
else begin
Inc(n);
if n>x then begin
x:=n;
p:=j
end
end;


3. Еще один цикл - вывод:
with D[p] do for i:=1 to 30 with pacient[i] do if Diagnoz=Diag then WriteLn(FIO);


Вот, как-то так. Собери все вместе и приходи, будем отлаживать.

P.S.
Старайся избегать явного указания чисел, как у тебя тут 30. Введи константу
const
mP=30;
- и везде используй ее, а не число.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.