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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2010, 10:27   #1
Иллидан
Форумчанин
 
Регистрация: 16.01.2008
Сообщений: 288
По умолчанию Множитель циклов

Необходимо перебрать все возможные комбинации x[1]...x[n]. x1[1]...x[n] меняется в промежутке 0..360;
То есть, если n=2, то получается 2 таких цикла.
Код:
for(i=0;i<=360;i++)
{
  x[1]=i;
for(j=0;j<=360;j++)
  x[2]=j;

 }
Как объединить эти циклы так, что бы в зависимости n программа перебирала все комбинации для x[1]....x[n]?

Последний раз редактировалось Иллидан; 25.12.2010 в 10:29.
Иллидан вне форума Ответить с цитированием
Старый 25.12.2010, 12:15   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

По-моему банальный метод пузырьковой сортировки это делает.
Попробуй его применить.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.12.2010, 12:59   #3
Иллидан
Форумчанин
 
Регистрация: 16.01.2008
Сообщений: 288
По умолчанию

Как здесь его применять? Я здесь ничего не сортирую.
Это же комбинаторная задача.
Иллидан вне форума Ответить с цитированием
Старый 25.12.2010, 13:04   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вот что я имел ввиду.
Код:
var x:array[1..5] of integer;
 i,j,k,e:integer;
begin
 for i:=1 to 5 do x[i]:=i;

 for i:=1 to 5 do
  for j:=1 to 5 do begin
   k:=x[i];x[i]:=x[j];x[j]:=k;
   for e:=1 to 5 do write(x[e]:5); writeln;
  end;
  readln;
  { TODO -oUser -cConsole Main : Insert code here }
end.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.12.2010, 15:16   #5
Иллидан
Форумчанин
 
Регистрация: 16.01.2008
Сообщений: 288
По умолчанию

Так получится сочетания без повторений. То есть нет (1,1,1,1,1) например.
Иллидан вне форума Ответить с цитированием
Старый 25.12.2010, 16:03   #6
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

На таких задачах обычно учат[ся] не бояться рекурсии...
Код:
#include <stdio.h>

#define N_ELEM 3  // Array length
#define N_MAX  4  // Max. value for an element ( set it to 360 if you do not afraid to get tired of scrolling ;)

int x[N_ELEM] ;

void PrintX() {

   int j ;
   for ( j = 0; j< N_ELEM; j++ )
      printf( "%4d", x[j] );

   printf( "%c", '\n' ) ;

}


void NextXk( int k ) {
	
   int j ;

   if ( k == -1 )
      return ;

   x[k] += 1 ;
   if ( x[k] <= N_MAX ) {
      PrintX() ;
      NextXk( N_ELEM-1 ) ;
   } else {
      for ( j = k; j < N_ELEM; j++ )
         x[j] = 0;

      NextXk( k-1 ) ;
   }

}


void main() {

   int j ;
   for ( j = 0; j < N_ELEM; j++ )
      x[j] = 0;

   PrintX() ;

   NextXk( N_ELEM-1 ) ;

}
Vago вне форума Ответить с цитированием
Старый 25.12.2010, 16:18   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А-а-а... Я думал тебе нужен перебор конкретно такого кол-ва, а тебе еще полный брутфорс нужен...
ИМХО тут поможет рекурсия, я видел примеры на форуме, где выкладывались бруты, но ссылок не помню.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Операторы циклов while, for ISV-777 Помощь студентам 2 25.11.2010 13:00
3 вида циклов mind rebel Фриланс 11 05.03.2010 15:19
Оператор циклов.Паскаль Ам тя Помощь студентам 10 05.11.2009 15:35
Организация итерационных циклов МихХха Паскаль, Turbo Pascal, PascalABC.NET 18 19.05.2009 15:41
Организация циклов faelar Паскаль, Turbo Pascal, PascalABC.NET 4 25.01.2009 21:30