Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
 Аватар для Tiga
3 / 3 / 3
Регистрация: 24.05.2011
Сообщений: 39

TextABC

02.10.2011, 21:17. Показов 2427. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Возникла проблема при попытки отобразить в графическом окне координаты нарисованного треугольника, треугольник(и) рисуются а вот строку с их координатами ну никак не хочет. Вот такой участок кода:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//=================------------------//
     MoveTo(x0,y0);
//=================------------------//
     for i:=1 to n do
     begin
         x1:=x0+30;
         LineTo(x1,ary[i]);
//=================------------------//
             if(ary[i]<y0)then
             begin
                  Str(ary[i],strH);
                  TextF:=TextABC.Create(x1,(ary[i]-10),20,clRed,strH);
             end;
             if(ary[i]>y0)then
             begin
                  Str(ary[i],strH);
                  TextF:=TextABC.Create(x1,(ary[i]+10),20,clGreen,strH);
             end;
//=================------------------//
         x1:=x1+30;
         LineTo(x1,y0);
         LineTo(x0,y0);
         x0:=x1;
         MoveTo(x0,y0);
     end;
//=================------------------//
изначально y0=80 a x0=0
в ary[i] хранятся вершины треугольников и нужно, чтоб над ними выводились их координаты.
Я с ооп в паскале не особо дружу, подскажите где ошибка.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.10.2011, 21:17
Ответы с готовыми решениями:

Разбиение на строчки в TextABC
Нужно запихать в TextABC огромную массу текста. Он запихивается, но выглядит, как одна строчка. Есть какой-то способ уместить его в...

Таблица умножения от 1 до 5 с использованием textABC
Добрый день. Прошу помощи - необходимо написать программу, которая выводит таблицу умножения от 1 до 5. С использованием операторов write и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
03.10.2011, 08:27
Весь-то код секретный? Тогда на форум экстрасенсов.
0
 Аватар для Tiga
3 / 3 / 3
Регистрация: 24.05.2011
Сообщений: 39
03.10.2011, 09:58  [ТС]
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
program Treangls;
uses ABCObjects, GraphABC;
//=================------------------//
var
MaxY, k, i, n, y0, x0, x1: integer;
ary:array[1..100] of integer;
strH:string;
TextF:TextABC;
//=================------------------//
begin
//=================------------------//
     x0:=0;
     y0:=250;
     x1:=x0;
//=================------------------//
     writeln('Enter number of treangls: ');
     readln(n);  //Cuantity of treangls
//=================------------------//
     for i:=1 to n do
     begin
         writeln('Enter ',i,' top of treangl: ');
         read(ary[i]);   //Tops
     end;
//=================------------------//
     MoveTo(x0,y0);
//=================------------------//
     for i:=1 to n do
     begin
         x1:=x0+30;
         LineTo(x1,ary[i]);
//=================------------------//
             if(ary[i]<y0)then
             begin
                  Str(ary[i],strH);
                  TextF:=TextABC.Create(x1,(ary[i]-10),20,clRed,strH);
             end;
             if(ary[i]>y0)then
             begin
                  Str(ary[i],strH);
                  TextF:=TextABC.Create(x1,(ary[i]+10),20,clGreen,strH);
             end;
//=================------------------//
         x1:=x1+30;
         LineTo(x1,y0);
         LineTo(x0,y0);
         x0:=x1;
         MoveTo(x0,y0);
     end;
//=================------------------//
     MaxY:=abs(ary[1]-y0);
     k:=1;
     for i:=1 to n do
     begin
         if((abs(ary[i]-y0))>MaxY)then
            begin
                 MaxY:=abs(ary[i]-y0);
                 k:=i;
            end;
     end;
//=================------------------//
     writeln('Maximal height have ',k,' triangle with height ',MaxY );
end.

Вот, если поможет.
В конце находится и выводится высота наибольшего треугольника.
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
03.10.2011, 10:20
 Комментарий модератора 
Пользуйтесь тегами PASCAL


Добавлено через 20 минут
Не понял я смысла твоей программы, вот привел ее к рабочему виду, но так и не понял.
Напиши что не так и точное условие твоей задачи.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
program Treangls;
uses crt,ABCObjects, GraphABC;
var MaxY, k, i, n, y0, x0, x1: integer;
    ary:array[1..100] of integer;
    strH,st:string;
    TextF:TextABC;
begin
x0:=0;
y0:=250;
x1:=x0;
writeln('Enter number of treangls: ');
readln(n);  //Cuantity of treangls
for i:=1 to n do
 begin
  writeln('Enter ',i,' top of treangl: ');
  read(ary[i]);   //Tops
 end;
hidecursor;
clearwindow;
MoveTo(x0,y0);
for i:=1 to n do
 begin
  x1:=x0+30;
  LineTo(x1,ary[i]);
  if(ary[i]<y0)then
   begin
    Str(ary[i],strH);
    TextF:=TextABC.Create(x1,(ary[i]-10),20,clRed,strH);
    end
  else if(ary[i]>y0)then
    begin
     Str(ary[i],strH);
     TextF:=TextABC.Create(x1,(ary[i]+10),20,clGreen,strH);
    end;
  x1:=x1+30;
  LineTo(x1,y0);
  LineTo(x0,y0);
  x0:=x1;
  MoveTo(x0,y0);
 end;
