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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.02.2011, 04:17   #11
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

комбинаций дохренища, так что показывает прогресс заодно.

Код:
{$APPTYPE CONSOLE}

program
  vararr;

uses
  SysUtils;

type
  //
  tMyVarArray = array of array of integer;

const
  //
  c_num_vars = 10;    // 10 variables


// -- main --
var
  a: tMyVarArray;
  t: array of integer;
  H: integer;
  pc, pcprev: integer;
  current, total: int64;

// --  --
procedure combination(level: integer);
var
  c, r: integer;
  sum: integer;
begin
  for c := low(a[level]) to high(a[level]) do begin
    //
    t[level] := a[level][c];
    if (level = high(a)) then begin
      //
      // see if we got something worth mentioning
      sum := 0;
      for r := low(a) to high(a) do
        sum := sum + t[r];
      //
      if (H = sum) then begin
        //
        for r := low(a) to high(a) do
          Write('var[', r, ']=', t[r], ' + ');
        //
        WriteLn(#8#8' = ', H);
      end;
      //
      inc(current);
      pc := (current * 10000) div total;
      if (pc <> pcprev) then begin
        //
        // update progress
        write(pc div 100, '.', pc - 100 * (pc div 100), '% (', current, ' out of ', total, ')      '#13);
        pcprev := pc;
      end;
    end
    else
      combination(level + 1);
  end;
end;


var
  i, v: integer;
  d: integer;
begin
  Randomize();
  //
  SetLength(a, c_num_vars);
  SetLength(t, c_num_vars);
  total := 1;     // total combinations
  current := 0;   // current progress
  pcprev := -1;
  //
  // initialize var array
  for i := low(a) to high(a) do begin
    //
    d := 1 + random(20); // how many values this var may contain
    SetLength(a[i], d);
    total := total * d;
    //
    for v := low(a[i]) to high(a[i]) do
      a[i][v] := 1 + random(50);     // assign next value for a[i]
  end;
  //
  H := 130 + random(260);  // or enter it manually
  WriteLn('H = ', H);
  //
  // find all combinations
  combination(low(a));
end.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."

Последний раз редактировалось veniside; 02.02.2011 в 04:33. Причина: рефакторинг, ггг
veniside вне форума Ответить с цитированием
Старый 02.02.2011, 21:27   #12
timezero
Пользователь
 
Регистрация: 28.01.2011
Сообщений: 10
По умолчанию

Цитата:
uses
SysUtils;
и что за файл это?
timezero вне форума Ответить с цитированием
Старый 02.02.2011, 21:28   #13
timezero
Пользователь
 
Регистрация: 28.01.2011
Сообщений: 10
По умолчанию

приведу пример полностью чтоб можно было понять более точно смысл всей задачи
timezero вне форума Ответить с цитированием
Старый 02.02.2011, 21:43   #14
timezero
Пользователь
 
Регистрация: 28.01.2011
Сообщений: 10
По умолчанию

вот список переменных e,f,g,h....JPG
но их слишком много, чтоб вбивать каждую в прогу вот и попросил чтоб сделали для массива ну допустим 4х4, чтоб я понял как дальше сделать для такого большого количества переменных

Последний раз редактировалось timezero; 03.02.2011 в 03:56.
timezero вне форума Ответить с цитированием
Старый 04.02.2011, 07:59   #15
timezero
Пользователь
 
Регистрация: 28.01.2011
Сообщений: 10
По умолчанию

Люди кто может помочь, хотябы для матрицы 4х4, а дальше я сам.
вот для такой допустим
а=0,5,12,22
b=1,4,9
c=5,8
d=7,15,24,31
соответственно максимальное значение H(max)=a(max)+b(max)+c(max)+c(max) получается = 70
это тоже надо учесть, то есть получится
if H>70 then writeln('не правильно введено число') , что то типо того
timezero вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
найти сумму максимальных значений из 2-х масивов. bratello41 C++ Builder 1 17.12.2010 14:25
Бейсик. Найти сумму численных значений элементов одномерного массива Марька Помощь студентам 4 16.03.2010 23:01
Найти сумму вычисленных значений функции Meet163 Фриланс 12 17.02.2010 05:22
Найти комбинации zzzzz Помощь студентам 3 29.09.2008 19:44