Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.04.2009, 22:51   #1
Ge0rGE
Пользователь
 
Регистрация: 28.04.2009
Сообщений: 10
По умолчанию наибольший общий делитель

Вот задача:

Написать программу,которая выводит на экран наибольший общий делитель двух натуральных чисел используя рекурсию
Ge0rGE вне форума Ответить с цитированием
Старый 28.04.2009, 23:03   #2
koma_grusha
Редкий обитатель
Форумчанин
 
Аватар для koma_grusha
 
Регистрация: 08.04.2009
Сообщений: 170
По умолчанию

предположим, что это х и у, берешь максимальное из них, пусть это х, и начиная с х до х*у, делаешь:
а) проверяешь, что х - это НОД
б) если НОД - выводишь х, если не НОД, то х = х+х и т.д.
Мозг, хорошо устроенный, стоит больше, чем мозг, хорошо наполненный (Мишель Монтень)
koma_grusha вне форума Ответить с цитированием
Старый 28.04.2009, 23:06   #3
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

http://ru.wikipedia.org/wiki/Алгоритм_Евклида#Pascal
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 28.04.2009, 23:31   #4
Ge0rGE
Пользователь
 
Регистрация: 28.04.2009
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Sazary Посмотреть сообщение
Ты имеешь ввиду это?

Код:
function nod(var a, b:longint):longint; 
 begin
  if (a=0) or (b=0) then if a=0 then nod:=b
                                else nod:=a
                    else if a >= b then nod:=nod(a mod b,b) 
                                   else nod:=nod(a,b mod a);   
 end;
Получается,здесь только write-end повставлять? сам метод уже реализован на паскале?

Последний раз редактировалось Stilet; 29.04.2009 в 11:20.
Ge0rGE вне форума Ответить с цитированием
Старый 28.04.2009, 23:34   #5
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Получается,здесь только write-end повставлять? сам метод уже реализован на паскале?
А вы как думаете? Там все написано. Приведена только функция.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 29.04.2009, 00:35   #6
Ge0rGE
Пользователь
 
Регистрация: 28.04.2009
Сообщений: 10
По умолчанию

у меня даже с функцией не выходит( запишите пожалуйста как должна выглядеть программа
Ge0rGE вне форума Ответить с цитированием
Старый 29.04.2009, 00:39   #7
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Код:
uses crt;
var a,b : longint;
function nod(var a, b: longint): longint;
  begin
   if (a = 0) or (b = 0) then
     if a = 0 then
       nod:= b
     else 
       nod:= a
   else 
     if a >= b then 
       begin
       a := a mod b;
       nod:= nod(a, b);
       end
     else 
      begin
      b := b mod a;
      nod:= nod(a, b);
      end;
  end;

begin
clrscr;
a := 12;
b := 9;
writeln(nod(a,b));

readln;
end.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 29.04.2009, 00:58   #8
Ge0rGE
Пользователь
 
Регистрация: 28.04.2009
Сообщений: 10
По умолчанию

Большое спасибо)!
А как построить блок-схему к этой программе?
Ge0rGE вне форума Ответить с цитированием
Старый 29.04.2009, 01:09   #9
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
А как построить блок-схему к этой программе?
А вот это уже сами.
Есть еще программа fceditor (ищите в инете), которая их строит.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 29.04.2009, 01:21   #10
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

А «блок-схему к этой программе» — это от безвыходности положения?!

В смысле, я думал, что (начинающие) программисты, трудясь и потея над будущим кодом, продумывают его логику, используя язык блок-схем (который для того и изобретен).

Но когда код уже есть, и логика его ясна, то зачем этот «шаг назад»?
Sasha_Smirnov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Составить прогамму, отысивающую наименьший общий составной делитель натуральных чисел N и M. Paskal Frontier Помощь студентам 7 16.12.2014 14:01
Наименьший общий делитель Witaliy Помощь студентам 11 25.03.2009 13:20
Общий доступ к проекту DiamondCoder Софт 4 11.03.2009 13:49
В массиве Р(10) введенном с клавиатуры поменять местами наибольший и наименьший элементы. Делфи. Lerika Помощь студентам 6 23.01.2009 11:52
Общий вопрос Stilus Помощь студентам 0 05.06.2008 19:39