MaxY:=abs(ary[1]-y0);
k:=1;
for i:=1 to n do
 begin
  if((abs(ary[i]-y0))>MaxY)then
   begin
    MaxY:=abs(ary[i]-y0);
    k:=i;
   end;
 end;
Str(k,strH);
st:='Maximal height have '+strH;
Str(MaxY,strH);
st:=' triangle with height '+strH;
//strH:='Maximal height have ',k,' triangle with height '+strH;
TextF:=TextABC.Create(50,windowheight-40,20,clBlack,st);
end.
0
 Аватар для Tiga
3 / 3 / 3
Регистрация: 24.05.2011
Сообщений: 39
03.10.2011, 10:46  [ТС]
В целом нужно:
1)Из файла берутся данные
2)По этим данным(вершины треугольников) в графическом окне друг за другом относительно заданной оси на экране(y0) строятся друг за другом треугольники.
3)Вычисляется высота наибольшего треугольника от оси(y0).
4)Каждый треугольник закрашивается каким либо цветом.
5)Над вершинами треугольников выводится их высота.

Файл и закрашивание я в этой программе еще не реализовал, треугольники и вычисление наибольшей высоты сделал, на отображении координат в графическом окне застрял.
У меня с этим кодом в графическом окне строятся сами треугольники с введенными вручную координатами высот, но их координаты не отображаются.

Я так понимаю класс TextABC может в графическом окне(не в окне отладки) выводить на экран определенный текст, чего собственно и не происходит.

Собственно вот.
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
03.10.2011, 10:57
Цитата Сообщение от Tiga Посмотреть сообщение
чего собственно и не происходит.
Почему? У меня же выводит текст нормально. Только я не понял для чего именно TextABC; можно и и без модуля ABCObjects, обычным textout(x,y,s);
0
 Аватар для Tiga
3 / 3 / 3
Регистрация: 24.05.2011
Сообщений: 39
03.10.2011, 11:04  [ТС]
Хм странно, у меня кроме черных треугольников на экране ничего не отображается, попробую текстоут.
Извиняюсь за свою недостаточную компитентность по паскалю, я больше по части асм\срр.
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
03.10.2011, 11:05
Вот это непонятно
2)По этим данным(вершины треугольников) в графическом окне друг за другом относительно заданной оси на экране(y0) строятся друг за другом треугольники
Координаты вершин какими могут быть?
Треугольники произвольные? Или равносторонние, равнобедренные?
В произвольном треугольнике 3 высоты, нужно максимальную из них?
Основание треугольника параллельно оси Х?
Основания треугольников рисуются на оси Х?
Короче одни вопросы, по такому условию нельзя писать программу. Либо оно тупо составлено, либо Вы его не точно изложили.

Добавлено через 37 секунд
Tiga, Так Вы мой код скопируйте в окно АВС и запустите.
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
03.10.2011, 11:08
У меня выводит так.
Миниатюры
TextABC  
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
03.10.2011, 11:09
Написано конечно неправильно, это видно из картинки, но это уже другие проблемы.
0
 Аватар для Tiga
3 / 3 / 3
Регистрация: 24.05.2011
Сообщений: 39
03.10.2011, 11:14  [ТС]
Равнобедренные треугольники, основание лежит на оси(y0), именно как отображено на вашей схеме.
Задается координата по у для 2й вершины(ary[i])
Такое у вас получилось без редактирования моего кода?
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
03.10.2011, 11:25
Цитата Сообщение от Tiga Посмотреть сообщение
Такое у вас получилось без редактирования моего кода?
Без редактирования у меня вообще ничего не выводило кроме строки

Цитата Сообщение от Tiga Посмотреть сообщение
Maximal height have ',k,' triangle with height ',MaxY
Добавлено через 3 минуты
Наверное тогда так
Равнобедренные треугольники, основание лежит на оси Х
Тогда должны задаваться и координаты х1,х3 вершин основания? Или только координата у2, а длины оснований у всех равны?
0
 Аватар для Tiga
3 / 3 / 3
Регистрация: 24.05.2011
Сообщений: 39
03.10.2011, 11:31  [ТС]
Получается вот такой вариант.

треугольники почему то разрываются, при использовании текстоут такой же эффект.
Миниатюры
TextABC  
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
03.10.2011, 11:36
Это потому что координата вершины не входит на экран.
Для тестирования сделай ось Х внизу окна и не вводи значения больше высоты окна.
1
 Аватар для Tiga
3 / 3 / 3
Регистрация: 24.05.2011
Сообщений: 39
03.10.2011, 11:37  [ТС]
Все разобрался, после того как создавалось текстовое поле курсор смещался с координат x1,ary[i], MoveTo(x1,ary[i]) спасло.
Спасибо за подсказку с crt.
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
03.10.2011, 11:38
Если координаты положительные, то ось всегда должна быть внизу, оставить немного места для вывода результата. А для корректного вывода треугольников нужно найти максимальную высоту и определить вертикальный масштаб.
my:=(y0-50)/max;
0
 Аватар для Tiga
3 / 3 / 3
Регистрация: 24.05.2011
Сообщений: 39
03.10.2011, 12:09  [ТС]
Все верно получилось, примерно такой вывод и ожидался, спасибо.
Миниатюры
TextABC  
1
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
03.10.2011, 12:13
Вот и молодец!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru