24.08.2019, 04:23 [+3 UTC]
в нашей команде: 3 779 чел. | участники онлайн: 2 (рекорд: 21)

:: РЕГИСТРАЦИЯ

задать вопрос

все разделы

правила

новости

участники

доска почёта

форум

блоги

поиск

статистика

наш журнал

наши встречи

наша галерея

отзывы о нас

поддержка

руководство

Версия системы:
7.77 (31.05.2019)
JS-v.1.34 | CSS-v.3.35

Общие новости:
28.04.2019, 09:13

Форум:
22.08.2019, 11:39

Последний вопрос:
23.08.2019, 10:58
Всего: 150135

Последний ответ:
23.08.2019, 21:59
Всего: 258866

Последняя рассылка:
24.08.2019, 01:15

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
22.08.2009, 23:26 »
Владимир Лазурко
Мне очень понравилась функция отправки СМС-сообщений - удобно!

РАЗДЕЛ • Pascal / Delphi / Lazarus

Создание программ на языках Pascal, Delphi и Lazarus.

[администратор рассылки: Зенченко Константин Николаевич (Старший модератор)]

Лучшие эксперты в этом разделе

Зенченко Константин Николаевич
Статус: Старший модератор
Рейтинг: 91
Асмик Гаряка
Статус: Советник
Рейтинг: 0
Орловский Дмитрий
Статус: Мастер-Эксперт
Рейтинг: 0

Перейти к консультации №:
 

Консультация онлайн # 195689
Раздел: • Pascal / Delphi / Lazarus
Автор вопроса: mustang289 (Посетитель)
Отправлена: 21.05.2019, 23:24
Поступило ответов: 1

Здравствуйте! У меня возникли сложности с таким вопросом:

Задание
Построить график функции y(x) и таблицу значений y(x) с шагом измерения аргумента h.
Таблицу значений функции и аргумента необходимо вывести на экран в графическом режиме.
h=0.03
Код

Код (Pascal) :: выделить код
program Grafik;
uses crt,graph;  // используем экранный и графический модули 
const 
  h=0.03;  // шаг 
  stx= 2.03; //  начальное значение по оси х 
type
  zn_t=record
  x:real;
  y:real;
  end;
 var
   tabl:array[1..35] of zn_t; // таблица значений функции 
   i:integer;
{ инициализация графического режима
  VGA, режим VGAHI  640 x 480       }
procedure Graph_init;
var
 d,r,err : integer;

begin
 d := VGA; r := VGAHI;
 InitGraph(d,r,'');
 err := GraphResult; //Проверяем результат последней операции с графикой 
 if (err <> 0) then  //Не ноль означает ошибку!
  begin              // Сообщение об ошибке и досрочный выход из программы 
   writeln('Ошибка в инициализации графики!!!');
   delay(1000);
   halt;
  end;
 ClearDevice;
end;

{ Процедура рисования оси х и у }
procedure Ris_osey;
var                // Объявляем переменные             
 j,j1  : integer;
 s     : string;
 j2    : integer;
begin
 setcolor(1);      // Выбираем цвет
 line(0,0,0,getmaxy - 1);  // Рисуем ось Y
 line(0,getmaxy - 400,getmaxx,getmaxy - 400); // Рисуем ось X
 line(0,0,2,2);     // Стрелка оси Y
 line(getmaxx,getmaxy - 400,getmaxx - 2,getmaxy - 398); //Стрелка оси X вверх
 line(getmaxx,getmaxy - 400,getmaxx - 2,getmaxy - 402); //Стрелка оси X низ
 setcolor(2);
 outtextxy(3,0,'y'); // Обозначение оси У
 outtextxy(getmaxx - 7,getmaxy - 398,'x'); // Обозначение оси X


 { разметка оси Y }
 j1 := 48; // Максимальная шкала оси Y

 j2 := -4; // Минимальное обозначение цифры шкалы оси Y
 for j := 48 downto 1 do // Цикл разметки оси Y
  begin
   line(0,j*10,2,j*10); // Шкала оси Y
   if (j = j1) then
    begin
     Str(j2, s);// Преобразуем переменную j2 в строковый формат
     if (j2 <> 0) then outtextxy(3,j*10 - 2,s); // Координаты цифр шкалы Y
     j2 := j2 + 1; // Значение цифр шкалы увеличиваем на 1
     j1 := j1 - 10; // Значение штриха шкалы уменьшаем на 10
    end;
  end;
{ разметка оси X}
 j1 := 60; // Максимальная шкала оси X

 j2 := 6; // Минимальное обозначение цифры шкалы оси X
 for j := 64 downto 0 do // Цикл разметки оси X

  begin
   line(j*10,getmaxy - 398,j*10,getmaxy - 402); // Шкала оси X
   if (j = j1) then
    begin
     Str(j2, s); );// Преобразуем переменную j2 в строковый формат
     outtextxy(j*10,getmaxy - 415,s); // Координаты цифр шкалы X
     j2 := j2 - 1; // Значение цифр шкалы уменьшаем на 1
     j1 := j1 - 10; // Значение штриха шкалы уменьшаем на 1
    end;
  end;
end;

{ Процедура рисования графика функции }
procedure Ris_graph;
var              // Объявляем переменные                         
 j   : integer;
 x,y : integer;
begin
 setcolor(3); // Выбираем цвет
 x := trunc(tabl[1].x * 100); //Получаем координату X точки
 y := trunc(tabl[1].y * 100); //Получаем координату Y точки
 if (y < 0) then y := y * -1;
 y := y + 80;
 moveto(x,y); // Перемещаем курсор в точку(x;y)
 for j := 2 to 35 do //Цикл по всем значениям аргумента
  begin
   x := trunc(tabl[j].x * 100); //Получаем координату X точки
   y := trunc(tabl[j].y * 100) * -1 + 80; //Получаем координату Y точки
   lineto(x,y); // Чертим линию в точку(x;y)
   moveto(x,y); // Перемещаем курсор в точку(x;y)
  end;
