![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
12 |
![]() ![]()
Сообщение
#1
|
Гость ![]() |
в паскале я так сказать дуб
скоро экзамен и нужно 2 задачи решить. помогите пожалуйста 1. Создать базу данных с помощью типа запись, включающую в себя 5 полей типа: extended, string, char, integer, boolean. База данных содержит минимум 10 записей. Данные загружаются из текстового файла, затем сортируются, минимум по двум полям, и сохраняются в типизированный файл. В работе подключается свой модуль и оверлей модуль. 2. Написать программу, в которой описаны два объекта один как родитель второй потомок. Объекты движутся при столкновении меняют цвет. по работе пишется отчет за ранее спасибо |
klem4 |
![]()
Сообщение
#2
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
1) Читай правила форума по поводу оформления заголовка темы
2) По записям решено очень много задач, пользуйся поиском 3)FAQ ООП будут конкретные вопросы, спрашивай. в чем проблемма с первой задачей ?
Сообщение отредактировано: klem4 - -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
volvo |
![]()
Сообщение
#3
|
Гость ![]() |
Цитата(klem4 @ 19.06.05 9:25) в чем проблемма с первой задачей ? Наверное теперь вот в этом: Цитата(12 @ 19.06.05 8:20) Данные загружаются из текстового файла, затем сортируются, минимум по двум полям, и сохраняются в типизированный файл. В работе подключается свой модуль и оверлей модуль. Особенно радует, что для решения ЭТОЙ задачи надо использовать 2 модуля, один из которых - оверлейный... 12, как оверлей создается знаешь? Про обычные модули можно много найти на форуме (в поиске), но вот оверлеи я что-то не припомню, чтобы были... Все-таки были... Вот тут есть кое-что про них: Уменьщение времени работы программ |
Guest |
![]()
Сообщение
#4
|
Гость ![]() |
я в паскале вообще ничего незнаю помогите ребята пожалуста только с исходниками пожалуста
|
klem4 |
![]()
Сообщение
#5
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Да про оверлейный модуль я недочитал ... Пойду почитаю книгу, попробую сделать это задание.
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Ну, вот так примерно делается 1-е задание:
Только мне лень было заполнять 10 записей, я сделал для 4-х... Добавь недостающие элементы в файл _KURS.TXT... _KURS.PAS - основная программа, ..._OV - оверлейный модуль, ..._UN - обычный... Поле для сортировки задается при вызове Sort. Прикрепленные файлы ![]() |
Guest |
![]()
Сообщение
#7
|
Гость ![]() |
Цитата(volvo @ 19.06.05 11:52) Ну, вот так примерно делается 1-е задание: Только мне лень было заполнять 10 записей, я сделал для 4-х... Добавь недостающие элементы в файл _KURS.TXT... _KURS.PAS - основная программа, ..._OV - оверлейный модуль, ..._UN - обычный... Поле для сортировки задается при вызове Sort. что он не запускается открываю в паскале _KURS.pas запускаю RUN а он молчит на экране ничего нет |
Guest |
![]()
Сообщение
#8
|
Гость ![]() |
запускаю exe файл окно появится и сразу исчезает
|
volvo |
![]()
Сообщение
#9
|
Гость ![]() |
Alt+F5 для просмотра результата в Паскале... Или добавь ReadLn перед последним END-ом.
И почитай какую-нибудь книжку про Паскаль, я не собираюсь тебе все это разжевывать... Раз задания на Overlay и объекты, значит уровень довольно высокий, должен сам уметь в таких вещах как просмотр результатов разбираться... А не умеешь - за 1 день все равно не научишься... Даже не пытайся. |
Guest |
![]()
Сообщение
#10
|
Гость ![]() |
спасибо огромное что помогли незнающему человеку
|
klem4 |
![]()
Сообщение
#11
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Задание с шарами :
Сделал изменения в этом коде : http://forum.pascal.net.ru/index.php?showt...944entry38944 при столкновении шары "меняются" цветами. :D держи : Исходный код Uses Graph,Crt; const MaxShar=30; type shar = object { переменные } x,y:integer; { текущие координаты шара } r:word; { радиус } color:byte; { цвет шара } dx,dy:shortint; { скорость. задается значениями перемещения на каждом шаге (в точках) } hits:set of byte; { множество шаров с которыми данный шар уже столкнулся и с которыми не надо обсчитывать столкновение еще раз } { методы } constructor initShar(x0,y0:integer; r0:word; color0:byte; dx0,dy0:shortint); procedure Move; { двигаем } procedure Show; { показываем } procedure Hide; { прячем } procedure CheckBorder; { проверяем на выход за границы экрана } procedure CheckHit(k:byte); { проверяем на столкновение с другим шаром } procedure revertXDirection; { поменять Х/Y-составляющую скорости } procedure revertYDirection; { на противоположную } procedure TurnAfterHit(k:byte); { вычислить новые значения скорости двух шаров после удара. Первый шар - шар данного объекта, второй - с индексом k в массиве } function Value:real; { вычислить объем шара. Нужно для вычисления скорости. Вообще-то там масса нужна, но учитывая, что плотность все-равно сократиться при делении, используем объем } {procedure PrintState;} { отладочные печати } end; var bgColor,i:byte; x,y,dx,dy,ErrCode:integer; r:word; shars: array[1..MaxShar] of shar; { массив шаров } sh:shar; f:text; { файл для отладочных печатей } ColTemp:integer; {добавил эту переменную} Procedure shar.Move; begin x:=x+dx; y:=y+dy; end; Procedure shar.Show; begin setColor(color); circle(x, y, r); {PutPixel(x,y,color);} { уберите комментарий чтобы увидеть траекторию } end; Procedure shar.Hide; begin setColor(bgColor); circle(x, y, r); end; procedure shar.revertXDirection; begin dx:=-dx; x:=x+dx; end; procedure shar.revertYDirection; begin dy:=-dy; y:=y+dy; end; Constructor shar.initShar(x0, y0 :integer; r0 :word; color0 :byte; dx0, dy0 :shortint); begin x:=x0; y:=y0; r:=r0; color:=color0; dx:=dx0; dy:=dy0; hits:=[]; end; procedure shar.CheckBorder; begin if (r+x>=GetMaxX-1) or (x-r<=1) then revertXDirection; if (y+r>=GetMaxY-1) or (y-r<=1) then revertYDirection end; {procedure shar.PrintState; begin writeln(f,'x=',x:3,' y=',y:3,' r=',r:3,' dx=',dx:3,' dy=',dy:3); end;} procedure shar.TurnAfterHit(k:byte); { формулы для движения шаров взяты здесь: http://ferro.phys.msu.ru/prak/PDF/01-mechanics/07.pdf } var m1, m2 :real; vx10,vy10,vx20,vy20:integer; begin m1 := Value; { массы } m2 := shars[k].Value; vx10 := dx; { начальные значения скоростей } vy10 := dy; vx20 := shars[k].dx; vy20 := shars[k].dy; { скорость первого шара после удара } dx := round((2*m2*vx20 + (m1-m2)*vx10)/(m1+m2)); dy := round((2*m2*vy20 + (m1-m2)*vy10)/(m1+m2)); { скорость второго шара после удара } shars[k].dx := round((2*m1*vx10 + (m2-m1)*vx20)/(m1+m2)); shars[k].dy := round((2*m1*vy10 + (m2-m1)*vy20)/(m1+m2)); end; function shar.Value:real; begin { возвращает объем шара } Value:=4*Pi*r*r*r/3; end; procedure shar.CheckHit(k:byte); var i1:byte; dist:longint; begin for i1:=1 to MaxShar do if ((i1<>k) and not(k in hits)) then begin shars[i1].hits:=shars[i1].hits+[k]; dist:=round(sqrt(sqr(1.0*x-shars[i1].x)+sqr(1.0*y-shars[i1].y))); if (dist<r+shars[i1].r) then begin {И этот кусок start} ColTemp:=shars[k].color; shars[k].color:=shars[i1].color; shars[i1].color:=ColTemp; {finish} TurnAfterHit(i1); CheckBorder; Move; shars[i1].CheckBorder; shars[i1].Move; { скорость задается значениеми dx и dy - шагами движения. Таким образом она дискретна. Момент столкновения определяется по расстоянию между шарами. Но запросто может случиться, что шары на каком-то шаге пересекутся и в этом случае необходимо их развести в разные стороны перед тем как высчитывать расстояние на следуещем шаге, иначе они могут пребывать в состоянии постоянного столкновения } dist:=round(sqrt(sqr(1.0*x-shars[i1].x)+sqr(1.0*y-shars[i1].y))); while (dist<r+shars[i1].r) do begin CheckBorder; Move; shars[i1].CheckBorder; shars[i1].Move; dist:=round(sqrt(sqr(1.0*x-shars[i1].x)+sqr(1.0*y-shars[i1].y))); end; end; end; end; function initializeGraph:integer; var grDriver : Integer; grMode : Integer; begin grDriver:=Detect; InitGraph(grDriver, grMode, ''); initializeGraph:=GraphResult; end; begin ErrCode:=initializeGraph; if ErrCode <> grOk then WriteLn('Ошибка инициализации графики:', GraphErrorMsg(ErrCode)) else begin assign(f,'log.txt'); rewrite(f); bgColor:=0; rectangle(1,1,GetMaxX-1,GetMaxY-1); {shars[1].initShar(100,100,50,3,6,-3); shars[2].initShar(100,200,40,4,5,3); shars[3].initShar(200,200,20,5,-7,-4); shars[4].initShar(400,300,25,2,-9,-1); shars[5].initShar(500,200,35,14,-5,-8); if (MaxShar>5) then} { инициализация шаров случайным образом } for i:=1 to MaxShar do begin r:=20+random(10); shars[i].initShar(1+r+random(GetMaxX-2*r), 1+r+random(GetMaxY-2*r),r,1+random(GetMaxColor-1), random(15)-7,random(12)-6); end; { обсчитываем движение пока не нажата какая-либо клавиша } repeat { показываем все шары } for i:=1 to MaxShar do shars[i].Show; { временная задержка - установите свое значение для вашего компьютера } Delay(580); { убираем с экрана все шары } for i:=1 to MaxShar do shars[i].Hide; { просчитываем следующий шаг } for i:=1 to MaxShar do begin shars[i].Move; shars[i].CheckBorder; shars[i].CheckHit(i); end; for i:=1 to MaxShar do shars[i].hits:=[]; until keyPressed; CloseGraph; close(f); end end. -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
![]() ![]() |
![]() |
Текстовая версия | 1.09.2025 20:20 |