Вывод координат разными цветами - 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д