Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Вопрос по Pascal  (Прочитано 8002 раз)
0 Пользователей и 1 Гость смотрят эту тему.
ymhuk
Помогающий

ru
Offline Offline
Пол: Мужской

« : 19-04-2006 21:20 » 

Препод брату дал задание (дословно):
"Создать пользовательскую функцию, которая для заданного числа ищет все ее делители.
С помощью этой функции искать у двух чисел ощий делитель."

Помоему препод что-то гонит как можно с помощью ф-ии найти все делители для числа,
если она может выдавать только отдельные числа, а не массив как это нужно.
Можно сделать, чтобы ф-я находила поочереди все делители, а затем сравнивать, но это не подходит по условию.

Может я гоню? Не понял  Поправьте меня, если это так.
Думаю с помощью процедуры задачу сделать без проблем.
Записан

Знаешь мало - поучись, знаешь много - поделись.
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 20-04-2006 06:51 » 

Ну почему же?
У функции могут быть и параметры, а фунция будет возращать результат поиска (нашел - не нашел)(true  or false), а все осталное в параметре.
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
zubr
Модератор

by
Offline Offline
Пол: Мужской

« Ответ #2 : 20-04-2006 07:32 » 

Можно сделать чтобы результатом функции был заранее объявленный тип массива или связанный список.
Записан
Alf
Гость
« Ответ #3 : 20-04-2006 07:46 » 

"Создать пользовательскую функцию, которая для заданного числа ищет все ее делители.
С помощью этой функции искать у двух чисел ощий делитель."

Помоему препод что-то гонит как можно с помощью ф-ии найти все делители для числа,
если она может выдавать только отдельные числа, а не массив как это нужно.

Гонит однозначно, но в другом аспекте.

Конечно, можно заставить функцию найти все делители числа и сложить их в массив. Но совершенно глупо использовать эту функцию для поиска общего делителя чисел. Есть алгоритм Евклида для поиска наибольшего общего делителя (НОД), который справится с этой задачей куда быстрее, тем более что знать о его существовании просто необходимо.

С таким же успехом можно перемножать числа сложением в цикле или складывать - инкрементом.
Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #4 : 20-04-2006 09:41 » 

Alf, просто у тебя подход практический, ты думаешь как оптимально решить озвученную задачу и критикуешь предоставленный способ её решения. а у препода подход - теоретический Улыбаюсь ему плевать, как оптимально решается сама эта задача, потому что на самом деле, у него задача совсем другая - показать человеку способы работы с функциями и динамическими массивами. и на каком примере, в общем-то, пофигу. с точки зрения методики обучения - пример нормальный. пусть хоть делители ищет, хоть канализационные люки инкрементом считает, это несущественно, в общем-то. для препода Ага но это оффтоп.

ymhuk, ну так в чём проблема-то? напиши функцию, которая возвращает массив из делителей (либо пустой массив), и дальше по двум таким массивам ищи одинаковые числа и засовывай в третий массив. результат - на экран. по-моему, всё достаточно прозрачно Улыбаюсь
Записан

PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #5 : 20-04-2006 10:20 » 

Цитата
если она может выдавать только отдельные числа
это не верно.
Записан

Удачного всем кодинга! -=x[PooH]x=-
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 20-04-2006 10:53 » 

не нравятся мне конструкции
massiv := func(number);
ближе
result := func(number, massiv);
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
ymhuk
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #7 : 20-04-2006 20:56 » 

Цитата
фунция будет возращать результат поиска (нашел - не нашел)(true  or false)
Вариант не подходит по заданию.
Цитата
ymhuk, ну так в чём проблема-то? напиши функцию, которая возвращает массив из делителей (либо пустой массив), и дальше по двум таким массивам ищи одинаковые числа и засовывай в третий массив. результат - на экран. по-моему, всё достаточно прозрачно
я почему-то не знаю как возвратить функцией массив.  А вообще этот метод лежит на поверхности и с помощью процедуры я это уже сделал - работает идеально.  Улыбаюсь
Записан

Знаешь мало - поучись, знаешь много - поделись.
zubr
Модератор

by
Offline Offline
Пол: Мужской

« Ответ #8 : 21-04-2006 07:57 » 

Цитата
я почему-то не знаю как возвратить функцией массив.  А вообще этот метод лежит на поверхности и с помощью процедуры я это уже сделал - работает идеально.
Код:
type
  MyMassiv=Array of integer;

function Exampl(param1:Integer; param2:Integer):MyMassiv;
begin
 SetLength(Result, 100);
 //..................
end;
Записан
ymhuk
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #9 : 21-04-2006 21:19 » 

zubr,  спасибо! Я и не знал, что это так просто.  Улыбаюсь
Записан

Знаешь мало - поучись, знаешь много - поделись.
Scorp__)
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #10 : 25-04-2006 18:34 » 

не нравятся мне конструкции
massiv := func(number);
ближе
result := func(number, massiv);

Sla, не переживай, компилятор так и сделает  Отлично. А уж как это будет написано на языке высокого уровня не столь важно.
Записан

- А Вы сами-то верите в привидения?
- Конечно, нет, - ответил лектор и медленно растаял в воздухе.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines