Извесно что в некоторые паскалевские процедуре ор функции, можно вводить разные по типу вводные данные или большее количество. Подскажите как это организовать. Если нельзя средствами паскаль, то можно и на ассемблере.
Известно, что некоторые Паскаль-программы используют циклы (for в частности)... Твой вопрос сводится к тому, можно ли написать свой, новый вариант цикла (ну, например, For работающий с управляющей переменной типа Real).
Поймите уже (сколько раз говорилось - не перечесть): Write/WriteLn, Inc и Dec - не процедуры, а нечто вроде макросов.
Может как вариант сдесь имеется в виду "разные по типу" формальные параметры ПП?!
Procedure ...(Mas : array of ...);
for i := 0 to High(Mas) do...
Открытый массив не дает возможности передавать разные по типу параметры. Только одного типа. Кроме всего прочего, для того чтобы передать open array в подпрограмму, надо описать переменную соответствующего типа, т.е, ты не можешь сделать:
procedure p(arr: array of integer);
begin
...
end;
...
p(1, 2, 3);
p(1, 2);
...
var a: array[1 .. 3] of integer;В чем выигрыш?
...
{ заполнить массив A }
p(a);
Блин... Ты прочти, что автор темы хочет... Мало ли, что можно делать средствами Паскаля. Можно, например, организовать передачу параметров так, как сделано в функции NewMenu в TurboVision, когда создание меню любой сложности записывается в вызове одной функции. Но это же не значит, что можно реализовать аналог C-шного
void f(int a, ... ) {
/* собственно, что угодно */
}
// и так:
f(1, 2, 4);
// и вот так:
f(1, "a", 1.1, 10, "hello, world");
volvo
Пожалуйста можешь написать подробнее о методе для С, а то я его забыл упамануть.
Да хотелось бы подробнее обьяснить, что я всетаки имел ввиду. Тогда дам пример.
write('Hello!!!');
writeln('i = ', i);
concat(str1, str2);
write(file, i);
writeln(file, i);
concat(str1, str2, str3, ..., strn);
Еще раз: на паскале так не сделаешь!
Если подойдут и другие языки - напиши конкретно, КАКИЕ!
На счет C варианта,например со строкой,имитирует printf( с типом Int):
void small(char *cmessage, ...) {
int numper = 0;
va_list ell;
int dformat = 'd';
char *pchar;
pchar = strchr(cmessage,dformat);
while(*++pchar != '/0') {
pchar++;
pchar = strchr(pchar,dformat);
numper++;
}
cout<< "Выводим чисел " << numper;
va_start(ell,cmessage);
while(numper--)
cout << va_arg(ell,int);
va_end(ell);
}