Вывод координат разными цветами - Free Pascal
Формулировка задачи:
Добрый день!
Помогите пожалуйста с программой. Есть строка вида: "12,34 34,56, 76,2"
Где первое число(до запятой) это номер строки, а второе число это номер символа в этой строке.
В одной процедуре мы получаем координаты символа и идём в другую процедуру, где по заданным координатам мы должны с помощью графического модуля(init Graph) Вывести строку одного цвета(первая координата), и в этой строке символ(вторая координата) должен быть выделен другим цветом. Подскажите как это сделать
Procedure Draw(var numstr,numsto:string); var f:text; str,strV:string; count:integer; begin assign(f,str0); reset(f); count:=0; while not Eof(f) do begin read(f,str); count:=count+1; if count=numstr then for i:=1 to length(str) do begin if str[i]=numsto then else strV:=strV+str[i]; end; end; end; Procedure Search_Err(var str,str1:string); const D=[',',' ']; var n,count:integer; numstr,numsto:string; begin n:=1; count := WordCount(str1, D); while n < Count do begin numstr:=ExtractWord(n, str1, D); numsto:=ExtractWord(n + 1, str1, D); inc(n,2); Draw(numstr,numsto); end; end;
Решение задачи: «Вывод координат разными цветами»
textual
Листинг программы
uses graph; Procedure Search(var str:string;var numstr,numsto:integer); var c:integer; begin val(copy(str,1,pos(',',str)-1),numstr,c); delete(str,1,pos(',',str)); val(copy(str,1,pos(' ',str)-1),numsto,c); delete(str,1,pos(' ',str)); end; Procedure Draw(var f:text;numstr,numsto,k:integer); var str,str1:string; i,j:integer; begin reset(f); i:=0; while not Eof(f) do begin readln(f,str); i:=i+1; if i=numstr then begin j:=1; str1:=str; end; end; close(f); for i:=1 to length(str1) do begin if i=numsto then setcolor(12)else setcolor(10); outtextXY(i*8,k,str1[i]); end; end; var s:string; gd,gm,n,m,k:integer; f:text; begin s:='3,12 5,13 8,12';{в строке должны быть номера строк, которые есть в файле и номера символов которые есть в строке} s:=s+' '; gd:=0; initgraph(gd,gm,''); settextstyle(0,0,1);{шрифт по умолчанию, горизонтальный, шприна символов=8} k:=20;{координата Y для первой строки} assign(f,'1.txt'); while s<>'' do begin Search(s,n,m); Draw(f,n,m,k); k:=k+20; end; readln end.
Объяснение кода листинга программы
Этот код использует функцию для поиска и отображения чисел в тексте, а затем использует эти числа для отображения текста в графическом режиме. Вот список действий, которые выполняет код:
- Подготавливает файл для чтения и записывает его в переменную
f
. - Создает переменные
str
,str1
,i
,j
,k
,gd
,gm
,n
,m
и устанавливает их значения. - Устанавливает начальную позицию X и Y для отображения текста.
- Проверяет, не пуст ли файл, и читает его построчно, пока он не закончится.
- Когда он находит строку, которую нужно отобразить, он сохраняет ее в переменную
str1
и устанавливает начальное значение X и Y для отображения текста. - Затем он проходит по каждому символу в строке и отображает его в графическом режиме с помощью функции
outtextXY
. - После завершения отображения текста он увеличивает значение Y на 20 для перехода к следующей строке.
- Когда он доходит до конца файла, он завершает графический дисплей с помощью функции
readln
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д