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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2013, 15:58   #1
Taranov
Новичок
Джуниор
 
Регистрация: 20.04.2013
Сообщений: 2
По умолчанию Перебор вариантов из элементов массива

Здравствуйте!

Есть одномерный массив m, который формируется определенным образом.
m = [8, 4, 4, 2, 2, 2, 2]. Дальше мы задаем параметр x от 1 до 4. Необходимо перебрать все возможные сочетания из элементов массива по x и вывести результаты.

Например, x=2. Перебор осуществляем по два элемента. Получаем: (8,4) (8,4) (4,4) (4,2) (2,2) (8,2) и т.д. всего 21 сочетание. Необходимо вывести все эти результаты в виде массива 2x21:
884428...
444222...

Например, x=3. Перебор по три элемента. Получаем (8,4,4) (8,4,2) (8,2,2) и т.д. всего 35 сочетаний. Программа должна сформировать массив 3x35 и вывести его.

Исходник с массивом:

Код:
VAR 	m: array of real;
        a,b,n,y,i,j,x: integer;

BEGIN
        a:=2; b:=2; n:=a*b+a+2; y:=2*a*b;

        Write('x= ');
        ReadLn(x);

        Setlength(m,n-1);

        // Формируем массив
        j:=1;
        m[j]:=8;

        for i:=1 to a do
            begin
              j:=j+1;
              m[j]:=(1/a)*y;
            end;

        for i:=1 to a*b do
            begin
              j:=j+1;
              m[j]:=(1/(a*b))*y;
            end;

        // Выводим массив
        for j:=1 to n-1 do write(m[j]:3:0);
        WriteLn;
        ReadLn
END.

Последний раз редактировалось Taranov; 21.04.2013 в 12:36.
Taranov вне форума Ответить с цитированием
Старый 20.04.2013, 19:59   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,309
По умолчанию

Можно попробовать так:
1. Пусть в массиве n элементов и необходимо получить сочетание из x элементов.
2. Организуем цикл, например по j, в котором просматриваем элементы массива от 1 до n-x.
3. Организуем вложенный цикл, в котором к элементу массива j выводим x последующих элементов: от i = j до j + x.
4. Выводим группу элементов командой writ.
5. Конец цикла i
6. Выводим символы: "Возврат каретки", "Новая строка" - writeln.
7. Конец цикла j.


Вроде так ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 20.04.2013, 22:01   #3
Taranov
Новичок
Джуниор
 
Регистрация: 20.04.2013
Сообщений: 2
По умолчанию

Что-то не состыковывается(

Цитата:
Сообщение от ViktorR Посмотреть сообщение
Можно попробовать так:
1. Пусть в массиве n элементов и необходимо получить сочетание из x элементов.
2. Организуем цикл, например по j, в котором просматриваем элементы массива от 1 до n-x.
3. Организуем вложенный цикл, в котором к элементу массива j выводим x последующих элементов: от i = j до j + x.
4. Выводим группу элементов командой writ.
5. Конец цикла i
6. Выводим символы: "Возврат каретки", "Новая строка" - writeln.
7. Конец цикла j.

Вроде так ...
1. Пусть n=5, пусть x=2. Например, массив [1 2 3 4 5].
2. Прокручиваем основной цикл 3 раза.
3. Берем 1ый элемент и к нему приписываем последующие через вложенный цикл 3 раза (i=1, i+x=3).
4. Получаем 1234.
И дальше новая строчка, а затем еще одна.
А должны получиться две строчки из 10 элементов:
1111222334
2345345455
Taranov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа перебора вариантов (изменить перебор цифровой на перебор буквенный) BArt2000 Паскаль, Turbo Pascal, PascalABC.NET 5 02.03.2015 12:56
Перебор всех вариантов saivs Общие вопросы Delphi 10 16.04.2013 10:06
перебор вариантов luffi Общие вопросы Delphi 2 05.12.2011 16:47
Рекурсия. Перебор всевозможных вариантов элементов матрицы Mr_freeman Помощь студентам 15 02.03.2011 21:08
Перебор всех возможных вариантов phenix Помощь студентам 3 03.12.2010 21:29