|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
19.01.2021, 11:33 | #1 |
Новичок
Джуниор
Регистрация: 19.01.2021
Сообщений: 2
|
Помогите найти ошибку
uses
graphABC; //Подключаем графический модуль const W = 1200; H = 700;//Размеры графического окна a1=30; g=10; u=15; function F(x: real): real; begin F := x*sin(a1)/cos(a1)-g*x*x/(2*u*u*cos(a1)*cos(a1)); //Функция end; var x0, y0, x, y, xLeft, yLeft, xRight, yRight, n: integer; a, b, fmin, fmax, x1, y1, mx, my, dx, dy, num: real; i: byte; s: string; begin SetWindowSize(W, H); //Устанавливаем размеры графического окна //Координаты левой верхней границы системы координат: xLeft := 50; yLeft := 50; //Координаты правой нижней границы системы координат: xRight := W - 50; yRight := H - 50; //интервал по Х; a и b должно нацело делится на dx: a := 0; b := 30; dx := 0.5; //Интервал по Y; fmin и fmax должно нацело делится на dy: fmin := 0; fmax := 20; dy := 2; //Устанавливаем масштаб: mx := (xRight - xLeft) / (b - a); //масштаб по Х my := (yRight - yLeft) / (fmax - fmin); //масштаб по Y //начало координат: x0 := trunc(abs(a) * mx) + xLeft; y0 := yRight - trunc(abs(fmin) * my); //Рисуем оси координат: line(xLeft, y0, xRight + 10, y0); //ось ОХ line(x0, yLeft - 10, x0, yRight); //ось ОY SetFontSize(12); //Размер шрифта SetFontColor(clBlue); //Цвет шрифта TextOut(xRight + 20, y0 - 15, 'X'); //Подписываем ось OX TextOut(x0 - 10, yLeft - 30, 'Y'); //Подписываем ось OY SetFontSize(8); //Размер шрифта SetFontColor(clRed); //Цвет шрифта { Засечки по оси OX: } n := round((b - a) / dx) + 1; //количество засечек по ОХ for i := 1 to n do begin num := a + (i - 1) * dx; //Координата на оси ОХ x := xLeft + trunc(mx * (num - a)); //Координата num в окне Line(x, y0 - 3, x, y0 + 3); //рисуем засечки на оси OX str(Num:0:1, s); if abs(num) > 1E-15 then //Исключаем 0 на оси OX TextOut(x - TextWidth(s) div 2, y0 + 10, s) end; { Засечки на оси OY: } n := round((fmax - fmin) / dy) + 1; //количество засечек по ОY for i := 1 to n do begin num := fMin + (i - 1) * dy; //Координата на оси ОY y := yRight - trunc(my * (num - fmin)); Line(x0 - 3, y, x0 + 3, y); //рисуем засечки на оси Oy str(num:0:0, s); if abs(num) > 1E-15 then //Исключаем 0 на оси OY TextOut(x0 + 7, y - TextHeight(s) div 2, s) end; TextOut(x0 - 10, y0 + 10, '0'); //Нулевая точка { График функции строим по точкам: } x1 := a; //Начальное значение аргумента while x1 <= b do begin y1 := F(x1); //Вычисляем значение функции x := x0 + round(x1 * mx); //Координата Х в графическом окне y := y0 - round(y1 * my); //Координата Y в графическом окне //Если y попадает в границы [yLeft; yRight], то ставим точку: if (y >= yLeft) and (y <= yRight) then SetPixel(x, y, clGreen); x1 := x1 + 0.001 //Увеличиваем абсциссу end end. |
19.01.2021, 19:36 | #2 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,620
|
Ну и в чём проблема? Не компилируется? Или работает не так? А как должна?
Вопрос в стиле "на деревню дедушке Макарычу" . И хорошо бы научиться форматировать текст исходника. И тег CODE - в помощь. https://cloud.mail.ru/public/A1pR/7adCJai1o Телепатия мне подсказывает: выкопано из сети что-то с похожими словами, и теперь настрогайте из этого то, что мне нужно. А что нужно - "догадайся, мол, сама" © Последний раз редактировалось digitalis; 19.01.2021 в 19:45. |
20.01.2021, 11:22 | #3 |
Новичок
Джуниор
Регистрация: 19.01.2021
Сообщений: 2
|
При изменении a1 , то есть градуса,на цифры 60 и еще некоторые график просто перестает показываться
|
20.01.2021, 12:05 | #4 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,620
|
Ну если хочешь, чтобы помогли с анализом - отформатируй нормально исходник, потому что читать это полотенце нормальному человеку в лом. Кстати, в процессе этого может сама собой и ошибка выловится.
Я недопаскаль-абеце в упор не вижу. Если заставляют им заниматься - прими мои сожаления. Последний раз редактировалось digitalis; 20.01.2021 в 12:07. |
21.01.2021, 09:13 | #5 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,528
|
Цитата:
программа — запись алгоритма на языке понятном транслятору
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
[C++] найти сумму ряда , посчитать функцию ch(x) и найти абсолютную и относительную погрешности. Помогите найти ошибку! | Vladonna | Помощь студентам | 2 | 13.09.2018 22:07 |
Помогите, пожалуйста, найти ошибку в коде (найти сумму факториалов чётных чисел в заданном диапазоне) | kris14 | Паскаль, Turbo Pascal, PascalABC.NET | 8 | 25.10.2017 15:42 |
Дан массив а(n) типа SWORD. найти сумму всех отрицательных элементов массива.помогите найти ошибку | Юлия123456 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 07.09.2016 06:12 |
Найти седловые точки в матрице(помогите найти ошибку) - pascal | tdsotm | Помощь студентам | 0 | 20.11.2014 18:57 |
Помогите найти ошибку - StrToFloat выдаёт ошибку EConvertError для ячеек StringGrid (Delphi) | Artsiom | Помощь студентам | 10 | 18.12.2013 14:10 |