Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 15 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Результаты опроса: Понравилась ли вам загадка
Афтар, давай исчё 4 15.38%
Надо бы тоже попробывать 4 15.38%
А-а-а, нафиг. Пофиг 11 42.31%
Кому это надо? 6 23.08%
КГ/АМ 1 3.85%
Голосовавшие: 26. Вы ещё не голосовали в этом опросе

Ответ
 
Опции темы
Старый 25.09.2010, 23:23   #21
mutabor
Телепат с дипломом
Профессионал
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,928
Репутация: 1570

icq: 401708834
По умолчанию

Sibedir, мне в лом
__________________
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума   Ответить с цитированием
Старый 25.09.2010, 23:30   #22
Sibedir
Тот ещё
Профессионал
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Адрес: г. Барнаул
Сообщений: 2,260
Репутация: 931
По умолчанию

могу я это расценивать как пожелание увидеть уже этот злощастный код с человечиским лицом?

2 Vikenty
Я там тоже опрос лист прошел. Много интересного узнал. Даже одну новую болезнь услышал. Ну, ана не страшная, так, типа насморка. Но по ходу она у меня и впрямь есть. Описание похоже. 80% кстати лажей оказалось, ну дак этож не прием в больнице.
Все же знают поговорку: Не бывает здоровых людей, бывают недообследованные. То же самое можно сказать и про отдельные органы.

Последний раз редактировалось Sibedir; 25.09.2010 в 23:49.
Sibedir вне форума   Ответить с цитированием
Старый 26.09.2010, 00:01   #23
vasek123
Заблокирован
 
Регистрация: 21.11.2008
Адрес: IP адрес: 198.7.62.204 | Адрес:United States United States, Manassas | Провайдер: LeaseWeb | ищите..
Сообщений: 4,991
Репутация: 1588

icq: 590966827
skype: vasek12314
Сообщение

[offtop]
Цитата:
Сообщение от Sibedir Посмотреть сообщение
Я там тоже опрос лист прошел. Много интересного узнал. Даже одну новую болезнь услышал. Ну, ана не страшная, так, типа насморка. Но по ходу она у меня и впрямь есть. Описание похоже. 80% кстати лажей оказалось, ну дак этож не прием в больнице.
Все же знают поговорку: Не бывает здоровых людей, бывают недообследованные. То же самое можно сказать и про отдельные органы.
Он указывал в своем посте на болезни, которые, у меня действительно есть...[/offtop]
vasek123 вне форума   Ответить с цитированием
Старый 26.09.2010, 03:49   #24
mutabor
Телепат с дипломом
Профессионал
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,928
Репутация: 1570

icq: 401708834
По умолчанию

Цитата:
Сообщение от Sibedir Посмотреть сообщение
могу я это расценивать как пожелание увидеть уже этот злощастный код с человечиским лицом?
Не могу говорить за всех, может кому-то интересно разобраться. Есть ведь люди, к-рые кроссворды любят решать и т.п.
__________________
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума   Ответить с цитированием
Старый 28.09.2010, 19:53   #25
Sibedir
Тот ещё
Профессионал
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Адрес: г. Барнаул
Сообщений: 2,260
Репутация: 931
По умолчанию

Выкладываю модуль с мнемоническими именами
Код:
unit MathUnit;

interface

type
  TValue = record
    Value: Real;
    UnitUp: Int64;
    UnitDown: Int64;
  end;

  TUnit = record
    ShotName: String;
    LongName: String;
    Prime: Cardinal;
  end;

TCardinalArray = array of Cardinal;

TUnitArray = array of TUnit;

function Simplification (a: TValue): TValue;

procedure UnitString (v: TValue; var Up, Down: String);

function UnitByName (n: String): TUnit;

function Summ (a, b: TValue): TValue;

function Product (a, b: TValue): TValue;

var
  PrimeArray: TCardinalArray;
  UnitArray: TUnitArray;

implementation

uses SysUtils;

function UnitByName (n: String): TUnit;
var
  i, ih: Integer;
begin
  Result.ShotName := #127;
  Result.LongName := 'NoName';
  Result.Prime := 0;

  ih := Length (UnitArray) - 1;
  for i := 0 to ih do begin
    if UnitArray[i].ShotName = n then begin
      Result.ShotName := n;
      Result.LongName := UnitArray[i].LongName;
      Result.Prime := UnitArray[i].Prime;
      Break;
    end;
  end;
end;

procedure UnitString (v: TValue; var Up, Down: String);
var
  i, ih, n: Integer;
  p: Cardinal;
  UnitUp, UnitDown: Int64;
begin
  UnitUp := v.UnitUp;
  UnitDown := v.UnitDown;

  if UnitDown = 0 then begin
    Up := 'Error';
    Down := 'Error';
    Exit;
  end;

  if (UnitUp = 0) or (v.Value = 0) then begin
    Up := '';
    Down := '';
    Exit;
  end;

  Up := '';
  Down := '';

  ih := Length (UnitArray) - 1;
  for i := 0 to ih do begin
    p := UnitArray[i].Prime;
    n := 0;
    while (UnitUp mod p) = 0 do begin
      n := n + 1;
      UnitUp := UnitUp div p;
    end;
    case n of
      0: ;
      1: Up := Up + #183 + UnitArray[i].ShotName;
      else
        Up := Up + #183 + UnitArray[i].ShotName + '^' + IntToStr(n);
    end;
    n := 0;
    while (UnitDown mod p) = 0 do begin
      n := n + 1;
      UnitDown := UnitDown div p;
    end;
    case n of
      0: ;
      1: Down := Down + #183 + UnitArray[i].ShotName;
      else
        Down := Down + #183 + UnitArray[i].ShotName + '^' + IntToStr(n);
    end;
  end;

  Up := Copy (Up, 2, Length(Up)-1);
  Down := Copy (Down, 2, Length(Down)-1);
end;

function Summ (a, b: TValue): TValue;
begin
  a := Simplification (a);
  b := Simplification (b);

  if (a.UnitUp = b.UnitUp) and (a.UnitDown = b.UnitDown) then begin
    Result.Value := a.Value + b.Value;
    Result.UnitUp := a.UnitUp;
    Result.UnitDown := a.UnitDown;
  end
  else begin
    Result.Value := 0;
    Result.UnitUp := 0;
    Result.UnitDown := 0;
  end;
end;

function Product (a, b: TValue): TValue;
begin
  Result.Value := a.Value * b.Value;
  Result.UnitUp := a.UnitUp * b.UnitUp;
  Result.UnitDown := a.UnitDown * b.UnitDown;
  Result := Simplification (Result);
end;

function Simplification (a: TValue): TValue;
var
  i, ih: Integer;
  p: Cardinal;
begin
  if (a.UnitDown = 0) then begin
    Result.Value := 0;
    Result.UnitUp := 0;
    Result.UnitDown := 0;
    Exit;
  end;

  if (a.Value = 0) or (a.UnitUp = 0) then begin
    Result.Value := 0;
    Result.UnitUp := 0;
    Result.UnitDown := 1;
    Exit;
  end;

  Result.UnitUp := 1;
  Result.UnitDown := 1;

  ih := Length (UnitArray) - 1;
  for i := 0 to ih do begin
    p := UnitArray[i].Prime;
    while (a.UnitUp mod p) = 0 do begin
      if (a.UnitDown mod p) = 0 then begin
        a.UnitUp := a.UnitUp div p;
        a.UnitDown := a.UnitDown div p;
      end
      else begin
        Result.UnitUp := Result.UnitUp * p;
        a.UnitUp := a.UnitUp div p;
      end;
    end;
    while (a.UnitDown mod p) = 0 do begin
      Result.UnitDown := Result.UnitDown * p;
      a.UnitDown := a.UnitDown div p;
    end;
  end;

  Result.Value := a.Value * a.UnitUp / a.UnitDown;
end;

end.
Вопрос прежний.
Sibedir вне форума   Ответить с цитированием
Старый 28.09.2010, 21:50   #26
ImmortalAlexSan
Профессионал
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,357
Репутация: 352

icq: 430070679
По умолчанию

Я за то, чтобы ответ прочитать. Внесу свою маленькую лепту в сумму репутации желающих
__________________
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
ImmortalAlexSan вне форума   Ответить с цитированием
Старый 04.10.2010, 05:01   #27
Sibedir
Тот ещё
Профессионал
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Адрес: г. Барнаул
Сообщений: 2,260
Репутация: 931
Лампочка ОТВЕТ (не читать, пока не попробовали отгадать самостоятельно)

Вот, собственно, ответ - Модуль выполняет арифметические действия со значениями с размерностью
Типа того:
1м + 2см = 1,02м
1кг + 1м = Error
5кг / 2м^2 = 2.5 кг/м^2

Петя немного его доработал:
Единицы измерения.zip

Пояснение:
Весь сыр-бор в простых числах. Каждой единице измерения в соответствие поставлено простое число, что позволяет расчленить числитель и знаменатель размерности на делители. Ведь простое число делится только на себя.

Пример:
Поставим в соответствие метрам число 3, секундам - 5.
м^2 = 9
м·сек = 15

Последний раз редактировалось Sibedir; 04.10.2010 в 08:03. Причина: кое-что добавил во вложении
Sibedir вне форума   Ответить с цитированием
Ответ

Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написал прогу в паскаль в ответ после запуска выдает ошибку.Что не так? sawel23 Паскаль 5 27.05.2010 15:37
Написал редактор карт sasha1993 Gamedev - cоздание игр: Unity, OpenGL, DirectX 8 18.07.2009 21:31
вот задачка на массив не сложная.я написал но не хочет рабатать что то BERT Помощь студентам 4 10.03.2009 19:23
Написал прогу в паскале... deu4er Помощь студентам 2 19.11.2008 21:08
Написал бэкдор, оцените KORN Софт 7 18.11.2007 09:55


17:00.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru