Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2011, 19:46   #1
Mnsh
Пользователь
 
Регистрация: 26.12.2011
Сообщений: 16
По умолчанию Две программы в PascalABC

Здраствуйте программисты
Начинается сессия а я не могу написать две программы. Помогите пожалуйста.
Задачи:
1.Разработать программу, отображающую процесс вращения прямоугольника вокруг его верхнего левого угла.
2.В файл записаны коэффициенты многочлена. Необходимо определить значение многочлена по схеме Горнера.
Заранее спасибо
Mnsh вне форума Ответить с цитированием
Старый 26.12.2011, 20:21   #2
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

2 писал прям сюда не проверял
Код:
var
i,ai,n:integer;
f:text;
x,s:real;
begin
readln(x)
assign(f,'data.txt');
reset(f);
read(f,n);
s:=0;
for i:=0 to n do
begin
read(f,ai);
s:=s*x+ai;
end;
close(f);
writeln(s);
readln;
end.
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 26.12.2011, 20:35   #3
Mnsh
Пользователь
 
Регистрация: 26.12.2011
Сообщений: 16
По умолчанию

Большое спасиб, еще первую нужно.
Mnsh вне форума Ответить с цитированием
Старый 26.12.2011, 20:54   #4
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Первая нахрапом не решается, лучше сразу в фриланс. Возможно у кого-нибудь есть готовая, но рядли этот кто-то отдаст за просто так.
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 26.12.2011, 23:48   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну да. есть готовая первая задача.

вращение прямоугольника вокруг левого верхнего угла

пробуйте:
Код:
uses graph,crt;
const POLYSIZE=4+1;
      STEP=0.01;
const xy:array[1..POLYSIZE]of PointType=(
(x:100;y:100),
(x:100;y:150),
(x:200;y:150),
(x:200;y:100),
(x:100;y:100));
      x0=100;
      y0=100;
var gd,gm,i:integer;
    r:array[1..POLYSIZE]of double;
    fi:array[1..POLYSIZE]of double;
    alp:double;
begin
    gd:=DETECT;
    initgraph(gd,gm,'');
    for i:=1 to POLYSIZE do
    begin
        r[i]:=sqrt(sqr(xy[i].x-x0)+sqr(xy[i].y-y0));
        if(xy[i].x-x0<>0)then fi[i]:=arctan((xy[i].y-y0)/(xy[i].x-x0))
        else if xy[i].y-y0<0 then fi[i]:=-PI/2
             else if xy[i].y-y0>0 then fi[i]:=PI/2 else fi[i]:=0;
    end;
    repeat
        for i:=1 to POLYSIZE do
        begin
            xy[i].x:=x0+round(r[i]*cos(fi[i]+alp));
            xy[i].y:=y0+round(r[i]*sin(fi[i]+alp));
        end;
        setcolor(WHITE);
        drawpoly(POLYSIZE,xy);
        delay(10);
        setcolor(BLACK);
        drawpoly(POLYSIZE,xy);
        alp:=alp+STEP;
    until keypressed;
    closegraph;
end.

p.s. уп-с... а это в TurboPascal. Боюсь, что в PascalABC прийдётся модифицировать..

в PascalABC этот же код может выглядеть так:
Код:
uses graphABC,crt, PointRect;
const POLYSIZE=4+1;
      STEP=0.01;
const xyC:array[1..POLYSIZE]of Point =(
(x:100;y:100),
(x:100;y:150),
(x:200;y:150),
(x:200;y:100),
(x:100;y:100));
      x0=100;
      y0=100;

var gd,gm,i:integer;
    xy:array[1..POLYSIZE]of Point;
    r:array[1..POLYSIZE]of real;
    fi:array[1..POLYSIZE]of real;
    alp:real;
begin
    for i:=1 to POLYSIZE do xy[i] := xyC[i];
    
    for i:=1 to POLYSIZE do
    begin
        r[i]:=sqrt(sqr(xy[i].x-x0)+sqr(xy[i].y-y0));
        if(xy[i].x-x0<>0)then fi[i]:=arctan((xy[i].y-y0)/(xy[i].x-x0))
        else if xy[i].y-y0<0 then fi[i]:=-PI/2
             else if xy[i].y-y0>0 then fi[i]:=PI/2 else fi[i]:=0;
    end;
    repeat
        for i:=1 to POLYSIZE do
        begin
            xy[i].x:=x0+round(r[i]*cos(fi[i]+alp));
            xy[i].y:=y0+round(r[i]*sin(fi[i]+alp));
        end;
        SetPenColor(clRED);
        PolyLine(xy, POLYSIZE);
        delay(10);
        SetPenColor(clWhite);
        PolyLine(xy, POLYSIZE);
        alp:=alp+STEP;
    until keypressed;
end.

Последний раз редактировалось Serge_Bliznykov; 27.12.2011 в 00:04.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.12.2011, 08:30   #6
Mnsh
Пользователь
 
Регистрация: 26.12.2011
Сообщений: 16
По умолчанию

Большое спасибо.
Mnsh вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Две программы по Интернету artemavd Общие вопросы Delphi 4 04.09.2011 20:07
Обьединить две программы maxflint Общие вопросы Delphi 5 10.09.2010 22:31
Две программы Манжосов Денис :) Софт 2 26.04.2008 12:29
Две программы, на шахматную тему! Mandy Общие вопросы C/C++ 2 28.12.2007 10:23