Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
Madrunner
1

Как отправить аргументы в подпрограмму

30.08.2012, 07:41. Показов 1475. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток.

Проблема такая, есть запись с 10 (например) полями. Есть динамический массив этих записей.
Требуется создать подпрограмму сортировки записей в массиве по любому из полей.
Писать 10 раз код для 10 разных полей нецелесообразно. Каким образом передать в подпрограмму
название поля в виде аргумента?

Заранее спасибо
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.08.2012, 07:41
Ответы с готовыми решениями:

Создание функции, формирующую предложение из аргументов функции, аргументы . Аргументы - переменное число
Короче, вот бы всё норм. Хочу соединять, но он мне выдаёт ошибку, когда использую strcat. Не могу...

Вычислить значение выражения. Написать подпрограмму-процедуру и подпрограмму-функцию
Даны действительные s,t. Вычислить \frac{{h}^{4}(s,t)+h(1,{s}^{2}+{t}^{2})}{1+{h}^{2}(st+1)}, ...

Составить подпрограмму умножения одномерных матриц и подпрограмму их сравнения
Составить подпрограмму умножения одномерных матриц и подпрограмму их сравнения.(подпрограммы...

Составить подпрограмму умножения одномерных матриц и подпрограмму их сравнения
Заранее спасибо)

2
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
30.08.2012, 08:57 2
Лучший ответ Сообщение было отмечено как решение

Решение

Поле записи аргументом отправить нельзя, только всю запись, но аргументом можно послать функцию, признак сортировки. Вот накидал я небольшой пример для двух полей.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
program Project2;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils;
type zap=record
         nam:string;
         kol:integer;
         end;
     mas=array[1..10] of zap;
     func=function(z1,z2:zap):boolean;//тип функции
{$F+}
function nam(z1,z2:zap):boolean;
begin
nam:=z1.nam>z2.nam;//по возрастанию поля nam
end;
function kol(z1,z2:zap):boolean;
begin
kol:=z1.kol>z2.kol;//по возрастанию поля kol
end;
procedure sort(var a:mas;n:byte;f:func);
var i,j:byte;
    z:zap;
begin
for i:=1 to n-1 do
for j:=i+1 to n do
if f(a[i],a[j]) then
 begin
  z:=a[i];
  a[i]:=a[j];
  a[j]:=z;
 end;
end;
var a:mas;
    n,i:byte;
begin
n:=3;
a[1].nam:='tttt';a[1].kol:=5;
a[2].nam:='oooo';a[2].kol:=3;
a[3].nam:='aaaa';a[3].kol:=1;
//сортировка по полю nam
sort(a,3,nam);
for i:=1 to 3 do
writeln(a[i].nam,' ',a[i].kol);
//сортировка по полю kol
sort(a,3,kol);
for i:=1 to 3 do
writeln(a[i].nam,' ',a[i].kol);
readln
end.
0
Madrunner
30.08.2012, 09:04 3
спасибо огромное, то, что доктор прописал
30.08.2012, 09:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.08.2012, 09:04
Помогаю со студенческими работами здесь

Составить подпрограмму умножения одномерных матриц и подпрограмму их сравнения
Составить подпрограмму умножения одномерных матриц и подпрограмму их сравнения. Буду очень...

Составить подпрограмму-процедуру для вычисления текущего значения s(x) с произвольным количеством итераций n и подпрограмму-функцию y(x).
помогите пожалуйста с написанием работы Решить задачу, используя подпрограмму-процедуру для...

Подпрограмму функции переделать в подпрограмму процедуры
program nik; uses crt; var n,y,x:integer; T:real; function factorial(k:integer):real; var...

Транслируются ли аргументы функции CoCreateInstance в аргументы функции DllGetClassObject?
НУ то есть я думаю должно быть понятно, о чём речь. В клиенте вызывается функция: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru