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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2009, 18:57   #1
Kravec
Пользователь
 
Регистрация: 15.04.2009
Сообщений: 62
По умолчанию Построение графиков функции

Тема: Построение графиков функции.

Построить и закрасить "запятую"("кому"), уравнение которой в полярных координатах имеет видсмотрите вложение).Рассмотрим случай , когда A=100 і ∝=3π/2.

вот мой код, только запятая показуется в другую сторону(тип зеркальное отображение) , и сама прога сделана так сказать безалаберно, помогите советом или подправить код.

Код:
Program koma;
uses crt,graph;
var d,m,n:longint;
c1,c2,l1,l2,A,t,p,k,x,y,alf:real;
Procedure Init;
var Driver,Regim,Error:integer;
begin
Driver:=detect;
Initgraph(driver,Regim,' ');
Error:=GraphResult;
if Error<>groK then
begin
writeln('OwbI6KA rPA0I0u4eCKoro pe)I(uMA');
Halt;
end;
end;

Begin
clrscr;
writeln('a,alfa');
readln(a,alf);
init;
setcolor(green);
t:=0;
 c1:=a*t/alf;
 c2:=a*t/(2*pi+alf);
 l1:=t-alf;
 l2:=t-alf-2*pi;
 p:=((c1+c2)+-(c1-c2))/2*((l1-abs(l1))/2/l1)+c2*(l1+abs(l1))/2/l1*(l2-abs(l2))/2/l2;
 x:=p*cos(t);
 y:=-p*sin(t);
 m:=round(x);
 n:=round(y);
 t:=t+0.01;
 setcolor(green);
 moveto(m+320,n+240);

while t<pi*3.55+0.06 do
begin
c1:=a*t/alf;
 c2:=a*t/(2*pi+alf);
 l1:=t-alf;
 l2:=t-alf-2*pi;
 p:=((c1+c2)+-(c1-c2))/2*((l1-abs(l1))/2/l1)+c2*(l1+abs(l1))/2/l1*(l2-abs(l2))/2/l2;
 x:=p*cos(t);
 y:=-p*sin(t);
 m:=round(x);
 n:=round(y);
 t:=t+0.01;
 setcolor(green);
 lineto(m+320,n+240);
end;
t:=0;
 c1:=a*t/alf;
 c2:=a*t/(2*pi+alf);
 l1:=t-alf;
 l2:=t-alf-2*pi;
 p:=((c1+c2)+(c1-c2))/2*((l1-abs(l1))/2/l1)+c2*(l1+abs(l1))/2/l1*(l2-abs(l2))/2/l2;
 x:=p*cos(t);
 y:=-p*sin(t);
 m:=round(x);
 n:=round(y);
 t:=t+0.01;
 setcolor(green);
 moveto(m+320,n+240);

while t<pi*1.55+0.06 do
begin
c1:=a*t/alf;
 c2:=a*t/(2*pi+alf);
 l1:=t-alf;
 l2:=t-alf-2*pi;
 p:=((c1+c2)+(c1-c2))/2*((l1-abs(l1))/2/l1)+c2*(l1+abs(l1))/2/l1*(l2-abs(l2))/2/l2;
 x:=p*cos(t);
 y:=-p*sin(t);
 m:=round(x);
 n:=round(y);
 t:=t+0.01;
 setcolor(green);
 lineto(m+320,n+240);
end;
setfillstyle(1,green);
floodfill(322,242,green);
readln;
closegraph;
End.
Изображения
Тип файла: jpg Безымянный.jpg (11.5 Кб, 126 просмотров)

Последний раз редактировалось Kravec; 03.06.2009 в 19:41.
Kravec вне форума Ответить с цитированием
Старый 03.06.2009, 19:26   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Вы хоть скажите какие значения вводить. А то я что ни введу - весь экран закрашивается.

Вот тут минус поставьте:
Код:
 x:=-p*cos(t);
 y:=-p*sin(t);
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 03.06.2009, 19:40   #3
Kravec
Пользователь
 
Регистрация: 15.04.2009
Сообщений: 62
По умолчанию

Цитата:
Сообщение от Sazary Посмотреть сообщение
Вы хоть скажите какие значения вводить. А то я что ни введу - весь экран закрашивается.

Вот тут минус поставьте:
Код:
 x:=-p*cos(t);
 y:=-p*sin(t);
ну надо вводить A=100 ... а альфа 5

ОЙ забыл дописать в условие : Рассмотрим случай , когда A=100 і ∝=3π/2
Kravec вне форума Ответить с цитированием
Старый 03.06.2009, 19:52   #4
tspili12
Заблокирован
 
Регистрация: 02.06.2009
Сообщений: 1
Восклицание Liar Game 1-73

you can read free manga onlinehttp://www.MaxManga.comLiar Game 1-73 74 75 76 77 78 79 80 Congratulations! You are one of the 1 in 100,000 people who have been entered in the amazing LIAR GAME TOURNAMENT! Along with the postcard there are 100 million yen in notes. That's the beginning of the Liar Game. When the game ends, in 30 days, you will have to return your 100 million. If your opponent steals them, he can keep them as a prize, and you will have a debt of 100 million...read free manga, free manga online, read manga, find manga, find free manga, onemanga,mangafox,find manga online, mangaonline,free anime , anime online, read anime,free comic, read free comic online,comic online,free Naruto online , free One Piece online,free Bleach onlineLiar Game manga anime,Liar Game manga yen,Liar Game manga 100 million,Liar Game manga Koro,Liar Game manga Higurashi no Naku,Liar Game manga Akiyama,Liar Game manga Prince,Liar Game manga Akuma,Liar Game manga series,Liar Game manga Kiss,Liar Game manga opponent,Liar Game manga Shinobu Kaitani,Liar Game manga The Legend of Zelda,Liar Game manga prize money,Liar Game manga Kanzaki,Liar Game manga downloads,manga Liar Game anime,manga Liar Game Koro,manga Liar Game Higurashi no Naku,manga Liar Game yen,manga Liar Game 100 million,manga Liar Game Akiyama,manga Liar Game Prince,manga Liar Game Akuma,manga Liar Game Kiss,Liar Game manga series,manga Liar Game opponent,manga Liar Game Shinobu Kaitani,manga Liar Game The Legend of Zelda,manga Liar Game prize money,manga Liar Game downloads,manga Liar Game Kanzaki,
tspili12 вне форума Ответить с цитированием
Старый 03.06.2009, 20:12   #5
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
ну надо вводить A=100 ... а альфа 5
Ну так вот. Работает.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 03.06.2009, 23:43   #6
Kravec
Пользователь
 
Регистрация: 15.04.2009
Сообщений: 62
По умолчанию

Цитата:
Сообщение от Sazary Посмотреть сообщение
Ну так вот. Работает.
так я знаю что оно работает , просто запятая в другую сторону рисуется , так сказать в зеркальном отображенни ..., да и сама программа как то не окуратно написана , вот не знаю каким способом можно ещё решить эту задачку
Kravec вне форума Ответить с цитированием
Старый 03.06.2009, 23:47   #7
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
так я знаю что оно работает , просто запятая в другую сторону рисуется , так сказать в зеркальном отображенни
Вы сделали изменения, которые я сказал? Все рисуется в ту сторону, какую нужно.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 04.06.2009, 00:16   #8
Kravec
Пользователь
 
Регистрация: 15.04.2009
Сообщений: 62
По умолчанию

Цитата:
Сообщение от Sazary Посмотреть сообщение
Вы сделали изменения, которые я сказал? Все рисуется в ту сторону, какую нужно.
спасибо, я просто не везде сделал изменнения ... извеняюсь за не внимательность
Kravec вне форума Ответить с цитированием
Старый 09.06.2009, 19:16   #9
Kravec
Пользователь
 
Регистрация: 15.04.2009
Сообщений: 62
По умолчанию

как можно ещё сделать эту задачку кроме ниже приведённого способа

Код:
Program koma;
uses crt,graph;
var d,m,n:longint;
c1,c2,l1,l2,A,t,p,k,x,y,alf:real;
Procedure Init;
var Driver,Regim,Error:integer;
begin
Driver:=detect;
Initgraph(driver,Regim,' ');
Error:=GraphResult;
if Error<>groK then
begin
writeln('OwbI6KA rPA0I0u4eCKoro pe)I(uMA');
Halt;
end;
end;

Begin
clrscr;
writeln('a,alfa');
readln(a,alf);
init;
setcolor(green);
t:=0;
 c1:=a*t/alf;
 c2:=a*t/(2*pi+alf);
 l1:=t-alf;
 l2:=t-alf-2*pi;
 p:=((c1+c2)+-(c1-c2))/2*((l1-abs(l1))/2/l1)+c2*(l1+abs(l1))/2/l1*(l2-abs(l2))/2/l2;
 x:=-p*cos(t);
 y:=-p*sin(t);
 m:=round(x);
 n:=round(y);
 t:=t+0.01;
 setcolor(green);
 moveto(m+320,n+240);

while t<pi*3.55+0.06 do
begin
c1:=a*t/alf;
 c2:=a*t/(2*pi+alf);
 l1:=t-alf;
 l2:=t-alf-2*pi;
 p:=((c1+c2)+-(c1-c2))/2*((l1-abs(l1))/2/l1)+c2*(l1+abs(l1))/2/l1*(l2-abs(l2))/2/l2;
 x:=-p*cos(t);
 y:=-p*sin(t);
 m:=round(x);
 n:=round(y);
 t:=t+0.01;
 setcolor(green);
 lineto(m+320,n+240);
end;
t:=0;
 c1:=a*t/alf;
 c2:=a*t/(2*pi+alf);
 l1:=t-alf;
 l2:=t-alf-2*pi;
 p:=((c1+c2)+(c1-c2))/2*((l1-abs(l1))/2/l1)+c2*(l1+abs(l1))/2/l1*(l2-abs(l2))/2/l2;
 x:=-p*cos(t);
 y:=-p*sin(t);
 m:=round(x);
 n:=round(y);
 t:=t+0.01;
 setcolor(green);
 moveto(m+320,n+240);

while t<pi*1.55+0.06 do
begin
c1:=a*t/alf;
 c2:=a*t/(2*pi+alf);
 l1:=t-alf;
 l2:=t-alf-2*pi;
 p:=((c1+c2)+(c1-c2))/2*((l1-abs(l1))/2/l1)+c2*(l1+abs(l1))/2/l1*(l2-abs(l2))/2/l2;
 x:=-p*cos(t);
 y:=-p*sin(t);
 m:=round(x);
 n:=round(y);
 t:=t+0.01;
 setcolor(green);
 lineto(m+320,n+240);
end;
setfillstyle(1,green);
floodfill(322,242,green);
readln;
closegraph;
End.
Изображения
Тип файла: jpg Безымянный.jpg (11.5 Кб, 148 просмотров)
Kravec вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Построение графиков Vitul'k Помощь студентам 15 18.05.2009 17:37
DBGrid и построение графиков HOVER БД в Delphi 1 19.06.2008 13:16
построение графиков zetrix Microsoft Office Excel 4 17.06.2008 14:06
Построение графиков на C# TheGuardian123 Общие вопросы .NET 2 29.01.2008 14:50
построение графиков 4eCHoK PHP 1 20.09.2007 04:35