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

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

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

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> График с файла, Надеюсь последний...))
yakudza_m
сообщение 23.01.2009 23:08
Сообщение #1


Новичок
*

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

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


Привет вам, админы!!!
Ваши проги привели моих однокурсников в шок)))
А преподы, кажется, что-то задумали...(
В общем мне нужен совет по поводу графика функции...

Нужно протабуллировать функцию y=arccos(x) в области [-0.99; 0.99], результаты занести в файл, а потом из этого же файла по результатах построить график...нужно чтоб сам график рисовался точками толщиной в 3 пикселя, тёмно-серым цветом, а подписи к обозначениям длины на осях были в стиле Gothic...фух...вот это загнули...я сам чуть не лишился дара речи от такого...оси примерно такие как в файле, который добавляю...


Прикрепленные файлы
Прикрепленный файл  GRAPHIC.PAS ( 745 байт ) Кол-во скачиваний: 251
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 24.01.2009 1:14
Сообщение #2


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(yakudza_m @ 23.01.2009 23:08) *
Привет вам, админы!!!
Почему только админам привет??.. А остальным что? blink.gif

М
Ознакомься с Правилами, п.8.



Расцениваю это как неуважение к участникам Форума. Либо извинишься, либо тема будет закрыта.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
amega
сообщение 24.01.2009 12:54
Сообщение #3


?
***

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

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


Цитата
А преподы, кажется, что-то задумали...(

Цитата
вот это загнули...


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

соб по задаче
Цитата
результаты занести в файл

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

Тоеть

Type
Trecord = record
x:real;
y:real;
end;
Tfile = file of Trecord;

....
var a:trecord;
...
{при считывание переменная а будет имметь вид
a.x
a.y
при табулирование функции очередное значение заносим просто в файл
потом считываем переменную а и строим график}




Сообщение отредактировано: amega - 24.01.2009 14:25
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
yakudza_m
сообщение 24.01.2009 15:48
Сообщение #4


Новичок
*

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

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


Цитата(Lapp @ 24.01.2009 0:14) *

Почему только админам привет??.. А остальным что? blink.gif


Расцениваю это как неуважение к участникам Форума. Либо извинишься, либо тема будет закрыта.



ой, сори, всем остальным тож привет))) Lapp, не обижайся, я так больше не буду...

Добавлено через 3 мин.
Цитата
Type
Trecord = record
x:real;
y:real;
end;
Tfile = file of Trecord;

....
var a:trecord;
...
{при считывание переменная а будет имметь вид
a.x
a.y
при табулирование функции очередное значение заносим просто в файл
потом считываем переменную а и строим график}


это нужно вводить вначале проги??

а как мне реализовать ввод и вывод значений из файла?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
amega
сообщение 24.01.2009 16:45
Сообщение #5


?
***

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

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


Цитата
а как мне реализовать ввод и вывод значений из файла?


ты можеш выложить табулирование функции (часть кода там где считаются очередные х у для постройки графика), я тебе напишу как потом работать с файлом
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
yakudza_m
сообщение 24.01.2009 20:54
Сообщение #6


Новичок
*

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

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


Цитата(amega @ 24.01.2009 15:45) *

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


я бы с удовольствием, но я, даже перерыв FAQ, не нашёл похожего mega_chok.gif

может я плохо искал? unsure.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
yakudza_m
сообщение 24.01.2009 21:20
Сообщение #7


Новичок
*

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

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


 program d;
Const
a:double = 1;
b:double = 3;
step:double = 0.1;
eps:double = 0.00001;
var
x,r:double;
begin
x:=a;
while abs (b-x)>eps do begin
if x<=2 then r:=sqr(ln(abs(x-2)))+sqrt(x+3)
else r:=exp(6-2*x)+2*sqr(cos(x-3))*cos(x-3);
writeln(x:10, r:10);
x:=x+step
end;
readln
end.


вот, нашол што-то но мне нужно чтоб там одна функция табулировалась... wacko.gif


Добавлено через 2 мин.
а как написать арккосинус на паскале?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 24.01.2009 21:42
Сообщение #8


Гость






Цитата
а как написать арккосинус на паскале?
Вот так: Реализация ArcCos
 К началу страницы 
+ Ответить 
amega
сообщение 25.01.2009 13:45
Сообщение #9


?
***

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

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


береш пишеш функцию аркосинуса сибе в програму

function ArcCos(x: real): real;
begin
if Abs(x) < 10E-3 then ArcCos := Pi/2
else ArcCos := ArcTan(Sqrt(1 - Sqr(x)) / x) + Pi * Byte(x < 0)
end;



при табуляция фунции очередно значение заносим в файл

assign(f,'file.rec');
rewrire(f);
a.x:=-1;
while a.x<1 do begin
a.y:=arccos(a.x);
write(f,a);
a.x:=a.x+0.01; {0.01 это шаг с которым значени х меняет}
end;
close(f);



