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

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

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

 
 Ответить  Открыть новую тему 
> синусоида, построение графика
compiler
сообщение 22.02.2007 14:44
Сообщение #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 - 22.02.2007 15:57


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


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

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

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


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


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


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

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

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


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

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

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


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


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

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

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


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


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


Гость






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


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

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

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


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

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

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


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


Гость






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

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


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

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

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


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

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

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

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

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


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


Гость






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

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


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

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


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

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

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


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

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

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


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

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

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

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

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


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 22.02.2007 20:30
Сообщение #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.

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


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

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

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


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

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

благодарю


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

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

 



- Текстовая версия 20.07.2025 18:25
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"