 |
Вітаю Вас, Гість · RSS |
 |
Розв’язування задач з теми "Процедури і функції"
|
kom_adm |
Дата: Нд, 29.11.2009, 21:33 | Повідомлення № 1 |
Ветеран спілкування
Повідомлень: 3760
| В даній темі пропоную розв’язувати задачі з розділу "Процедури і функції" Будемо писати цікаві умови задач і хто знає, пише розв’язок. Обов’язкове правило теми: розв’язок повинен містити текст програми на мові програмування Паскаль або іншій. Допускаються коментарі щодо розв’язку, блок-схеми, НАМ. Важливо писати програми максимум оптимально. Не можна публікувати умови наступної задачі до тих пір, поки не буде розв’язана задана автором повідомлення задача. Прохання виконувати дане правило, інакше це прирівнюватиметься до порушень правил форуму. Не скупіться ділитись досвідом, роблячи тим самим внесок в розвиток форуму! Шановні форумчани! Повідомлення, які не відповідають темі або несуть некорисний зміст будуть видалятися без попередження!!!
|
|
| | |
Nevirkovets |
Дата: Пн, 25.01.2010, 14:41 | Повідомлення № 16 |
Написав MifTests
Повідомлень: 266
| Quote (dpi) Может xor вместо or? здається ні!!! якщо (a>=b+c) або (b>=a+c) або (c>=a+b) тоді неможна побудувати трикутник. Тобто одна із сторін більша за суму інших
|
|
| | |
volodschool2 |
Дата: Пн, 25.01.2010, 21:00 | Повідомлення № 17 |
Досвідчений учасник
Повідомлень: 1585
| Quote (Ковальчук_Олександр) Будемо писати цікаві умови задач і хто знає, пише розв’язок. Так де ж ті цікаві задачі? З трикутником погрались, і на цьому зупинимось? Чи продовжимо обговорювати "глобальні проблеми розвитку освіти"=="товкти воду в ступі"?
|
|
| | |
alex |
Дата: Пн, 25.01.2010, 21:38 | Повідомлення № 18 |
Активний учасник
Повідомлень: 586
| Шановний volodschool2. Пропоную http://www.olymp.vinnica.ua/ Виберіть розділ ЗАДАЧІ ДЛЯ ПОЧАТКІВЦІВ. Там же є можливість перевірити правильність розвязку.
|
|
| | |
volodschool2 |
Дата: Пн, 25.01.2010, 21:44 | Повідомлення № 19 |
Досвідчений учасник
Повідомлень: 1585
| Quote (alex) Виберіть розділ ЗАДАЧІ ДЛЯ ПОЧАТКІВЦІВ. Дякую. Якби я хотів перевірити себе, я знайшов би спосіб це зробити.
|
|
| | |
alex |
Дата: Пн, 25.01.2010, 22:57 | Повідомлення № 20 |
Активний учасник
Повідомлень: 586
| Quote (volodschool2) Якби я хотів перевірити себе, я знайшов би спосіб це зробити. Так я ж не про Ваш рівень знаннь, а про цікаві задачі. Як на мене вони хоч і прості, але цікаві.
|
|
| | |
dpi |
Дата: Вт, 26.01.2010, 17:15 | Повідомлення № 21 |
Досвідчений вчитель
Повідомлень: 1438
| Quote (Nevirkovets) здається ні!!! якщо (a>=b+c) або (b>=a+c) або (c>=a+b) тоді неможна побудувати трикутник. Тобто одна із сторін більша за суму інших Прошу прощения, ошибся с цитатой В этой строке if (a=b) or (b=c) or (c=a) then надо xor
|
|
| | |
filnick |
Дата: Ср, 27.01.2010, 17:18 | Повідомлення № 22 |
Мудрий вчитель
Повідомлень: 2238
| Потрібна консультація з реалізації програми на Паскалі. У заданій програмі вже описано близько трьох десятків процедур, кожна з яких малює прапор якоїсь країни. Ідентифікатори цих процедур мають імена, відповідно до прапора країни (наприклад, procedure UKR, procedure RUS, procedure FRA і т.д.). Елементами рядкового масиву Y є назви країн (записані як і імена процедур RUS, ITA, UKR...). Вибираються будь-які країни з масиву Y[i] - повинні бути намальовані їх прапори з відповідних процедур. Питання. Як пов'язати елемент масиву з іменем процедури? Чи можливо це зробити без оператору вибору case?
|
|
| | |
Bandalak |
Дата: Ср, 27.01.2010, 18:16 | Повідомлення № 23 |
Лідер форуму
Повідомлень: 6327
| Quote (filnick) Чи можливо це зробити без оператору вибору case? Можна послідовними IF.
|
|
| | |
Комарик |
Дата: Ср, 27.01.2010, 19:27 | Повідомлення № 24 |
Прописаний назавжди
Повідомлень: 228
| Quote (filnick) Чи можливо це зробити без оператору вибору case? а в чому проблема? чим case погано?
|
|
| | |
vitert |
Дата: Ср, 27.01.2010, 22:21 | Повідомлення № 25 |
Тут живе...
Повідомлень: 174
| Quote (filnick) Як пов'язати елемент масиву з іменем процедури? Чи можливо це зробити без оператору вибору case? Перша думка яка приходить, зробити процедури зовнішніми, окремими файлами, і звертатися до них через ім'я фала яке буде утворюватись із рядкової змінної, назва процедури у всіх фалах однакова а імена фалів відповідають країнам, правда зараз не згадаю чи це в паскалі працює?
Відредаговано: vitert - Ср, 27.01.2010, 22:26 |
|
| | |
filnick |
Дата: Ср, 27.01.2010, 22:39 | Повідомлення № 26 |
Мудрий вчитель
Повідомлень: 2238
| Quote (Комарик) а в чому проблема? чим case погано? case N of 1: UKR; 2: POL; 3: RUS; ...... 30: CUB; вимагає зробити прив'язку до цілого N, а потрібно до рядкового Y.Додано (27.01.2010, 22:39) ---------------------------------------------
Quote (vitert) зробити процедури зовнішніми, окремими файлами, і звертатися до них через ім'я фала яке буде утворюватись із рядкової змінної, назва процедури у всіх фалах однакова а імена фалів відповідають країнам, Приблизно такий же спосіб я і планував, але виникають проблеми. Зокрема, як текст зчитаний з файлу, компілятор прийме за процедуру?
|
|
| | |
vitert |
Дата: Ср, 27.01.2010, 23:40 | Повідомлення № 27 |
Тут живе...
Повідомлень: 174
| Quote (filnick) вимагає зробити прив'язку до цілого N, а потрібно до рядкового Y. Це в принципі не проблема, можна використовувати не значення елемента масиву а його номер який однозначно відповідає певній країні, це якщо у вас не категорично лише по рядку. Quote (filnick) Зокрема, як текст зчитаний з файлу, компілятор прийме за процедуру? Ні я писав не про теткстовий файл а про звернення однієї програми до іншої, як не внутрішньої підпрограми а зовнішньої (не стандартної а користувача), тільки чи в паскалі це працює і як це прописувати, якщо працює?
Відредаговано: vitert - Ср, 27.01.2010, 23:46 |
|
| | |
volodschool2 |
Дата: Чт, 28.01.2010, 12:06 | Повідомлення № 28 |
Досвідчений учасник
Повідомлень: 1585
| Quote (filnick) Питання. Як пов'язати елемент масиву з іменем процедури? Чи можливо це зробити без оператору вибору case? Задача дійсно цікава. А розв’язати її можна з використанням змінних процедурного типу з використанням ключа компілятора {$F+}. Наприклад так: {$F+} Var P: Procedure; Ось приклад задачки, в якій використовується процедурний тип змінних. Type DemoProcType = Procedure(a, b: Word); Var P1, P2: DemoProcType; {$F+} Procedure Add(A, B: Word); Begin WriteLn( 'a + b = ', A + B ) End; Procedure Sub(A, B: Word); Begin WriteLn( 'a - b = ', A - B ) End; {$F-} BEGIN P1 := Add; P2 := Sub; P1(1, 1); P2(2, 2); END. Словом, в даній задачі доведеться присвоїти значення елементу масиву змінній процедурного типу і виконати цю процедуру.
Відредаговано: volodschool2 - Чт, 28.01.2010, 12:31 |
|
| | |
filnick |
Дата: Чт, 28.01.2010, 16:53 | Повідомлення № 29 |
Мудрий вчитель
Повідомлень: 2238
| Quote (volodschool2) розв’язати її можна з використанням змінних процедурного типу з використанням ключа компілятора {$F+}. Дуже подібно на оптимальний варіант. Сьогодні перевірю. Шановний, volodschool2, вдячний за ідею.
|
|
| | |
zakudon34 |
Дата: Пн, 10.03.2014, 15:25 | Повідомлення № 30 |
Новий користувач
Повідомлень: 1
| [admin]Мы не выполняем домашних заданий :)[/admin]
|
|
| |
© Форум інформатиків України, 2007-2021.  |