тоесть теперь у нас файл file.rec имеет координаты точок
как использовать putpixel я подумаю поскольку у нас real точки а там integer;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
yakudza_m
сообщение 25.01.2009 15:33
Сообщение #10


Новичок
*

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

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


Цитата(amega @ 25.01.2009 12:45) *

береш пишеш функцию аркосинуса сибе в програму

function ArcCos(x: real): real;
begin
if Abs(x) < 10E-3 then ArcCos := Pi/2
else ArcCos := ArcTan(Sqrt(1 - Sqr(x)) / x) + Pi * Byte(x < 0)
end;



при табуляция фунции очередно значение заносим в файл

assign(f,'file.rec');
rewrire(f);
a.x:=-1;
while a.x<1 do begin
a.y:=arccos(a.x);
write(f,a);
a.x:=a.x+0.01; {0.01 это шаг с которым значени х меняет}
end;
close(f);



тоесть теперь у нас файл file.rec имеет координаты точок
как использовать putpixel я подумаю поскольку у нас real точки а там integer;



не пашет sad.gif sad.gif sad.gif
занёс вышесказанное в прогу, а она не компилируется...можеш показать приблизительно как она должна выглядеть??
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 25.01.2009 16:07
Сообщение #11


Гость






Ошибки синтаксические исправь: Rewrite вместо rewrire, например... И в следующий раз говори, как именно сделал, и что за ошибка...
 К началу страницы 
+ Ответить 
amega
сообщение 25.01.2009 16:22
Сообщение #12


?
***

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

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


примерно вот так тое єт без построение графика

program arccos1;
Type
Trecord = record
x:real;
y:real;
end;
Tfile = file of Trecord;
function arccos(x:real):real;
begin
if Abs(x) < 10E-3 then arccos:=Pi/2
else arccos := arctan(sqrt(1-sqr(x))/x)+pi*Byte(x<0)
end;
var
a:Trecord;
f:Tfile;
{ + описание переменных для графического режима}
begin
assign(f,'file.rec');
rewrite(f);
a.x:=-1;
while a.x<1 do begin
a.y:=arccos(a.x);
write(f,a);
a.x:=a.x+0.01;
end;
close(f);

{подключение гр режима
считывание из файла
постройка графика}

end.



Сообщение отредактировано: amega - 25.01.2009 16:22
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
amega
сообщение 25.01.2009 17:57
Сообщение #13


?
***

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

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


volvo
ты не могбы подсказать как зделать так чтобы действительный тип стал целый для построки графика
у есть идея:
каждую координату умножить на 100 (поскольку у нас шаг 0.01)
оюрезать хвост(дробную часть)
записать у текстовый файл
тоесть он будет выгледить так
100 200
101 201
... ...
и потоб строить график
но я не знаю как обрезать дробную часть nea.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 25.01.2009 19:21
Сообщение #14


Гость






Цитата
я не знаю как обрезать дробную часть
Есть такая функция: Trunc, принимает вещественное число, возвращает его целую часть, округляя в сторону нуля...
 К началу страницы 
+ Ответить 
amega
сообщение 25.01.2009 20:07
Сообщение #15


?
***

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

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


volvo
Цитата
Вот так: Реализация ArcCos

пожуста проверь не ошибся ли ты в функциях поскольку график
function arccos(x:real):real;
begin
if Abs(x) < 10E-3 then arccos:=Pi/2
else arccos := arctan(sqrt(1-sqr(x))/x)+pi*Byte(x<0)
end;


является график arcsin и наоборот!!!!

вот график осталось добавить оси и изделать цвет и все такое
(я его чуть-чуть в центр подвинул)
program argcos1;
Uses graph;
Type
Trecord = record
x:real;
y:real;
end;
Tfile = file of Trecord;
function arccos(x:real):real;
begin
if (1 - Abs(x)) < 10E-3 then Arccos := x * Pi/2
else Arccos := ArcTan( (x) / Sqrt(1 - Sqr(x)) )
end;
var
a:Trecord;
f:Tfile;
grD :integer;
grM :integer;
errC:integer;
begin
assign(f,'file.rec');
rewrite(f);
a.x:=-1;
while a.x<1 do begin
a.y:=arccos(a.x);
write(f,a);
a.x:=a.x+0.01;
end;
close(f);
detectgraph(grd,grm);
Initgraph(grd,grm,' ');
errc:=graphresult;
if errc=0 then begin
reset(f);
while not eof(f) do begin
read(f,a);
putpixel(trunc((a.x+1)*100)+200,trunc(100*a.y)+200,15);
end;
readln;
CloseGraph;
end;
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 25.01.2009 21:03
Сообщение #16


Гость






Цитата
проверь не ошибся ли ты в функциях
Я не имею привычки выкладывать непроверенные вещи... Проверяй:
function ArcCos(x: real): real;
begin
if Abs(x) < 10E-3 then ArcCos := Pi/2
else ArcCos := ArcTan(Sqrt(1 - Sqr(x)) / x) + Pi * Byte(x < 0)
end;