end;

{ Процедура вывода таблицы значений на экран }
procedure List_table;
var               // Объявляем переменные                            
 j  : integer;
 s  : string;
 j2 : integer;
begin
 setcolor(4); // Выбираем цвет
 j2 := 110; // Сдвиг по оси Y
 outtextxy(490,j2 - 20,'---------------'); // Рисуем горизонтальную линию
 outtextxy(490,j2 - 10,'|  x'); // Рисуем ячейку «Х»

 outtextxy(540,j2 - 10,'|   y   |'); // Рисуем ячейку «У»
 outtextxy(490,j2,'---------------'); // Рисуем горизонтальную линию
 for j := 1 to 35 do // Цикл по всем значениям аргумента
  begin
   Str(tabl[j].x:3:2,s); // Преобразуем значение аргумента в строковый тип 
   s := '| ' + s; // Добавим вертикальную границу ячейки к значению аргумента
   outtextxy(490,j2 + 10,s); // Рисуем ячейку аргумента
   Str(tabl[j].y:3:2, s); // Преобразуем значение функции в строковый тип
   if (tabl[j].y < 0) then s := '| ' + s + ' |' // Если значение функции    //отрицательное, вертикальные границы прочертить по краям значения, если
    else s := '|  ' + s + ' |'; // положительное – добавить пробел слева
   outtextxy(540,j2 + 10,s); // Рисуем ячейку функции
   j2 := j2 + 10; // Сдвиг по оси Y
  end;
 outtextxy(490,j2 + 10,'---------------'); // Рисуем горизонтальную линию,
// завершающую таблицу
end;
begin
 { заполняем таблицу значениями функции }
 tabl[1].x := st_x; // Начальное значение аргумента
 for i := 1 to 35 do //Цикл по всем значениям аргумента
  begin
   tabl[i].y := ln(tabl[i].x - 2); // Значение функции
   tabl[i].y := round(tabl[i].y * 100 + 0.5) / 100; // Округляем значение 
   if(i = 35)then break; // Если счётчик равен последнему значению - прервать
   tabl[i + 1].x := tabl[i].x + h;// Добавляем шаг к значению аргумента
  end;

 Graph_init; // Запуск графического режима 
 Ris_osey;   // Запуск рисования осей
 Ris_graph;   // Запуск рисования графика
 List_table;  // Запуск вывода таблицы значений

 repeat
 until keypressed; // Ожидание нажатия любой клавиши

 CloseGraph; // Выход из графического режима
end. // Завершение программы

что не так? у меня не хочет открывать , для начала выдает : модуль 'graph' не найдет , ставлю graphabc выдает ошибку не известное имя vga ... итд d := VGA; r := VGAHI;

Последнее редактирование 23.05.2019, 09:44 Зенченко Константин Николаевич (Старший модератор)

Состояние: Консультация закрыта

Ответ # 278220 от puporev (Профессионал)

Здравствуйте, mustang289!
Зайдите в каталог TP 7.0, в папку Units, скопируйте файл Graph.tpu и положите его в папку Bin.
Вот я исправил ошибки в коде, подредактировал чуть, во вложении pas, exe файлы и необходимые модули


Консультировал: puporev (Профессионал)
Дата отправки: 26.05.2019, 07:44

-----
 Прикрепленный файл: скачать (RAR) » [44.6 кб]

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 195689
puporev
Профессионал

ID: 401888

# 1

= общий = | 22.05.2019, 07:50 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
mustang289:

Напишите какой у Вас Паскаль. Видимо простой АВС или АВС.net?

mustang289
Посетитель

ID: 402696

# 2

= общий = | 22.05.2019, 07:59 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
puporev:

У меня просто, но походу это задание нужно выполнять в турбопаскале потому что в моем нету graph

puporev
Профессионал

ID: 401888

# 3

= общий = | 22.05.2019, 08:08 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата:
нужно выполнять в турбопаскале

Но если у вас нет его, то зачем Вам код в ТП, тем более что он у Вас уже есть.

mustang289
Посетитель

ID: 402696

# 4

= общий = | 22.05.2019, 08:12 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
puporev:

Код в турбопаскале ошибку выдаёт

puporev
Профессионал

ID: 401888

# 5

= общий = | 22.05.2019, 08:42 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
mustang289:

© Цитата:
модуль 'graph' не найдет

Тогда у Вас модуль graph не лежит в папке с программой. Зайдите в папку Units, скопируйте файл Graph.tpu и положите его в папку Bin.
Это все в каталоге ТР 7.0

puporev
Профессионал

ID: 401888

# 6

= общий = | 22.05.2019, 09:53 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
mustang289:

Вот я исправил ошибки в коде, подредактировал чуть, во вложении pas, exe файлы и необходимые модули

-----
 Прикрепленный файл:  скачать (RAR) » [44.6 кб]

Зенченко Константин Николаевич
Старший модератор

ID: 31795

# 7

= общий = | 23.05.2019, 10:37 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
puporev:

© Цитата: mustang289
Код в турбопаскале ошибку выдаёт

Это код FP, в ТР нет таких комментариев "//".
Если исправить комментарии и в 135 строке st_x на stx,то получается такой результат.

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

-----
 Прикрепленный файл (кликните по картинке для увеличения):

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.15745 сек.

© 2001-2019, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.77 от 31.05.2019
Версия JS: 1.34 | Версия CSS: 3.35