Вт, 26.09.2017, 15:55
Форум інформатиків України
Головна Реєстрація Вхід
Вітаю Вас, Гість · RSS
Вітання на форумі
Незнайомець
Вітаємо на форумі,
Незнайомцю!

   
зареєструйтесь
Перед реєстрацією обов’язково прочитайте:
Оновлення Учасники Пошук
Особисті повідомлення
Видавництво ’’Аспект’’ Видавництво

Сторінка 1 з 10123910»
Модератор форуму: Bandalak, Ktara, НІКОЛЯ, volevikt 
Форум інформатиків » РОЗДІЛ VIІІ: ОБМІН ДОСВІДОМ (УРОКИ, ФАКУЛЬТАТИВИ, ПОЗАКЛАСНА РОБОТА) » 8.6 Факультатив з програмування » Задачі шкільного рівня. (Методично правильні розв’язки цікавих задач шкільної прогр.)
Задачі шкільного рівня.
Ковальчук_Олександр Дата: Вт, 11.03.2008, 03:09 | Повідомлення № 1
Ветеран спілкування
Повідомлень: 3620
Нагороди: 17
Рейтинг: 192
У гостьовій книзі користувач роман попросив розв’язати кілька простих задач для свого сина.
Я вирішив допомогти йому і заодно створити тему, де хтось буде писати умову цікавої задачі шкільного рівня, а інші будуть пропонувати розв’язки цієї задачі. І ми разом серед кількох варіантів розв’язку вибиратимемо найоптимальніший, методично правильний. Тема досить актуальна і цікава. Сподіваюсь, допоможе вчителям, які з різних причин погано знаються на задачах з програмування навіть шкільного рівня (наприклад вчитель, який інформатику читає не за спеціальністю).

Отож, задачі з гостьової книги:
Задача 1. Дано натуральне число N (1000 < =N<=9999). Визначити, чи є числo поліндромом, тобто таким числом, яке зліва направо і справа наліво читається однаково (всі чотири цифри враховуються; наприклад, 0110).
Задача 2. Василина Премудра грала в шашки зі змієм Гориничем на дуже великій дошці. Спочатку Василина з’їла у Горинича 3 шашки, а Горинич у Василини – 5 шашок, потім Василина у Горинича з’їла 9 шашок, а Горинич у Василини – 10 шашок, на третьому ході Василина проковтнула 15 шашок, а Горинич- 20. Ця серйозна гра тривала ще довго, аж поки Горинич не втомився і після N-го ходу не з’їв саму Василину. Скільки всього шашок проковтнув Змій Горинич? Кількість шашок завжди достатня.
Задача 3 . Знайти всі дільники натурального числа N.

Розв’язки:
Задача 1.
var n,n1,n2,n3,n4,r:integer;
begin
write('Введіть будь-яке чотирьохзначне число: ');
readln(n);
n1:=n div 1000;
n2:=(n div 100) mod 10;
n3:=(n div 10) mod 10;
n4:= n mod 10;
r:=n4*1000+n3*100+n2*10+n1;
if r=n then writeln ('Введене число ',n,' являється поліндромом.')
else writeln ('Введене число ',n,' не є поліндромом.')
end.
Задача 3.
var i,n:integer;
begin
writeln('Введіть натуральне число');
readln(n);
writeln('Дільники числа ',n,': ');
for i:=1 to n do
if n mod i = 0 then
write(i,' ');
end.

Розв’язок задачі 2 напишу незабаром.
А зараз хотілося б почути ваші думки з приводу того, чи оптимально розв’язані задачі 1 та задачі 3.
Звичайно, задача 1 не враховує захист від введення не чотиризначного числа, та це легко можна виправити розгалуженням.


Шановні форумчани!!!!!
Повідомлення, які не відповідають темі або несуть некорисний зміст будуть видалятись без попередження!!!

oleg_teacher Дата: Вт, 11.03.2008, 09:14 | Повідомлення № 2
Любитель дискутувати
Повідомлень: 177
Нагороди: 0
Рейтинг: 2
Quote (Ковальчук_Олександр)
(всі чотири цифри враховуються; наприклад, 0110).

Так число выд 1000 ... (0110 не входить!!!)

Додано (11.03.2008, 08:14)
---------------------------------------------

Quote (oleg_teacher)
r:=n4*1000+n3*100+n2*10+n1;
if r=n then writeln ('Введене число ',n,' являється поліндромом.')
else writeln ('Введене число ',n,' не є поліндромом.')

Може так простіше
if (n1=n4)and(n2=n3) then writeln ('Введене число ',n,' являється поліндромом.')
else writeln ('Введене число ',n,' не є поліндромом.')

Varkan Дата: Вт, 11.03.2008, 10:01 | Повідомлення № 3
Викладач ВУЗу
Повідомлень: 425
Нагороди: 0
Рейтинг: 6
Quote (Ковальчук_Олександр)
Я вирішив допомогти йому і заодно створити тему, де хтось буде писати умову цікавої задачі шкільного рівня, а інші будуть пропонувати розв’язки цієї задачі.

це теми подібнв до тем: поцедурне програмування та вчительська олімпіада. на мою думку потрібно не створювати нові теми а реанімувати старі.

Varkan Дата: Вт, 11.03.2008, 10:47 | Повідомлення № 4
Викладач ВУЗу
Повідомлень: 425
Нагороди: 0
Рейтинг: 6
1 задача. На мою думку простіше було б перевести число в рядок і порівняти його половинки.
2 задача.
без врахування шашок які зїла Василина:
k:=5;
m:=2;
for i:=2 to n do
begin
k:=k+5*m
m:=m+2;
end;

з врахуванням шашок які зїла Василина:
k1:=3
k2:=5;
m1:=3
m2:=2;
for i:=2 to n do
begin

k1:=k1+3*m1
m1:=m1+2;

k2:=k2+5*m2
m2:=m2+2;

end;
k:=k1+k2;

3 задача. Нормально, в мнене зауважень немає.

oleg_teacher Дата: Вт, 11.03.2008, 11:10 | Повідомлення № 5
Любитель дискутувати
Повідомлень: 177
Нагороди: 0
Рейтинг: 2
Quote (Varkan)
3 задача. Нормально, в мнене зауважень немає.

В мене є:
Quote (Ковальчук_Олександр)
for i:=1 to n do
if n mod i = 0 then

Забагато проходжень циклу. Треба згадувати теорію (сам не памятаю). Здається Найбільшим дільником числа є число що не перевищує корінь квадратний з цього числа (чи половинного числа).
Varkan Дата: Вт, 11.03.2008, 12:12 | Повідомлення № 6
Викладач ВУЗу
Повідомлень: 425
Нагороди: 0
Рейтинг: 6
Quote (oleg_teacher)
Здається Найбільшим дільником числа є число що не перевищує корінь квадратний з цього числа

приклад 99
корінь(99)=9,...
дальник 33
Bandalak Дата: Вт, 11.03.2008, 12:35 | Повідомлення № 7
Лідер форуму
Повідомлень: 5392
Нагороди: 37
Рейтинг: 247
Quote (Varkan)
Здається Найбільшим дільником числа є число що не перевищує корінь квадратний з цього числа

[color=red]Невеличке уточнення: Тут має бути так:

НД <= a/2

Відредаговано: Bandalak - Вт, 11.03.2008, 14:44
Varkan Дата: Вт, 11.03.2008, 13:10 | Повідомлення № 8
Викладач ВУЗу
Повідомлень: 425
Нагороди: 0
Рейтинг: 6
Quote (Bandalak)
Невеличке уточнення: Найбільшим дільником числа є число що не перевищує корінь квадратний з цього числа + 1.

який найбільший дільник числа 99? це 33 по моєму. тут з коренем ніяк не вяжеться.

Bandalak Дата: Вт, 11.03.2008, 14:44 | Повідомлення № 9
Лідер форуму
Повідомлень: 5392
Нагороди: 37
Рейтинг: 247
Quote (Varkan)
тут з коренем ніяк не вяжеться

Так, не в'яжеться. Наприклад. Для 9 НД = 3, 3<=sqrt(9). Для 99 НД=33, 33>sqrt(99)
Вибачте, я помиливля! Зпутав, з формулою для уявного радыусу розподылу ймовырностей.
А тут маэ бути так:

НД <= a/2

Varkan Дата: Вт, 11.03.2008, 15:31 | Повідомлення № 10
Викладач ВУЗу
Повідомлень: 425
Нагороди: 0
Рейтинг: 6
Quote (Bandalak)
А тут маэ бути так:
НД <= a/2

узагальнюю.
Найбільший дільник = число/найменший дільник
оскільки у всіх чисел найменший дільник це 1 то і відповідно найбільший дільник це саме число.
виникає питання який найбільший дільник після самого себе.
відповідь беремо число і ділимо його на дільник який іде після 1.

отже для 99
найменший дільник - 1
найбільший дільник - 99
(тут не посперечаєшся)

якщо не враховувати 1 і 99 то
найменший дільник - 3
найбільший дільник - 99/3=33

Додано (11.03.2008, 14:31)
---------------------------------------------
кусочок коду.

j:=2
while n mod j <> 0 then j:=i+1;
k:=2
for i:=j to n/j do
if n mod i = 0 then k:=k+1;

роман Дата: Вт, 11.03.2008, 16:54 | Повідомлення № 11
Новий користувач
Повідомлень: 4
Нагороди: 0
Рейтинг: 1
Дякую всім за допомогу! biggrin

Додано (11.03.2008, 15:54)
---------------------------------------------
Але може ще хтось напише розвязок 2 задачі. Йому потрібно на завтра! surprised

oleg_teacher Дата: Вт, 11.03.2008, 17:59 | Повідомлення № 12
Любитель дискутувати
Повідомлень: 177
Нагороди: 0
Рейтинг: 2
Quote (oleg_teacher)
Треба згадувати теорію (сам не памятаю).

я ж казав не памятаю точно, але по суті див далі ...
Quote (oleg_teacher)
чи половинного числа).

Хоча дякую Варкану за більше уточнення:
Quote (Varkan)
відповідь беремо число і ділимо його на дільник який іде після 1.

ЛОГІЧНО!!!!

Додано (11.03.2008, 16:59)
---------------------------------------------

Quote (Varkan)
for i:=j to n/j do

а тут паскаль вроді дасть помилку див. n/j.
Гадаю слідуючи далі по теорії має бути так:
var m,n,j:integer;
...
m:=n div j;
for i:=j+1 to m do


Відредаговано: oleg_teacher - Ср, 12.03.2008, 09:02
роман Дата: Вт, 11.03.2008, 19:45 | Повідомлення № 13
Новий користувач
Повідомлень: 4
Нагороди: 0
Рейтинг: 1
будь ласка напишыть ще друге задачу! Дякую наперед biggrin
Sasyk Дата: Вт, 11.03.2008, 20:07 | Повідомлення № 14
знаток тестуючих систем
Повідомлень: 300
Нагороди: 0
Рейтинг: 9
роман, цікаво, а куди такі задачі потрібні вашому сину?
роман Дата: Вт, 11.03.2008, 20:22 | Повідомлення № 15
Новий користувач
Повідомлень: 4
Нагороди: 0
Рейтинг: 1
А як щодо такої задачі?
4. 3. Обчислити описану нижче функцію на проміжку (-2;2) з інтервалом 0,5.
Y {
Xквадрат x<1
x-2 x=1
x+4 , якщо 1<x<3

Додано (11.03.2008, 19:22)
---------------------------------------------
вони йому потрібні для наукової роботи, як приклади

Форум інформатиків » РОЗДІЛ VIІІ: ОБМІН ДОСВІДОМ (УРОКИ, ФАКУЛЬТАТИВИ, ПОЗАКЛАСНА РОБОТА) » 8.6 Факультатив з програмування » Задачі шкільного рівня. (Методично правильні розв’язки цікавих задач шкільної прогр.)
Сторінка 1 з 10123910»
Пошук:


© Форум інформатиків України, 2007-2017.