begin
writeln(arccos(pi/6):10 :5);
end.
, выдает 1.01973, что это? Арксинус? Не может быть, Арксинус (pi/6) должен быть 0.55106 радиан... Это именно арккосинус. Так что верни как было...

Добавлено через 10 мин.
Цитата
поскольку график является график arcsin и наоборот!!!!

Я тебя умоляю, сначала ОСИ начерти, а потом будешь что-то утверждать... Чем отличается график АркСинуса от АркКосинуса? Если я проведу ось на 100 пикселей ниже, чем ты - будет Что? Где твоя ось, по которой видно, чем является график?
 К началу страницы 
+ Ответить 
amega
сообщение 25.01.2009 23:06
Сообщение #17


?
***

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

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


Цитата
Я тебя умоляю, сначала ОСИ начерти
Где твоя ось, по которой видно, чем является график?


а причем оси?

во - первых график Арккосинус - спадает
Изображение

а график арксинуса - возростает

Изображение


Цитата
Если я проведу ось на 100 пикселей ниже

да хоть сверху или снизу что от этого график начнет возрастать?

во вторых
Цитата
выдает 1.01973, что это? Арксинус? Не может быть, Арксинус (pi/6) должен быть 0.55106 радиан..

я про значение ничего не говорил, речь идет о графиках. я помотрел на график и увидел что он не похож.

и третих
каждий человек может ошибицца даже если он хоть 10 раз проверяет, кто - то посмотрит со стороны и найдет ошибку! я человек а не процесор кампа

Сообщение отредактировано: amega - 25.01.2009 23:07
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 25.01.2009 23:30
Сообщение #18


Гость






А вот, кстати, и подтверждение, что приведенная функция - именно АркКосинус:

program argcos1;
Uses graph;

function ArcCos(x: real): real;
begin
if Abs(x) < 10E-3 then ArcCos := Pi/2
else ArcCos := ArcTan(Sqrt(1 - Sqr(x)) / x) + Pi * Byte(x < 0)
end;

type
Trecord = record
x: real;
y: real;
end;
Tfile = file of Trecord;

const
eps = 0.01;
scaleX = 250;
scaleY = 100;

var
a:Trecord;
f:Tfile;
grD :integer;
grM :integer;
errC:integer;

dbl: real;
s: string;
begin
assign(f,'file.rec'); rewrite(f);

a.x := -1 + eps;
while a.x < 1 do begin
a.y := arccos(a.x);
write(f, a);
a.x := a.x + eps;
end;
close(f);

initgraph(grd, grm, '');
errc := graphresult;
if errc = grOk then begin
setcolor(lightred);
line(20, 3 * getmaxy div 4, getmaxx - 20, 3 * getmaxy div 4);
line(getmaxx div 2, 20, getmaxx div 2, getmaxy - 20);

settextstyle(gothicfont, horizdir, 1);
settextjustify(centertext, centertext);

dbl := -1;
while dbl <= 1 do begin
str(dbl:4:2, s);
outtextxy((getmaxx div 2) + trunc(dbl * scaleX),
(3 * getmaxy div 4) + 20, s);
dbl := dbl + 0.25;
end;

reset(f);
read(f, a);
setcolor(lightgray);
setlinestyle(solidLn, 0, thickWidth);
moveto((getmaxx div 2) + trunc(scaleX * a.x),
(3 * getmaxy div 4) - trunc(scaleY * a.y));
while not eof(f) do begin
read(f, a);
lineto((getmaxx div 2) + trunc(scaleX * a.x),
(3 * getmaxy div 4) - trunc(scaleY * a.y));
end;
close(f);

readln;
closegraph;
end;
end.
(файлы EGAVGA.BGI и GOTH.CHR из папки \BGI должны быть в одной папке с программой. Можно, конечно, слинковать их с основной программой вот так , но я думаю ЭТОГО твои преподаватели, yakudza_m, тебе точно не простят)...

Добавлено через 5 мин.
Цитата
а причем оси?
А при том, что если в твоем рисунке (в первом) ось OX будет на 8 клеточек выше, то "легким движением руки график превращается... превращается график..." (С) в противоположный. Нет вообще такой кривой: Косинусоида. Есть синусоида, только иногда она сдвигается... Теперь понимаешь, о чем я?
 К началу страницы 
+ Ответить 
amega
сообщение 25.01.2009 23:54
Сообщение #19


?
***

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

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


Цитата
Теперь понимаешь, о чем я?


болей меней...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
yakudza_m
сообщение 27.01.2009 17:34
Сообщение #20


Новичок
*

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

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


ух ты!
ну вы жжоте, парни!
я даж прозрел от такого мастерства... smile.gif
а если поменять функцию на другую, например на синус 2 пи икс, то она тож работать будет?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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