IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Паскаль. Записи, задача на записи.
Zoyka
сообщение 22.04.2010 18:09
Сообщение #1





Группа: Пользователи
Сообщений: 1
Пол: Женский
Реальное имя: Зоя

Репутация: -  0  +


База данных содержит фамилию пациента и диагноз. Написать программу, определяющую пациентов с наиболее распространенным заболеванием.

Базаданных задается самостоятельно (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

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 22.04.2010 22:45
Сообщение #2


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(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;
- и везде используй ее, а не число.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 19.07.2025 18:17
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"