Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на языке Pascal

Выпуск № 063
от 05.12.2002, 16:51

Администратор:
Имя: Sensey
URL: Информационный ресурс
ICQ: 105679124
Украина, Харьков
О рассылке:
Задано вопросов: 111
Отправлено ответов: 290
Активность: 261.2 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Ayl
Статус: Профессиональный
Общий рейтинг: 117.51
[Подробней >>]
Sensey
Статус: Профессиональный
Общий рейтинг: 122.64
URL: Страничка рассылки по Паскалю
Телефон: +38 (0572) 41-76-04 дом.
[Подробней >>]
Vadim
Статус: Начальный
Общий рейтинг: 147.61
[Подробней >>]
 
X-RayMan
Статус: Начальный
Общий рейтинг: 131.25
[Подробней >>]
Melkor
Статус: Начальный
Общий рейтинг: 130
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 108. Спасибо всем экспертам, ответившим на мой вопрос (#107). В приложении прога, которая читает вводимые... (ответов: 5)

Вопросов: 1, ответов: 5


 Вопрос № 108

Спасибо всем экспертам, ответившим на мой вопрос (#107).
В приложении прога, которая читает вводимые данные и записывает в файл, ну и выводит на экран этот список и количество пациентов с первой группой крови.
Но никак не получается отсортировать этих пациентов (с 1 группой крови) по алфавиту.
Заводить доп. массив или как?
В общем, просветите поподробней в этом вопросе.
X-RayMan давай мыло или ответь сюда.


Приложение:


Вопрос отправлен: 02.12.2002, 16:49
Отправитель: Vova

[Следующий вопрос >>] [Список вопросов]

Отвечает Ayl

Приветствую Вас, Vova!
Сортировка...
А как ты собираешься сортировать в массиве из 10-ти элементов? У тебя что, все пациенты в него влезут?
Для сортировки тебе нужно либо пытаться всех пациентов в память засунуть, либо считывать по порядку.


Ответ отправлен: 02.12.2002, 17:33
Отправитель: Ayl


Отвечает Sensey

Добрый день, Vova!
0. Сортировка пузырьком. Долго и примитивно.
Если хочь быстро сортировать - найди книгу Кнута том 3.

var
temp:TMember;
...
for i:=1 to j-1 do
for k:=i+1 to j do
begin
if mbs[k].blood<>1 then continue;
if mbs[k].name begin
temp:=mbs[k];mbs[k]:=mbs[i];mbs[i]:=temp;
end;
end;

1. При открытии файла если он не существует - ошибка.
Пример процедуры, в кот. указано, как это делается:

procedure OpenFile(var f:file;s:string);
begin
assign(f,s);{$I-}reset(f);{$I+}
if IOResult<>0 then
begin
writeln('File not found -',s);halt;
end;
end;

2. У тебя массив записей - используй типизированный файл, а не текстовый
f:file of TMember;
тогда запись в него Write(f,Mbs[i]) и чтение соответственно Read(f,Mbs[i]);
Например чтение файла и подсчет кол-ва записей соответственно:

OpenFile(f,'a.txt');
j:=0;
while not eof(f) do
begin
read(f,mbs[j]);inc(j);
end;

ЗЫ Писалось все без проверки в Паскале. ибо некогда. Извини за возможные синтаксич ошибки.
Если же не разберешься - милости просим...

Ответ отправлен: 02.12.2002, 17:38
Отправитель: Sensey


Отвечает Vadim

Здравствуйте, Vova!
Проще всего использовать объект TSortedCollection из модуля OBJECTS. У него есть метод COMPARE, в котором задается правило сортировки. И ненадо будет самому изголяться и что-то придумывать :). Если нужны подробности - пиши.

Ответ отправлен: 03.12.2002, 05:09
Отправитель: Vadim


Отвечает X-RayMan

Доброго времени суток, Vova!
Лови на мыло. Единственное чего я не понял, это как должны располагаться отсортированные пациенты первой группы. На тех же местах, только уже по алфавиту? Или в начале списка? Я сделал, что на своих прежних местах.

Ответ отправлен: 02.12.2002, 21:44
Отправитель: X-RayMan


Отвечает Melkor

Доброе время суток, Vova!
Попробуй следующее:
type
TMembMass = array [1..10] of TMember;
procedure SortByGroup1(var Mass: TMembMass);
var
Fl: Boolean;
I: Byte;
Temp: TMember;
begin
repeat
Fl = 1;
for I := 1 to 9 do
if (Mass[I].bl = 1) and
(Mass[I].Name > Mass[I + 1].Name) then
begin
Temp := Mass[I];
Mass[I] := Mass[I + 1];
Mass[I + 1] := Temp;
Fl := 0;
end;
until Fl;
end;

Ответ отправлен: 03.12.2002, 00:59
Отправитель: Melkor



Форма отправки вопроса

Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

© 2002 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (38)
C / C++ (27)
Perl (7)
Delphi (18)
Pascal (23)
Basic / VBA (9)
Java / JavaScript (13)
PHP (8)
MySQL / MSSQL (9)
Пользователю
Windows 95/98/Me (34)
Windows NT/2000/XP (23)
"Железо" (29)
Поиск информации (15)
Администратору
Windows NT/2000/XP (13)
Linux / Unix (16)
Юристу
Гражданское право (9)
Семейное право (3)
Трудовое право (5)
КоАП (3)

Отправить вопрос всем экспертам выбранной рассылки.




Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное