Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 353

/ вопрос открыт /

Здравствуйте!
Помогите плз), завтра зачет! Нужно осуществить сокращение на максимальный общий множитель. Пример: 12, 606, 180, 102 -> 2, 101, 30, 17.

Карик Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Карик (статус: Посетитель)
Вопрос отправлен: 1 июня 2011, 02:55
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Gooddy

Здравствуйте, Карик!
Написал необходимый вам код. Не забудьте подключить модуль Math.
Удачи на экзамене.

Приложение:
  1.  
  2. TIntegers = array of integer;
  3.  
  4.  
  5. function nod( integers: TIntegers ): integer;
  6. var
  7. nodVariant, minValue, i, arrayLength, compares: integer;
  8. resultGetted: boolean;
  9. begin
  10. minValue := Math.MinValue( integers );
  11. arrayLength := length( integers );
  12. resultGetted := false;
  13. result := 1;
  14. nodVariant := minValue;
  15. while ( nodVariant > 1 ) and not resultGetted do
  16. begin
  17. compares := 0;
  18. for i := 0 to arrayLength - 1 do
  19. if integers[i] mod nodVariant = 0 then
  20. inc( compares );
  21. if compares = arrayLength then
  22. begin
  23. result := nodVariant;
  24. resultGetted := true;
  25. end;
  26. dec( nodVariant );
  27. end;
  28. end;
  29.  
  30.  
  31. function divideByNod( integers: TIntegers ): TIntegers;
  32. var
  33. i, divideInteger: integer;
  34. begin
  35. divideInteger := nod( integers );
  36. SetLength(result,length(integers));
  37. for i := 0 to length( integers ) - 1 do
  38. result[i] := integers[i] div divideInteger;
  39. end;
  40.  
  41.  
  42. procedure TForm1.Button1Click( Sender: TObject );
  43. var
  44. integers: TIntegers;
  45. i: integer;
  46. begin
  47. SetLength( integers, 4 );
  48. integers[0] := 12;
  49. integers[1] := 606;
  50. integers[2] := 180;
  51. integers[3] := 102;
  52. integers:=divideByNod( integers );
  53. for i:=0 to length(integers)-1 do
  54. memo1.lines.add(inttostr(integers[i]));
  55. end;


Ответ отправил: Gooddy (статус: 3-ий класс)
Время отправки: 1 июня 2011, 03:34
Оценка за ответ: 5

Комментарий к оценке: Спасибо большое, очень признателен!

Мини-форум вопроса

Всего сообщений: 1; последнее сообщение — 1 июня 2011, 03:36; участников в обсуждении: 1.
Gooddy

Gooddy (статус: 3-ий класс), 1 июня 2011, 03:36 [#1]:

Писал на фпц в лазазусе так что отпишись как проверишь
Чисти код! Чисти код! Чисти код!

1 июня 2011, 09:31: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Лабораторный практикум » Delphi модератором Ерёмин А.А.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:40
Выполнено за 0.03 сек.