1 Востаннє редагувалося maksym08 (13.09.2012 14:14:16)

Тема: Програма нумерації зліченних множин

Привіт!
Мені потрібно скласти програму в Pascal. На малюнку показано, яким способом нумеруються множини. Коли я, наприклад, введу 8/56 чи 1/875, програма повинна показати мені номер цього елемента.
Малюнок за цим адресом http://dunaevv1.narod.ru/other/infinity … age008.gif
Дякую!

2

Re: Програма нумерації зліченних множин

Можемо кілька підказок дати. За вас писати прогу не будемо.

Re: Програма нумерації зліченних множин

Почався сезон "Напишіть мені програму"

4

Re: Програма нумерації зліченних множин

Replace написав:

Можемо кілька підказок дати. За вас писати прогу не будемо.

Ні програму за мене писати не треба. Але я буду вдячний за підказку. Я не можу зрозуміти принцип номерації. Я думаю, що треба використати цикл for to do, але як????

5 Востаннє редагувалося bunyk (13.09.2012 19:19:50)

Re: Програма нумерації зліченних множин

Це називається Нумерація Кантора.

Формула така: C(x, y) = ( (x+y+1) * (x+y) / 2 )+x

де x - чисельник, а y - знаменник.

Подякували: maksym081

6 Востаннє редагувалося bunyk (13.09.2012 19:43:26)

Re: Програма нумерації зліченних множин

Прошу пробачення, вікіпедія враховує нулі. Вам потрібно формулу ( (x+y-1) * (x+y-2) / 2) + x.

Ось наприклад програма на awk з прикладом тестування даної формули:

:~$ awk '{split($0, a, "/")} {print ((a[1]+a[2]-1)*(a[1]+a[2]-2)/2)+a[1]}'
2/1
3
2/2
5
1/1
1
4/2
14

З картинкою ніби сходиться.

Подякували: maksym081

7

Re: Програма нумерації зліченних множин

bunyk написав:

Прошу пробачення, вікіпедія враховує нулі. Вам потрібно формулу ( (x+y-1) * (x+y-2) / 2) + x.

Ось наприклад програма на awk з прикладом тестування даної формули:

:~$ awk '{split($0, a, "/")} {print ((a[1]+a[2]-1)*(a[1]+a[2]-2)/2)+a[1]}'
2/1
3
2/2
5
1/1
1
4/2
14

З картинкою ніби сходиться.

Дякую вам. Щось вже починаю розуміти

8

Re: Програма нумерації зліченних множин

Якщо на пальцях:
Маємо дріб: n/m. Номер діагоналі, на якій знаходиться цей дріб дорівнює n+m-1. Кількість елементів на діагоналі дорівнює її номеру. Напрямок нумерації елементів залежить від парності номеру тієї ж таки діагоналі. Ну а позиція елемента в межах своєї діагоналі це m.