Вывод координат разными цветами - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Добрый день! Помогите пожалуйста с программой. Есть строка вида: "12,34 34,56, 76,2" Где первое число(до запятой) это номер строки, а второе число это номер символа в этой строке. В одной процедуре мы получаем координаты символа и идём в другую процедуру, где по заданным координатам мы должны с помощью графического модуля(init Graph) Вывести строку одного цвета(первая координата), и в этой строке символ(вторая координата) должен быть выделен другим цветом. Подскажите как это сделать
Листинг программы
  1. Procedure Draw(var numstr,numsto:string);
  2. var
  3. f:text;
  4. str,strV:string;
  5. count:integer;
  6. begin
  7. assign(f,str0);
  8. reset(f);
  9. count:=0;
  10. while not Eof(f) do
  11. begin
  12. read(f,str);
  13. count:=count+1;
  14. if count=numstr then
  15. for i:=1 to length(str) do
  16. begin
  17. if str[i]=numsto then
  18. else
  19. strV:=strV+str[i];
  20. end;
  21. end;
  22. end;
  23. Procedure Search_Err(var str,str1:string);
  24. const
  25. D=[',',' '];
  26. var
  27. n,count:integer;
  28. numstr,numsto:string;
  29. begin
  30. n:=1;
  31. count := WordCount(str1, D);
  32. while n < Count do
  33. begin
  34. numstr:=ExtractWord(n, str1, D);
  35. numsto:=ExtractWord(n + 1, str1, D);
  36. inc(n,2);
  37. Draw(numstr,numsto);
  38. end;
  39. end;

Решение задачи: «Вывод координат разными цветами»

textual
Листинг программы
  1. uses graph;
  2. Procedure Search(var str:string;var numstr,numsto:integer);
  3. var c:integer;
  4. begin
  5. val(copy(str,1,pos(',',str)-1),numstr,c);
  6. delete(str,1,pos(',',str));
  7. val(copy(str,1,pos(' ',str)-1),numsto,c);
  8. delete(str,1,pos(' ',str));
  9. end;
  10.  
  11. Procedure Draw(var f:text;numstr,numsto,k:integer);
  12. var str,str1:string;
  13.     i,j:integer;
  14. begin
  15. reset(f);
  16. i:=0;
  17. while not Eof(f) do
  18.  begin
  19.   readln(f,str);
  20.   i:=i+1;
  21.   if i=numstr then
  22.    begin
  23.     j:=1;
  24.     str1:=str;
  25.    end;
  26.  end;
  27. close(f);
  28. for i:=1 to length(str1) do
  29.  begin
  30.   if i=numsto then setcolor(12)else setcolor(10);
  31.   outtextXY(i*8,k,str1[i]);
  32.  end;
  33. end;
  34. var s:string;
  35.     gd,gm,n,m,k:integer;
  36.     f:text;
  37. begin
  38. s:='3,12 5,13 8,12';{в строке должны быть номера строк, которые есть в файле
  39.                      и номера символов которые есть в строке}
  40. s:=s+' ';
  41. gd:=0;
  42. initgraph(gd,gm,'');
  43. settextstyle(0,0,1);{шрифт по умолчанию, горизонтальный, шприна символов=8}
  44. k:=20;{координата Y для первой строки}
  45. assign(f,'1.txt');
  46. while s<>'' do
  47.  begin
  48.   Search(s,n,m);
  49.   Draw(f,n,m,k);
  50.   k:=k+20;
  51.  end;
  52. readln
  53. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы