Название: Искусство программирования (задача 8) Отправлено: vimmax от Сентябрь 04, 2007, 02:47:33 Может и баян ;)
Назовите функцию, которая возвращает два значения. Название: Re: Искусство программиования (задача 8) Отправлено: tendervampire от Сентябрь 04, 2007, 03:33:11 С точки зрения терминологии - если функция возвращает структуру, состоящую из двух переменных, то считается, что это одно значение или два?
А возвращение через ссылку считаем? Название: Re: Искусство программиования (задача 8) Отправлено: vimmax от Сентябрь 04, 2007, 03:47:30 Нет, вариант со структурой неправильный.
И возвращение по ссылке тоже не подходит. Функция реально возвращает два значения типа int. Причем совершенно законно))) Название: Re: Искусство программиования (задача 8) Отправлено: tendervampire от Сентябрь 04, 2007, 03:57:26 Ну, не знаю. Побитово записать в один double два int'a, вернуть, разобрать обратно на два int'a :)
Название: Re: Искусство программиования (задача 8) Отправлено: vimmax от Сентябрь 04, 2007, 04:01:00 tendervampire - прикольный вариант!!! Мне очень понравился.
Но это не то что я имел ввиду. Название: Re: Искусство программиования (задача 8) Отправлено: Olorin от Сентябрь 04, 2007, 04:15:02 Таких функций много :)
Назовите функцию, которая возвращает два значения. Каждая функция, возвращающая результат типа bool, возвращает 2 значения: true если правда false если ложь. Название: Re: Искусство программиования (задача 8) Отправлено: vimmax от Сентябрь 04, 2007, 04:21:56 Olorin Нет)
Для переменной типа bool - True и False - это множество возможных значений. "-Какова вероятность, что на вас нападет маньяк? -50% на 50%, или нападет или не нападет!" Название: Re: Искусство программирования (задача 8) Отправлено: naxellar от Сентябрь 04, 2007, 10:12:22 vimmax, В каком языке функция? Нужно имя функции, что-ли? Уточни, а то не совсем ясно.
Название: Re: Искусство программирования (задача 8) Отправлено: vimmax от Сентябрь 05, 2007, 10:01:30 Вообще это библиотечная функция Unix систем.
Думаю ее можно вызвать из библиотеки на С, ASM, Kylix и т.д. Название: Re: Искусство программирования (задача 8) Отправлено: EvilMax от Сентябрь 05, 2007, 10:16:51 Какой-то странный вопрос. В том же Си можно написать функцию, использующую в качестве аргументов указатели и вернуть не только два, а сколько угодно значений. Ну а если нужен пример стандартной функции, возвращающей два (или больше) значений, так возьмите тот же scanf (и другие функции из этого семейства) - возвращает число успешно введенных и присвоенных значений, ну и сами введенные значения, конечно.
Название: Re: Искусство программирования (задача 8) Отправлено: vimmax от Сентябрь 06, 2007, 10:05:24 EvilMax - не-а. ;)
scanf возвращает в программу число успешно выведенных параметров - а это одна переменная типа int. Можно конечно пофилософствовать и сказать что параметры, выведенные на stdout - тоже есть возвращенные параметры, но это не та функция, которую я имел ввиду. Мой ответ с приколом, но вполне законный. Название: Re: Искусство программирования (задача 8) Отправлено: LazarusLong от Сентябрь 06, 2007, 10:31:27 Нихт фрштейн.... то есть функция реально возвращает два значения (возможно разных типов)?.... представляю себе её прототип....
Название: Re: Искусство программирования (задача 8) Отправлено: vimmax от Сентябрь 06, 2007, 10:35:40 LazarusLong - да, функция возвращает два значения типа int.
Просто вы с ней не встречались ))) Функция Unix систем. Используется в многопоточном программировании. Название: Re: Искусство программирования (задача 8) Отправлено: vimmax от Сентябрь 06, 2007, 05:00:30 НУ ???????
Название: Re: Искусство программирования (задача 8) Отправлено: EvilMax от Сентябрь 06, 2007, 07:05:07 НУ ??????? Ты случайно не про fork? Функция создает новый процесс путем клонирования родительского и возвращает PID в родителе и 0 в дочернем. Конечно, при условии, что дочерний процесс удалось создать. Название: Re: Искусство программирования (задача 8) Отправлено: vimmax от Сентябрь 06, 2007, 07:29:22 EvilMax - Ура, Ура, Ура !!! У нас победитель! +1.
Да, Короче функция fork дублирует процесс на два равнозначных процесса и возвращает pId процесса. Т.е. был у тебя один процесс, в нем вызвал fork - и теперь у тебя в памяти два абсолютно одинаковых процесса с разными pId - распараллеливание программы. А функция fork вернет pid для первого процесса, а во втором дублированном процессе вернет pId для второго процесса, т.е. функцию вызвал один раз - а получил два ответа, хоть и для разных процессов :P Название: Re: Искусство программирования (задача 8) Отправлено: EvilMax от Сентябрь 06, 2007, 07:40:35 Ясно. Вот только в дочернем процессе будет не PID, а 0. Вот отрывок из man fork:
RETURN VALUE On success, the PID of the child process is returned in the parent's thread of execution, and a 0 is returned in the child's thread of exe‐ cution. On failure, a -1 will be returned in the parent's context, no child process will be created, and errno will be set appropriately. Название: Re: Искусство программирования (задача 8) Отправлено: Olorin от Сентябрь 07, 2007, 03:03:21 И все же я не согласен. Вопрос надо было ставить корректнее.У тебя ж не сказано, что функция возвращает одновременно 2 рез-та.
Ты написал Может и баян ;) True и false - это тебе не рез-ты?Назовите функцию, которая возвращает два значения. |