Вывод координат разными цветами - 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.

Объяснение кода листинга программы

Этот код использует функцию для поиска и отображения чисел в тексте, а затем использует эти числа для отображения текста в графическом режиме. Вот список действий, которые выполняет код:

  1. Подготавливает файл для чтения и записывает его в переменную f.
  2. Создает переменные str, str1, i, j, k, gd, gm, n, m и устанавливает их значения.
  3. Устанавливает начальную позицию X и Y для отображения текста.
  4. Проверяет, не пуст ли файл, и читает его построчно, пока он не закончится.
  5. Когда он находит строку, которую нужно отобразить, он сохраняет ее в переменную str1 и устанавливает начальное значение X и Y для отображения текста.
  6. Затем он проходит по каждому символу в строке и отображает его в графическом режиме с помощью функции outtextXY.
  7. После завершения отображения текста он увеличивает значение Y на 20 для перехода к следующей строке.
  8. Когда он доходит до конца файла, он завершает графический дисплей с помощью функции readln.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.4 из 5
Похожие ответы