![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
yakudza_m |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 14 Пол: Мужской Реальное имя: Макс Репутация: ![]() ![]() ![]() |
Привет вам, админы!!!
Ваши проги привели моих однокурсников в шок))) А преподы, кажется, что-то задумали...( В общем мне нужен совет по поводу графика функции... Нужно протабуллировать функцию y=arccos(x) в области [-0.99; 0.99], результаты занести в файл, а потом из этого же файла по результатах построить график...нужно чтоб сам график рисовался точками толщиной в 3 пикселя, тёмно-серым цветом, а подписи к обозначениям длины на осях были в стиле Gothic...фух...вот это загнули...я сам чуть не лишился дара речи от такого...оси примерно такие как в файле, который добавляю... Прикрепленные файлы ![]() |
Lapp |
![]()
Сообщение
#2
|
|||
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Привет вам, админы!!! Почему только админам привет??.. А остальным что? ![]()
Расцениваю это как неуважение к участникам Форума. Либо извинишься, либо тема будет закрыта. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
|||
amega |
![]()
Сообщение
#3
|
![]() ? ![]() ![]() ![]() Группа: Пользователи Сообщений: 283 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата А преподы, кажется, что-то задумали...( Цитата вот это загнули... помню была такая ситуация и у меня дак как я из нее вышел когда мне дали очередное задание тежелое когда зделал сказал а вы сможете мне показать готовое решение этой задачи для тестирование правильно ли я зделал они улибнулись и больше меня не трогали) соб по задаче Цитата результаты занести в файл можно задать координаты точок как запись и очередную переменную записать в файл потом при постройке графике брать очередное значение. Тоеть
Type
Trecord = record
x:real;
y:real;
end;
Tfile = file of Trecord;
....
var a:trecord;
...
{при считывание переменная а будет имметь вид
a.x
a.y
при табулирование функции очередное значение заносим просто в файл
потом считываем переменную а и строим график}
Сообщение отредактировано: amega - |
yakudza_m |
![]()
Сообщение
#4
|
Новичок ![]() Группа: Пользователи Сообщений: 14 Пол: Мужской Реальное имя: Макс Репутация: ![]() ![]() ![]() |
Почему только админам привет??.. А остальным что? ![]() Расцениваю это как неуважение к участникам Форума. Либо извинишься, либо тема будет закрыта. ой, сори, всем остальным тож привет))) Lapp, не обижайся, я так больше не буду... Добавлено через 3 мин. Цитата Type Trecord = record x:real; y:real; end; Tfile = file of Trecord; .... var a:trecord; ... {при считывание переменная а будет имметь вид a.x a.y при табулирование функции очередное значение заносим просто в файл потом считываем переменную а и строим график} это нужно вводить вначале проги?? а как мне реализовать ввод и вывод значений из файла? |
amega |
![]()
Сообщение
#5
|
![]() ? ![]() ![]() ![]() Группа: Пользователи Сообщений: 283 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата а как мне реализовать ввод и вывод значений из файла? ты можеш выложить табулирование функции (часть кода там где считаются очередные х у для постройки графика), я тебе напишу как потом работать с файлом |
yakudza_m |
![]() ![]()
Сообщение
#6
|
Новичок ![]() Группа: Пользователи Сообщений: 14 Пол: Мужской Реальное имя: Макс Репутация: ![]() ![]() ![]() |
|
yakudza_m |
![]()
Сообщение
#7
|
Новичок ![]() Группа: Пользователи Сообщений: 14 Пол: Мужской Реальное имя: Макс Репутация: ![]() ![]() ![]() |
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.
вот, нашол што-то но мне нужно чтоб там одна функция табулировалась... ![]() Добавлено через 2 мин. а как написать арккосинус на паскале? |
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
|
amega |
![]()
Сообщение
#9
|
![]() ? ![]() ![]() ![]() Группа: Пользователи Сообщений: 283 Пол: Мужской Репутация: ![]() ![]() ![]() |
береш пишеш функцию аркосинуса сибе в програму
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; |
yakudza_m |
![]() ![]()
Сообщение
#10
|
Новичок ![]() Группа: Пользователи Сообщений: 14 Пол: Мужской Реальное имя: Макс Репутация: ![]() ![]() ![]() |
береш пишеш функцию аркосинуса сибе в програму
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; не пашет ![]() ![]() ![]() занёс вышесказанное в прогу, а она не компилируется...можеш показать приблизительно как она должна выглядеть?? |
volvo |
![]()
Сообщение
#11
|
Гость ![]() |
Ошибки синтаксические исправь: Rewrite вместо rewrire, например... И в следующий раз говори, как именно сделал, и что за ошибка...
|
amega |
![]()
Сообщение
#12
|
![]() ? ![]() ![]() ![]() Группа: Пользователи Сообщений: 283 Пол: Мужской Репутация: ![]() ![]() ![]() |
примерно вот так тое єт без построение графика
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 - |
amega |
![]()
Сообщение
#13
|
![]() ? ![]() ![]() ![]() Группа: Пользователи Сообщений: 283 Пол: Мужской Репутация: ![]() ![]() ![]() |
volvo
ты не могбы подсказать как зделать так чтобы действительный тип стал целый для построки графика у есть идея: каждую координату умножить на 100 (поскольку у нас шаг 0.01) оюрезать хвост(дробную часть) записать у текстовый файл тоесть он будет выгледить так 100 200 101 201 ... ... и потоб строить график но я не знаю как обрезать дробную часть ![]() |
volvo |
![]()
Сообщение
#14
|
Гость ![]() |
Цитата я не знаю как обрезать дробную часть Есть такая функция: Trunc, принимает вещественное число, возвращает его целую часть, округляя в сторону нуля... |
amega |
![]()
Сообщение
#15
|
![]() ? ![]() ![]() ![]() Группа: Пользователи Сообщений: 283 Пол: Мужской Репутация: ![]() ![]() ![]() |
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.
|
volvo |
![]()
Сообщение
#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 |
![]()
Сообщение
#17
|
![]() ? ![]() ![]() ![]() Группа: Пользователи Сообщений: 283 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата Я тебя умоляю, сначала ОСИ начерти Где твоя ось, по которой видно, чем является график? а причем оси? во - первых график Арккосинус - спадает ![]() а график арксинуса - возростает ![]() Цитата Если я проведу ось на 100 пикселей ниже да хоть сверху или снизу что от этого график начнет возрастать? во вторых Цитата выдает 1.01973, что это? Арксинус? Не может быть, Арксинус (pi/6) должен быть 0.55106 радиан.. я про значение ничего не говорил, речь идет о графиках. я помотрел на график и увидел что он не похож. и третих каждий человек может ошибицца даже если он хоть 10 раз проверяет, кто - то посмотрит со стороны и найдет ошибку! я человек а не процесор кампа Сообщение отредактировано: amega - |
volvo |
![]()
Сообщение
#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 |
![]()
Сообщение
#19
|
![]() ? ![]() ![]() ![]() Группа: Пользователи Сообщений: 283 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата Теперь понимаешь, о чем я? болей меней... |
yakudza_m |
![]()
Сообщение
#20
|
Новичок ![]() Группа: Пользователи Сообщений: 14 Пол: Мужской Реальное имя: Макс Репутация: ![]() ![]() ![]() |
ух ты!
ну вы жжоте, парни! я даж прозрел от такого мастерства... ![]() а если поменять функцию на другую, например на синус 2 пи икс, то она тож работать будет? |
![]() ![]() |
![]() |
Текстовая версия | 18.04.2025 23:07 |