Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.10.2011, 15:15
trnext trnext вне форума
Прохожий
 
Регистрация: 04.10.2011
Сообщения: 3
Репутация: 10
По умолчанию Не получается найти общий делитель

Неполучается найти наибольший общий делитель двух чисел.
Поискал в инете, вот нашел.
Где то здесь есть ошибка.
Помогите найти и исправить.

Код:
unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Edit2: TEdit;
    Label3: TLabel;
    Button1: TButton;
    Panel1: TPanel;
procedure Button1Click(Sender: TObject);

private

    { Private declarations }

public

    { Public declarations }

  end;


var
  Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
 var
  p, n1, m1, n, m, R: LongWord;
begin
   n:= StrToInt(edit1.text);
   m:= StrToInt(edit2.Text);
  if (n = 0) or (m = 0) then
    R:= 0
  else
  begin
    if m < n then
    begin
      n1 := m;
      m1 := n;
    end;
    begin
      n1 := n;
      m1 := m;
    end;
    while n1 > 0 do
    begin
      p := m1 mod n1;
      m1 := n1;
      n1 := p;
    end;
    R := m1;
    panel1.Caption:=IntToStr(R);
  end;
end;
end.
Изображения
Тип файла: jpg jpeg.jpg (16.0 Кбайт, 3 просмотров)
Ответить с цитированием
  #2  
Старый 04.10.2011, 15:30
chainik chainik вне форума
Начинающий
 
Регистрация: 30.06.2008
Сообщения: 140
Репутация: 8882
По умолчанию

Edit1,Edit2- исходные числа
Edit3- максим общий делитель

Код:
uses Math;

{---------------------------------------------------------
функция возвращает макс общий делитель
----------------------------------------------------------}
function GetMaxDiv(x1,x2:integer):integer;
begin
if (x1=0) or (x2=0) then Result:=-1
else
    begin
    Result:=min(x1,x2);
    while (x1 mod Result <> 0) or (x2 mod Result <> 0) do
                dec(Result)
    end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
Edit3.Text:=IntToStr(GetMaxDiv(StrToInt(Edit1.Text),StrToInt(Edit2.Text)));
end;

Последний раз редактировалось chainik, 04.10.2011 в 16:59.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 19:34.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter