Есть ли в Pascal аналог шаблонов из C++ - Free Pascal

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

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

Есть ли в Pascal аналог Шаблонов из С++? Если да, то как, например, реализовать такую процедуру:
Листинг программы
  1. template< typename T >
  2. void sort( T array[], int size )
  3. {
  4. T t;
  5. for (int i = 0; i < size - 1; i++)
  6. for (int j = size - 1; j > i; j--)
  7. if (array[j] < array[j-1])
  8. {
  9. t = array[j];
  10. array[j] = array[j-1];
  11. array[j-1] = t;
  12. }
  13. }

Решение задачи: «Есть ли в Pascal аналог шаблонов из C++»

textual
Листинг программы
  1. {$mode objfpc}
  2. type
  3.   rec = record
  4.     A, B: integer;
  5.   end;
  6.  
  7. generic Swapper<T> =
  8. class
  9. type public
  10.   class procedure swap(var A, B: T); inline;
  11. end;
  12.  
  13. iSwapper = specialize Swapper<integer>;
  14. fSwapper = specialize Swapper<double>;
  15. rSwapper = specialize Swapper<rec>;
  16.  
  17. class procedure Swapper.swap(var A, B: T);
  18. var C: T;
  19. begin
  20.   C := A; A := B; B := C;
  21. end;
  22.  
  23. var
  24.   i1, i2: integer;
  25.   f1, f2: double;
  26.   r1, r2: rec;
  27.  
  28. begin
  29.   i1 := 4; i2 := 7;
  30.   writeln(i1, ' <-> ', i2);
  31.   iSwapper.swap(i1, i2);
  32.   writeln(i1, ' ', i2);
  33.  
  34.   f1 := 2.4; f2 := 5.7;
  35.   writeln(f1:0:2, ' <-> ', f2:0:2);
  36.   fSwapper.swap(f1, f2);
  37.   writeln(f1:0:2, ' ', f2:0:2);
  38.  
  39.   r1.A := 10; r1.B := 20;
  40.   r2.A := 40; r2.B := 76;
  41.   rSwapper.swap(r1, r2);
  42.   // тоже можешь напечатать содержимое записей, чтобы убедиться, что Swap работает...
  43. end.

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


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

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

14   голосов , оценка 3.5 из 5

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

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

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