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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2012, 21:36   #11
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Helen236, а чем Вас ваша предыдущая тема перестала устраивать?!

Цитата:
Что нужно изменить если дана строка символов (и числа и цифры)????
впрочем....
"Вы хочете песен?, их есть у меня!"

извольте:
Код:
uses crt;
const n = 4; { количество элементов в перестановке}
var a:array[1..n] of integer;
    j:integer;{счетчик}
    kol : longint;{количество перестановок}
    s: string[n];

procedure generate (l,r:integer;var k:longint);
var i,v:integer;
begin
if (l=r) then
  begin
    for i:=1 to n do write(s[a[i]],' ');
    writeln;
    k:=k+1;
  end
else
  begin
    for i := l to r do
      begin
        v:=a[l]; a[l]:=a[i]; a[i]:=v; {обмен a[i],a[l]}
        generate(l+1,r,k); {вызов новой генерации}
        v:=a[l]; a[l]:=a[i]; a[i]:=v; {обмен a[i],a[l]}
      end;
  end;
end;

begin
clrscr;
repeat
  WriteLn('Введите строку из нужных символов длиной ровно ',n,' символов:');
  Readln(s);
until length(s)=n;
for j := 1 to N do a[j]:=j;
generate( 1,n,kol);
writeln('kol=',kol);
readln
end.

Последний раз редактировалось Serge_Bliznykov; 09.04.2012 в 21:46.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.03.2014, 00:46   #12
woojin
Пользователь
 
Регистрация: 20.10.2013
Сообщений: 32
По умолчанию

всем привет!
у меня вопрос как раз по данной теме
есть набор чисел от 1 до 9
как при помощи данной программы с генерировать все возможные комбинации длинной 2 символа

пример: 1-2, 1-3, 1-4, 1-5 и т.д.
woojin вне форума Ответить с цитированием
Старый 14.03.2014, 01:40   #13
woojin
Пользователь
 
Регистрация: 20.10.2013
Сообщений: 32
Восклицание

Цитата:
Сообщение от woojin Посмотреть сообщение
всем привет!
у меня вопрос как раз по данной теме
есть набор чисел от 1 до 9
как при помощи данной программы с генерировать все возможные комбинации длинной 2 символа

пример: 1-2, 1-3, 1-4, 1-5 и т.д.
всё сам справился, если кому надо (Delphi XE5):
PHP код:
program generation_of_permutations3;

{
$APPTYPE CONSOLE}

{
$R *.res}

uses
  System
.SysUtils;

var
  
a: array[1..91..9of string;
  
ijlinteger;

begin
  
try
    { 
TODO -oUser -cConsole Main Insert code here }
    
l:=0;
    for 
:= Low(ato High(a) do
       for 
:= Low(ato High(a) do
          
begin
            
if <> j then
               begin
                 a
[ij] := IntToStr(i) + '-' IntToStr(j);
                 
inc(l);
               
end
             
else
               
a[ij] := '***';
          
end;

    for 
:= Low(ato High(a) do
       
begin
         
for := Low(ato High(a) do
            
write(a[ij], '   ');
         
writeln;
       
end;
    
writeln('l='l);
    
readln;
  
except
    on E
Exception do
      
Writeln(E.ClassName': 'E.Message);
  
end;
end
woojin вне форума Ответить с цитированием
Старый 14.03.2014, 08:53   #14
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Если сишникам интересно как работает алгоритм перестановок из библиотеки STL, вот алгоритм:

Код:
#include <iostream>
#include <algorithm>
using namespace std;

int main()
{
int myints[] = {1,2,3};
  do 
  {
    cout << myints[0] << ' ' << myints[1] << ' ' << myints[2] << '\n';
  } while (next_permutation(myints,myints+3) );
cin.get();
return 0;
}
И к стати, количество перестановок равно не N^X, а !N.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 14.03.2014 в 09:03.
Smitt&Wesson вне форума Ответить с цитированием
Старый 14.03.2014, 16:00   #15
woojin
Пользователь
 
Регистрация: 20.10.2013
Сообщений: 32
По умолчанию

а алгоритм то где?
просто передача массива в функцию это и есть весь алгоритм!
woojin вне форума Ответить с цитированием
Старый 14.03.2014, 16:50   #16
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от woojin Посмотреть сообщение
а алгоритм то где?
Читайте код внимательнее. #include <algorithm>
STL содержит свыше 100 алгоритмов и их вариантов. Один из них - генератор перестановок, функции nex_permutation и prev_permutation.
Я показал, как эти функции, могут быть использованы в конкретном приложении и на сколько сокращается код, при их применении.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 15.03.2014, 11:26   #17
woojin
Пользователь
 
Регистрация: 20.10.2013
Сообщений: 32
Лампочка

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Читайте код внимательнее. #include <algorithm>
STL содержит свыше 100 алгоритмов и их вариантов.
а к примеру зачем грузить все алгоритмы забивая этим память, если требуется только один из 100
P.S. а так очень удобно - не надо велосипед изобретать
woojin вне форума Ответить с цитированием
Старый 15.03.2014, 11:36   #18
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от woojin Посмотреть сообщение
а к примеру зачем грузить все алгоритмы забивая этим память, если требуется только один из 100
P.S. а так очень удобно - не надо велосипед изобретать
Молодой человек, почитайте, что такое линковщик и компилятор и всё станет на свои места. При линковке, из библиотеки беруться только те функции, которые непосредственно используются в программе. Остальные 99, просто игнорируются. Если бы из библиотеки iostream, компилировались все функции, когда мы используем только cin.get() (а их там более 200), то каждая копеешная программа, весила-бы не меньше мегобайта. Что уж говорить о таких библиотеках как VCL...
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 15.03.2014 в 11:42.
Smitt&Wesson вне форума Ответить с цитированием
Старый 15.03.2014, 11:47   #19
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Если сишникам интересно как работает алгоритм перестановок из библиотеки STL, вот алгоритм
Только что-то не заметно там самого алгоритма. Это что-то в духе ответа на вопрос "какой алгоритм вычисления синуса" - обратись к функции sin. Забавно
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 15.03.2014, 11:52   #20
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Только что-то не заметно там самого алгоритма. Это что-то в духе ответа на вопрос "какой алгоритм вычисления синуса" - обратись к функции sin. Забавно
А зачем забивать гвозди микроскопом? Если следовать Вашей логике, то библиотеки вообще не нужны, да и высокоуровневые языки тоже. Пусть программёры пишут на АСМЕ. Там и алгоритм и полный доступ к ресурсам. В общем, в топку все С++, Паскуале и пр... .
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Комбинаторика. Получение возможных вариантов. Alex Cones Общие вопросы Delphi 3 16.01.2011 13:52
Перебор возможных комбинаций в матрице N*N Руслан_911 Помощь студентам 3 25.11.2010 20:35
Перебор возможных комбинаций символов Toxask8 Общие вопросы C/C++ 1 12.12.2009 21:33
сортировка данных (пересчет возможных вариантов комбинаций, перенос данных в таблицу) Vitalik85 Microsoft Office Excel 4 12.08.2009 00:30