IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> дроби, напечатать по возрастанию
сообщение
Сообщение #1


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


помогите пожалуйста
Задача: Найти и напечатать в порядке возрастания все простые несократимые дроби заключенные между 0 и 1, знаменатели которых не превышают 7 (дробь задается двумя натуральными числами-числителем и знаменателем). т.е. 1/2,1/3,2/3,1/4,3/4,1/5,2/5,3/5,4/5...
Вот с поиском несократимых дробей постараюсь сам, а вот потом чтобы по возрастанию-нет идеи. вообщем надо циклом, но можно и массивом(если так легче будет).
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


вот сделал только вывод дробей
uses crt;
var
i,n,m:1..7;
c:boolean;
begin
clrscr;
for i:=2 to 7 do
for n:=1 to i-1 do
begin
c:=true;
for m:=2 to i do
if (n mod m=0) and (i mod m=0) then
c:=false;
if c= true then write(' ',n,'/',i)
end;
readkey
end.

а как сделать по возрастанию?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской
Реальное имя: Сергей

Репутация: -  0  +


Уточни что есть по возрастанию??? К примеру 2/3 > 1/2 > 1/3, если так то в каком варианте тебе нужен вывод ответа? 0.5 или 1/2
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Эту задачу оптимальнее через ряд Фарея делать

http://ru.wikipedia.org/wiki/Ряд_Фарея

Там в разделе "свойства" очень хорошо описан алгоритм построения, и там сразу всё будет по возрастанию.

Сообщение отредактировано: TarasBer -


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Цитата(TarasBer @ 14.11.2007 22:00) *

Эту задачу оптимальнее через ряд Фарея делать

good.gif
Жаль, что я в свое время не уделял должного внимания математике smile.gif Учитывая объяснения по ссылке здесь однозначно пахнет рекурсивной процедурой буквально в 3 строчки..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской
Реальное имя: Сергей

Репутация: -  0  +


2Malice если не сложно кинь пример с рекурсией, а то через массив сделал, но много переменных затратил..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


Цитата
Уточни что есть по возрастанию??? К примеру 2/3 > 1/2 > 1/3, если так то в каком варианте тебе нужен вывод ответа? 0.5 или 1/2

именно так. И вывести надо как дробь 6/7....
Цитата
Эту задачу оптимальнее через ряд Фарея делать

попробую сделать...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Цитата(Boss @ 15.11.2007 1:26) *

2Malice если не сложно кинь пример с рекурсией, а то через массив сделал, но много переменных затратил..

Вот так примерно:
procedure f (a,b,c,d:integer; n,m:integer);
begin
if n>m then exit;
if ((a+c)<=m) and ((b+d)<=m) then
begin
f(a,b,a+c,b+d,n+1,m);
write (a+c,'/',b+d,' ');
f(a+c,b+d,c,d,n+1,m);
end;
end;

Параметры - первая граница a/b, вторая c/d (для первого вызова 0,1 и 1,1 соответственно), n - текущий порядок ряда (1 для первого вызова), m - максимальный.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


Код
uses crt;
var
   i,n,m:0..7;
   c:boolean;
procedure f(a,b,c,d:integer; n,m:integer);
begin
     if n>m then exit;
     if ((a+c)<=m) and ((b+d)<=m) then
        begin
             f(a,b,a+c,b+d,n+1,m);
             write (a+c,'/',b+d,'  ');
             f(a+c,b+d,c,d,n+1,m)
        end
end;
begin
     clrscr;
     for i:=1 to 7 do
              for n:=0 to i-1 do
                  begin
                       f(n,i,i,i,2,7);
                  end;
     readkey
end.

Вот подставил и все работает)
Спасибо за помощь всем
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Цитата(Client @ 16.11.2007 7:09) *

Вот подставил и все работает)
Спасибо за помощь всем

Это, конечно, неплохо, только я не понял за чем ты так по хитрому вызываешь эту процедуру. Надо просто:

clrscr;
f(0,1,1,1, 1,7);
readkey;

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


Спасибо за совет good.gif
Процедуры и функции, а тем более рекурсию еще не проходил... но пытаюсь сам с ними разобраться
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гость






посоветуйте пожалуйста хорошую зоо клинику в москве
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Гость






Ребят, а помогите эту же задачу решить только на с++
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Заменяешь begin и end на {}, = на ==, := на =.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Гость






Что значит clrscr и readkey ???
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 17.04.2024 2:01
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name