
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.62] |
![]() |
|
Страницы: (7) « Первая ... 4 5 [6] 7 все ( Перейти к последнему сообщению ) |
![]() |
Прикр. сообщ.
#1
,
|
|
Текущая версия: 0.3a
Скачать OfflineFAQa3.rar (~48кб) Содержание Offline-FAQ Народ, те кто хочет помочь - присылайте решения проблем на Паскале без ассемблерных вставок. Основные топики: Примеры должны быть ориентированы на сегодняшний день, поэтому не принимаются примеры по Оформление: Только в документах DOC, HTML, или в сообщении в форуме. И не забудьте о соответствующих комментариях к коду программ! Если лень открывать редактор, то напишите описание прямо в своём сообщении. Выделите ключевые слова, подчеркните, где надо. Сам я не могу оформлять каждый присланный документ. Дополнения к ФАКу прикрепляйте в архиве к своему сообщению. А ещё неплохо собрать в HTML то, что лежит на сайте http://pascal.sources.ru/ : Pascal FAQ и Russian SWAG |
![]() |
Сообщ.
#76
,
|
|
Кто напишет задачку для Оффлайн-ФАК ?
Имеются сведения о студентах N учебных группах со своими реквизитами (имя, группа_номер, оценка по 4-ём предметам). Кол-во студентов заранее не известно. Определить и вывести на экран группы с самым высоким средним баллом. Оформить красиво (с отступами), комментариями и имеющими смысл именами переменных. Использовать процедуры и функции, например InputData; CalcAverageMarks; OutputHighMarks; без модуля CRT. |
![]() |
Сообщ.
#77
,
|
|
А ещё нужна програмка, отображающая меню при помощи модуля CRT.
Добавлено Функция Menu должна возвращать индекс выбранного элемента. Для начала, пусть при выборе выводится название элемента. Не забыть предусмотреть выход... ![]() |
![]() |
Сообщ.
#78
,
|
|
Вот навалял прогу для работы с записями и указателями. Также используется сортировка записей по двум критериям.
Зацените. Что нужно добавить/изменить? Хочу поместить в Offline-FAQ. Есть идея написать тоже самое с использованием объектов, коллекций (ООП). Ну и добавить междумордие (интерфейс)... ![]() Прикреплённый файл ![]() |
Сообщ.
#79
,
|
|
|
Меню
вертикальное цвет выбирать нельзя заголовок непишет P.S. Писал для других нужд, переделать и доработать лень, но хоть что-то. Прикреплённый файл ![]() |
![]() |
Сообщ.
#81
,
|
|
Цитата Dima_R @ 22.12.04, 10:33 В общем, что-то высвечивает, конечно, но код немного непродуман. Можно сделать и компактнее, и понятнее, и красивее. Меню вертикальное цвет выбирать нельзя заголовок непишет P.S. Писал для других нужд, переделать и доработать лень, но хоть что-то. ![]() Сам могу написать, но хочется, чтобы и другие поучаствовали. ![]() Но всё равно спасибо! Vesper, хорошо. Только чего комменты на английском? ![]() ![]() Чуток оформил программу и добавил функцию CalcStudAverage Прикреплённый файл ![]() |
Сообщ.
#82
,
|
|
|
Romtek, не люблю транслит и кривые кодировки :-)))))
ладно, пришел еще админ, терь будет время динамическое меню наваять |
![]() |
Сообщ.
#83
,
|
|
Пример базы данных с использованием ООП (продолжение от SortRec)
При первом запуске создаёт коллекцию и сохраняет в файл, и при повторном выводит её в отсортированном виде. Примечательно то, что с использованием объектов уменьшился код програмы. К тому же, легче понять, что делает программа. ![]() ![]() unit Shop_obj; interface uses Objects; type TInfo = record Product: string [40]; { наименование товара } Price: integer; { цена } end; PInfo = ^TInfo; TProductInfo = object (TObject) TransferRecord: TInfo; constructor Load (var S: TStream); procedure Store(var S: TStream); end; PProductInfo = ^TProductInfo; TProductColl = object (TSortedCollection) function Compare (Key1, Key2: Pointer): Integer; virtual; end; PProductColl = ^TProductColl; procedure ListAll (C: PCollection); implementation Const RProductInfo: TStreamRec = ( ObjType: 54321; VmtLink: Ofs(TypeOf(TProductInfo)^); Load: @TProductInfo.Load; Store: @TProductInfo.Store ); constructor TProductInfo.Load(var S: TStream); begin inherited Init; S.Read(TransferRecord, SizeOf(TransferRecord)); end; procedure TProductInfo.Store(var S: TStream); begin S.Write(TransferRecord, SizeOf(TransferRecord)); end; {$I sortfunc.inc} function TProductColl.Compare(Key1, Key2: Pointer): Integer; begin { Compare := PProductInfo(Key2)^.TransferRecord.Price - PProductInfo(Key1)^.TransferRecord.Price; {} Compare := StrCmp ( PProductInfo(Key1)^.TransferRecord.Product, PProductInfo(Key2)^.TransferRecord.Product ) {} end; procedure ListAll (C: PCollection); var i: word; procedure ShowItem (P : PProductInfo); far; begin with P^.TransferRecord do begin inc (i); write ( I : 2 ); write ( ' ' : 4, Product ); writeln ( Price : 44 - Length (Product) ); end; end; begin writeln; writeln ('Product' : 13, 'Price' : 37); for I := 1 to 50 do write ('='); writeln; i := 0; C^.ForEach(@ShowItem); readln; end; begin RegisterType (RProductInfo) end. ![]() ![]() program Shop_OOP; uses Objects, shop_obj; Const Max = 5; var ProductColl: PProductColl; Info: PProductInfo; procedure InputData; var i, qnt: integer; begin repeat write ('Enter quantity of products: '); readln (qnt); if qnt = 0 then writeln ('Quantity must be > 0'); until qnt <> 0; {Randomize;} for i := 1 to qnt do begin Info := New (PProductInfo,Init); with Info^.TransferRecord do begin write ('Enter product name (up to 40 chars): '); readln (Product); write ('Enter price of product: '); readln (Price); {write ('Enter Name: '); readln (Product); Price := 1 + Random (20);} end; ProductColl^.Insert (Info); end; end; procedure Save; var F: TBufStream; begin F.Init ('shop_oop.dat', stCreate, 1024); ProductColl^.Store (F); if F.status <> stOk then writeln ('Error while writing to file.'); F.Done; end; function Loaded: boolean; var F: TBufStream; begin F.Init ('shop_oop.dat', stOpenRead, 1024); if F.status = stOk then begin ProductColl^.Load (F); Loaded := (F.status = stOk); end; F.Done; end; begin ProductColl := New (PProductColl, Init (20, 5)); if not Loaded then InputData; { заполнение коллекции } { форматированный вывод коллекции на экран } ListAll (ProductColl); { сохранение коллекции } Save; Dispose (ProductColl, Done); end. Прикреплённый файл ![]() |
![]() |
Сообщ.
#84
,
|
|
Цитата Romtek @ 21.12.04, 20:52 Всё ещё нужна. см. (сообщ. #78)А ещё нужна програмка, отображающая меню при помощи модуля CRT. Также нужна программа, которая выводит текстовый файл на экран. При нажатии на пробел окно должно прокручиваться на размер экрана (без лишних наворотов, просто и понятно). |
Сообщ.
#85
,
|
|
|
Ура! Сдал первый экзамен. Вот написал, правда, снова не идеал, но намного лучше чем в прошлый раз. Плюс программка для чтения файлов.
Прикреплённый файл ![]() |
![]() |
Сообщ.
#86
,
|
|
Спасибо! Именно то, что надо.
![]() Замечания к программе MENU.PAS : |
![]() |
Сообщ.
#87
,
|
|
Цитата Vesper @ 30.11.04, 19:27 есть у меня прога, которая двигает крест в графике по экрану как прицел от курсорных клавиш, но там юзается модуль, который обрабатывает INT09, соответственно не подходит ![]() А прога где ? ![]() |
![]() |
Сообщ.
#88
,
|
|
Неотёсанные топики (Сообщ. #22) "Определение принадлежности точки к многоугольнику"
Кто может, проверьте почему при некоторых значениях выдаётся неверный результат. |
Сообщ.
#89
,
|
|
|
Romtek, завис
![]() |
Сообщ.
#90
,
|
|
|
вот, только без комментов
Прикреплённый файл ![]() |