Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.02.2014, 22:52   #1
mishammm
Форумчанин
 
Регистрация: 21.09.2013
Сообщений: 232
По умолчанию проблема с отображением графика в Turbo Pascal

нужно было постоить график в полярной системе координат функции p = exp(fi/10). но проблема вместо графика мигает точка в середине экрана и всё. вот код
Код:
uses
   crt,  graph;
   const
        step=pi/10;
        var
        gd,gm,xc,yc,x,y:integer;
        fi:real;
        i:longint;
        function r0(fi:real):real;
        begin
        r0:=exp(fi/10);
        end;
        begin
        gd:=detect;
        initgraph(gd,gm,'');
        xc:=getmaxx div 2;
        yc:=getmaxy div 2;
        for i:=1 to 100 do begin
        fi:=fi*step;
        x:=trunc(r0(fi) * cos(fi));
        y:=trunc(r0(fi) * sin(fi));
        setcolor(i div 16+1);
        If i=1 then
        moveto(xc+x,yc-y)
        else
        lineto(xc+x,yc-y);
        delay(500);
        end;
        readln;
        closegraph;
        End.
код правильный вроде, так как препод давал такой же но беда с самим отображением. помогите что тут можно сделать?
mishammm вне форума Ответить с цитированием
Старый 05.02.2014, 23:22   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

код неправильный. у Вас fi изначально равно нулю. а сколько ноль на step не умножай, всё ноль будет!

так устроит?
Код:
uses
  crt, graph;
const
  step = pi / 10;
var
  gd, gm, xc, yc, x, y: integer;
  fi: real;
  i: longint;

function r0(fi: real): real;
begin
  r0 := exp(fi / 10);
end;

begin
  gd := detect;
  initgraph(gd, gm, '');
  xc := getmaxx div 2;
  yc := getmaxy div 2;
  fi := 0;
  for i := 1 to 160 do begin
    fi := fi + step;
    x := trunc(r0(fi) * cos(fi));
    y := trunc(r0(fi) * sin(fi));
    { WriteLn('fi=',fi,' x=',x,' y=',y); }
    setcolor(i div 16 + 1);
    if i = 1 then
      moveto(xc + x, yc - y)
    else
      lineto(xc + x, yc - y);
    delay(50);
    if keypressed then Break;
  end;
  OutText('DONE!');
  readln;
  closegraph;
end.
p.s. почему Вы код не форматируете отступами? Это же удобно и повышает читаемость и наглядность кода программы!!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.02.2014, 00:08   #3
mishammm
Форумчанин
 
Регистрация: 21.09.2013
Сообщений: 232
По умолчанию

спасибо, учту ваши замечания насчёт кода
mishammm вне форума Ответить с цитированием
Старый 06.02.2014, 00:56   #4
mishammm
Форумчанин
 
Регистрация: 21.09.2013
Сообщений: 232
По умолчанию

оно так и должно спираль рисовать начиная с самой маленькой точки? а можно как то этот процес ускорить? например в цыкле или это физически невозможно? а хоят главное рисует да и рисует
Изображения
Тип файла: jpg Безымянный.jpg (21.2 Кб, 118 просмотров)

Последний раз редактировалось mishammm; 06.02.2014 в 01:05.
mishammm вне форума Ответить с цитированием
Старый 06.02.2014, 09:18   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
а можно как то этот процес ускорить?
уберите строчку delay(xxx); - процесс и ускорится!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.02.2014, 10:51   #6
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
оно так и должно спираль рисовать начиная с самой маленькой точки?
Да. Даже если на бумажке рисовать - перебор чисел делаем традиционно от меньшего к большему.

Цитата:
например в цыкле или это физически невозможно?
Так и так в цикле сделано

Цитата:
а можно как то этот процес ускорить?
А это уже выше Сергей объяснил
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с отображением 3D графика!!! El_MoroZ Общие вопросы Delphi 4 17.12.2013 00:21
Turbo Pascal, программа построения графика Dina 85 Помощь студентам 5 28.04.2013 19:27
Построение графика функции с автоматическим масштабированием (Turbo Pascal) Tiran09 Помощь студентам 0 11.12.2011 23:09
Графика в Turbo Pascal 7.0 Seleznev N. Помощь студентам 2 09.02.2011 14:31