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

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

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

 
 Ответить  Открыть новую тему 
> дроби, напечатать по возрастанию
Client
сообщение 14.11.2007 19:32
Сообщение #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 
 К началу страницы 
+ Ответить 
Client
сообщение 14.11.2007 19:57
Сообщение #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 
 К началу страницы 
+ Ответить 
Boss
сообщение 14.11.2007 21:34
Сообщение #3


Новичок
*

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

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


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


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

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

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


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

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

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

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


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


Профи
****

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

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


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

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

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


Новичок
*

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

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


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


Профи
****

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

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


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

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

попробую сделать...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Malice
сообщение 15.11.2007 7:58
Сообщение #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 
 К началу страницы 
+ Ответить 
Client
сообщение 16.11.2007 7:09
Сообщение #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 
 К началу страницы 
+ Ответить 
Malice
сообщение 16.11.2007 10:31
Сообщение #10


Профи
****

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

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


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

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

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

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

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


Профи
****

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

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


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


Гость






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


Гость






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


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

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

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


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


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


Гость






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

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

 



- Текстовая версия 27.04.2024 11:19
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"