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

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

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

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


Новичок
*

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

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


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

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


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


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

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

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


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

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



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


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


?
***

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

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


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

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


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

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

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

Тоеть

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

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




Сообщение отредактировано: amega -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


?
***

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

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


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


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


Новичок
*

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

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


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

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


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

может я плохо искал? unsure.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Цитата
а как написать арккосинус на паскале?
Вот так: Реализация ArcCos
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гость






Ошибки синтаксические исправь: Rewrite вместо rewrire, например... И в следующий раз говори, как именно сделал, и что за ошибка...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


?
***

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

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


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


Гость






Цитата
я не знаю как обрезать дробную часть
Есть такая функция: Trunc, принимает вещественное число, возвращает его целую часть, округляя в сторону нуля...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 пикселей ниже, чем ты - будет Что? Где твоя ось, по которой видно, чем является график?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


?
***

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

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


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


а причем оси?

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

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

Изображение


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

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

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

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

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

Сообщение отредактировано: amega -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 клеточек выше, то "легким движением руки график превращается... превращается график..." (С) в противоположный. Нет вообще такой кривой: Косинусоида. Есть синусоида, только иногда она сдвигается... Теперь понимаешь, о чем я?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


?
***

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

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


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


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


Новичок
*

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

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


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

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

 





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