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

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

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

 
 Ответить  Открыть новую тему 
> лабы по паскалю, нужно решать 2 задачи
сообщение
Сообщение #1


Гость






в паскале я так сказать дуб
скоро экзамен и нужно 2 задачи решить. помогите пожалуйста

1. Создать базу данных с помощью типа запись, включающую в себя 5 полей типа: extended, string, char, integer, boolean.
База данных содержит минимум 10 записей. Данные загружаются из текстового файла, затем сортируются, минимум по двум полям, и сохраняются в типизированный файл. В работе подключается свой модуль и оверлей модуль.

2. Написать программу, в которой описаны два объекта один как родитель второй потомок. Объекты движутся при столкновении меняют цвет.


по работе пишется отчет


за ранее спасибо
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


1) Читай правила форума по поводу оформления заголовка темы
2) По записям решено очень много задач, пользуйся поиском
3)FAQ ООП

будут конкретные вопросы, спрашивай.

в чем проблемма с первой задачей ?

const n=10;
type
TRec = record
i:integer;
e:extended;
ch:char;
s:string;
b:boolean;
end;

var
records:array[1..n] of TRec;


Сообщение отредактировано: klem4 -


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Цитата(klem4 @ 19.06.05 9:25)
в чем проблемма с первой задачей ?

Наверное теперь вот в этом:
Цитата(12 @ 19.06.05 8:20)
Данные загружаются из текстового файла, затем сортируются, минимум по двум полям, и сохраняются в типизированный файл. В работе подключается свой модуль и оверлей модуль.

Особенно радует, что для решения ЭТОЙ задачи надо использовать 2 модуля, один из которых - оверлейный...

12,
как оверлей создается знаешь? Про обычные модули можно много найти на форуме (в поиске), но вот оверлеи я что-то не припомню, чтобы были...

Все-таки были... Вот тут есть кое-что про них: Уменьщение времени работы программ
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






я в паскале вообще ничего незнаю помогите ребята пожалуста только с исходниками пожалуста
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


Да про оверлейный модуль я недочитал ... Пойду почитаю книгу, попробую сделать это задание.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Ну, вот так примерно делается 1-е задание:

Только мне лень было заполнять 10 записей, я сделал для 4-х... Добавь недостающие элементы в файл _KURS.TXT...
_KURS.PAS - основная программа, ..._OV - оверлейный модуль, ..._UN - обычный... Поле для сортировки задается при вызове Sort.


Прикрепленные файлы
Прикрепленный файл  overlay.rar ( 1.49 килобайт ) Кол-во скачиваний: 210
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Цитата(volvo @ 19.06.05 11:52)
Ну, вот так примерно делается 1-е задание:

Только мне лень было заполнять 10 записей, я сделал для 4-х... Добавь недостающие элементы в файл _KURS.TXT...
_KURS.PAS - основная программа, ..._OV - оверлейный модуль, ..._UN - обычный... Поле для сортировки задается при вызове Sort.



что он не запускается открываю в паскале _KURS.pas запускаю RUN а он молчит на экране ничего нет
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






запускаю exe файл окно появится и сразу исчезает
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






Alt+F5 для просмотра результата в Паскале... Или добавь ReadLn перед последним END-ом.

И почитай какую-нибудь книжку про Паскаль, я не собираюсь тебе все это разжевывать... Раз задания на Overlay и объекты, значит уровень довольно высокий, должен сам уметь в таких вещах как просмотр результатов разбираться...

А не умеешь - за 1 день все равно не научишься... Даже не пытайся.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






спасибо огромное что помогли незнающему человеку
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


Задание с шарами :

Сделал изменения в этом коде : http://forum.pascal.net.ru/index.php?showt...944&#entry38944

при столкновении шары "меняются" цветами. :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";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 1.09.2025 20:20
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name