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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.01.2014, 15:48   #1
Костяхалк
Пользователь
 
Регистрация: 22.01.2014
Сообщений: 21
По умолчанию создание програмы на делфи циклы 2: ввести два натуральных числа и определять их НОД

2. Разработать приложение «НОД».
Приложение должно позволять пользователю ввести два натуральных числа и определять их НОД.
Определение НОД должно быть реализовано в потоке.
Результаты (исходные числа и их НОД) должны выводиться в поле Memo.
Костяхалк вне форума Ответить с цитированием
Старый 22.01.2014, 16:04   #2
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

Костяхалк

2. Разработать приложение «НОД».

заплатить на форуме.

Приложение должно позволять пользователю ввести два натуральных числа и определять их НОД.

оплата должна осуществляться через одну из платежных систем - qiwi, webmoney, yandex-деньги и др.
Rififi вне форума Ответить с цитированием
Старый 22.01.2014, 16:11   #3
Костяхалк
Пользователь
 
Регистрация: 22.01.2014
Сообщений: 21
По умолчанию

Цитата:
Сообщение от Rififi Посмотреть сообщение
Костяхалк

заплатить на форуме.



оплата должна осуществляться через одну из платежных систем - qiwi, webmoney, yandex-деньги и др.
как куда кому???
Костяхалк вне форума Ответить с цитированием
Старый 22.01.2014, 16:24   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

НОД легко подсчитать с помощью такого кода:
(c) Mad_Cat:
Код:
function NOD(a,b:integer):integer;
begin 
  while (a<>0) and (b<>0) do 
     if a>b 
         then a:=a mod b  
         else b:=b mod a;
  if a=0 
     then NOD:=b 
     else NOD:=a;
end;
кинуть на форму Memo, кнопку и написать несколько строчек кода познаний в Delphi хватит? Тогда можно никому денег не платить!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.01.2014, 16:33   #5
Костяхалк
Пользователь
 
Регистрация: 22.01.2014
Сообщений: 21
По умолчанию

благодорю))) давайте со второй разберемся
Костяхалк вне форума Ответить с цитированием
Старый 27.01.2014, 15:24   #6
Костяхалк
Пользователь
 
Регистрация: 22.01.2014
Сообщений: 21
По умолчанию

Код:
unit Unit1;

interface

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

type
  TfrmMain = class(TForm)
    memResults: TMemo;
    btnOk: TButton;
    edNum: TEdit;
    lbNum: TLabel;
    Ed1: TEdit;
    procedure btnOkClick(Sender: TObject);
   
  private
    { Private declarations }
  public
    { Public declarations }
  end;

 TmyTread = class(TThread)    // описание типа потока
  private
   // переменные, которые нужны потоку для работы
    number,number1: cardinal; // исходное число (задается из основного потока при запуске текущего потока)
    result,result1: string;  // результат, сформированный  в формате строки

    // процедура обращения к визуальному компоненту (Memo)
    procedure WriteRes;
    { Private declarations }
  protected
    procedure Execute; override;
  end;


var
  frmMain: TfrmMain;

implementation
 


{$R *.dfm}

procedure TfrmMain.btnOkClick(Sender: TObject);
  var s,s1: string;   // вспомогательная строковая переменная
      num,num1: cardinal;  // введенное пользователем число
      cod,cod1: integer;  // код преобразования строка -> число

      Thr: TmyTread; // переменная типа "поток TmyThread"

begin
   s:=edNum.Text; // "считываем" введенное пользователем значение
   val(s,num,cod);  // пытаемся преобразовать считанный текст в число
   if (cod<>0) OR (num=0)
     then // если преобразовать введенное пользователем значение в целое число не удалось или пользователь ввел ноль
       begin
         memResults.Lines.Add(s+' - некорректное значение'); // добавляем запись в Memo
         edNum.clear; // выделяем введенное пользователем значение
         edNum.SetFocus; // устанавливаем фокус в поле для ввода исходного числа
         exit; // выходим из процедуры обработки события
         end;
         s1:=Ed1.Text; // "считываем" введенное пользователем значение
   val(s1,num1,cod1);  // пытаемся преобразовать считанный текст в число
   if (cod1<>0) OR (num1=0)
     then // если преобразовать введенное пользователем значение в целое число не удалось или пользователь ввел ноль
       begin
         memResults.Lines.Add(s1+' - некорректное значение'); // добавляем запись в Memo
         Ed1.clear; // выделяем введенное пользователем значение
         exit; // выходим из процедуры обработки события
       end;

    Ed1.Clear;
    edNum.Clear;
    edNum.SetFocus;

    Thr := TmyTread.Create(True);  // вызываем конструктор (метод Create) для нашего потока, т.е. создает новый поток
    Thr.FreeOnTerminate := True;   // устанавливаем свойство  FreeOnTerminate в true (когда поток будет завершен, он освободит ресурсы)
    Thr.number:=num;
    Thr.number1:=num1; // передаем число
    Thr.Resume; // запускаем поток

end;

procedure TmyTread.Execute;
  var count,count1,j,i1,j1: cardinal;
  begin


 while (number <> 0) and (number1 <> 0) do
 if (number>number1) then
 number:=number mod number1
 else
 number1:=number1 mod number;
 if (number=0) then
 str(number1,result)
 else
 str(number,result);



   Synchronize(WriteRes);

end;

procedure TmyTread.WriteRes;
begin
     frmMain.memResults.lines.add('NOD:   ' + result);
end;
end.


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.
Костяхалк вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
создание програмы на делфи циклы:ввести натуральное число и определять, можно ли число представить в виде суммы двух простых чисел Костяхалк Помощь студентам 24 28.01.2014 08:48
Два натуральных числа D и М задают дату REKA Помощь студентам 0 02.06.2013 23:24
два натуральных числа. Верно ли, что их наименьшее общее кратное есть нечетное число monokol Паскаль, Turbo Pascal, PascalABC.NET 2 21.12.2011 15:53
Ввести два числа и найти их разность (Асемблер) akadem Помощь студентам 0 22.11.2011 20:41
Составить программу, суммирующую два натуральных числа (n>20) Figushkin Помощь студентам 5 08.06.2010 14:32