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

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

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

 
 Ответить  Открыть новую тему 
> синусоида, построение графика
сообщение
Сообщение #1


Человек
*****

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

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


данная тема была открыта сначало в теор. вопросах, однако вышла за пределы того раздела, за что была закрыта (переместиь отказалались по неизвестным мне причинам).
задача построить синусоиду с заданным периодом
неработающая программа
{$N+}
{$E+}
Uses Graph,crt;
const
{ OPTIONS }
shag=0.0001;
lgr = -50;
pgr = 50;
zcrtX=320;
zcrty=240;
mtrX=10;
mtrY=10;
colorG=15;
colorOXY=4;
OXYminX=-200;
OXYmaxX=200;
OXYminY=-200;
oxymaxY=200;

Var grDriver : Integer;
grMode : Integer;
w:real;
x,y:real;{extended;}
i:integer;
Begin
w:=23.6884;
grDriver:=Detect;
InitGraph(grDriver, grMode, '');
for i:=OXYminX to OXYmaxX do putpixel(zcrtX+i,zcrty,colorOXY); {TP не компилирует из за этих двух строчек}
for i:=OXYminY to OXYmaxY do putpixel(zcrtX,zcrty-i,colorOXY); {***}

x:=lgr;
while x<=pgr do
begin
{ readln(x);}
if x<>2 then begin y:=(sin(2*3/w)*x); {ИМХО, ошибка тут}
{ writeln(y:1:8);}
putpixel(zcrtx+trunc(x*mtrX),zcrty-trunc(y*mtrY),colorg) end;
x:=x+shag;
end;
readkey;
closegraph;
end.

заранее благодарен
премеч FP компилирует, а TP-нет.

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


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

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


Скобки правильно расставить?
У вас: y := (sin (2*3/w) * x)
Надо: y := sin ((2*3/w) * x)


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Человек
*****

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

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


Цитата(TarasBer @ 22.02.2007 17:26) *

Надо: y := sin ((2*3/w) * x)

точно... как я мог ошибица...


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Человек
*****

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

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


P.S. А нельзя ли устроить построение графика в том же окне что и Ввод/вывод?


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Цитата
Ввод/вывод
Это ты о чем? В текстовом окне выводить графику хочешь?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Человек
*****

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

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


Цитата(volvo @ 22.02.2007 18:18) *

Это ты о чем? В текстовом окне выводить графику хочешь?

да... или текст в окне графики...


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






smile.gif Мне почему-то кажется, что второй вариант более разумен...

OutTextXY в помощь... Как вводить данные (строковые) в графическом режиме - было в FAQ-е...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Человек
*****

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

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


Цитата(volvo @ 22.02.2007 18:20) *

smile.gif Мне почему-то кажется, что второй вариант более разумен...

OutTextXY в помощь... Как вводить данные (строковые) в графическом режиме - было в FAQ-е...

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

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


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






А что непонятно с выводом?

setcolor(red); { Устанавливаешь требуемый цвет }
outtextxy(10, 10, 'red'); { <--- Выведется строка Red красного цвета }


Для легенды надо будет задействовать еще и Bar (прямоугольник), Rectangle (рамку), возможно - Circle (окружность)... Здесь дело только в твоей фантазии - придумай, что тебе нужно, и реализуй...

Кстати, насчет ввода строк - с FAQ я по-моему погорячился, это было вот тут: Графика
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Человек
*****

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

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


Цитата(volvo @ 22.02.2007 18:38) *

А что непонятно с выводом?

setcolor(red); { Устанавливаешь требуемый цвет }
outtextxy(10, 10, 'red'); { <--- Выведется строка Red красного цвета }


Для легенды надо будет задействовать еще и Bar (прямоугольник), Rectangle (рамку), возможно - Circle (окружность)... Здесь дело только в твоей фантазии - придумай, что тебе нужно, и реализуй...

Кстати, насчет ввода строк - с FAQ я по-моему погорячился, это было вот тут: Графика

буду разбераться...

оффтоп
всегда считал что процедуры ненужны, сейчас сменил мнение. как оформить само построение графика в процедуру (чтобы можно было построить 3 графика разными цветами и с разными периодами)

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


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гость






{$N+}
{$E+}
Uses Graph,crt;
const
{ OPTIONS }
shag=0.0001;
lgr = -50;
pgr = 50;
zcrtX=320;
zcrty=240;
mtrX=10;
mtrY=10;
colorG=15;
colorOXY=4;
OXYminX=-200;
OXYmaxX=200;
OXYminY=-200;
oxymaxY=200;

procedure draw(w: real; color: integer);
var x, y: real;
begin
x:=lgr;
while x<=pgr do begin

y:=sin((2*3/w)*x);
putpixel(zcrtx+trunc(x*mtrX),zcrty-trunc(y*mtrY),color);
x:=x+shag;

end;
end;

Var
grDriver, grMode: smallint; { <-- FPC }
i: integer;

begin
grDriver:=Detect;
InitGraph(grDriver, grMode, '');
for i:=OXYminX to OXYmaxX do putpixel(zcrtX+i,zcrty,colorOXY);
for i:=OXYminY to OXYmaxY do putpixel(zcrtX,zcrty-i,colorOXY);

draw(23.6884, white);
draw(2 * 23.6884, lightblue);

readkey;
closegraph;
end.

Третий - по аналогии...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Человек
*****

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

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


Цитата(volvo @ 22.02.2007 19:30) *

Третий - по аналогии...

благодарю


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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