ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1241  
Старый 01.04.2009, 17:06
KaZ@NoVa
Постоянный
Регистрация: 05.07.2008
Сообщений: 555
Провел на форуме:
3134311

Репутация: 1467


Отправить сообщение для KaZ@NoVa с помощью ICQ Отправить сообщение для KaZ@NoVa с помощью AIM Отправить сообщение для KaZ@NoVa с помощью Yahoo
По умолчанию

ну мой вариант выводил все варианты таких расстановок.
вот. я писал на паскале и было это 2 года назад=)
но щас вспомню и быстренько сделаю на cpp
К вечеру нормально будет?)
 
Ответить с цитированием

  #1242  
Старый 01.04.2009, 17:15
WeReWoLf777
Новичок
Регистрация: 23.03.2009
Сообщений: 11
Провел на форуме:
14678

Репутация: 0
По умолчанию

да норм спс
 
Ответить с цитированием

  #1243  
Старый 01.04.2009, 17:18
WeReWoLf777
Новичок
Регистрация: 23.03.2009
Сообщений: 11
Провел на форуме:
14678

Репутация: 0
По умолчанию

прога сама должна расположить 8 ферзей на шахматной доске.
 
Ответить с цитированием

  #1244  
Старый 01.04.2009, 17:55
jawbreaker
Участник форума
Регистрация: 07.07.2008
Сообщений: 161
Провел на форуме:
1027635

Репутация: 234
По умолчанию

Цитата:
Сообщение от WeReWoLf777  
На шахматной доске надо разместить 8 ферзей так чтоб их пути не пересекались.
с комментариями плиз.
Читать
+ исходник на С:
Код:
int col[8], up_free[15], dn_free[15], coln[8] ;

main( )
{            
    int i ;

	  for ( i = 0 ; i <= 7 ; i++ )
    col[i] = 1 ;
     for ( i = 0 ; i <= 14 ; i++ )
    up_free[i] = dn_free[i] = 1 ;
    clrscr( ) ;
    addqueen( ) ;  
}            

 addqueen( )            
{            
    int i, c, r ;            
    static int comb, row = -1 ;
	  
    row++ ;

     /* Проверяем колонки */            
    for ( i = 0 ; i <= 7 ; i++ )            
    {            
        /* если клетка не находится под ударом */            
        if ( col[i] && up_free[i+row] && dn_free[row-i+7])
        {            
			  /* запоминаем, что в строке находится ферзь */
	          coln[row] = i ;

	           /* маркируем колонку и диагональ */ 
	          col[i] = 0 ;             
	          up_free[i+row] = 0 ;             
	          dn_free[row-i+7] = 0 ;

	           /* если заполнены все строки */            
	          if ( row >= 7 )            
	          {            
		          comb++ ;            
		          printf ( "\n\n\ncombination no. %d", comb ) ;
		          for ( r = 0 ; r <= 7 ; r++ )
		          {            
			          printf ( "\n" ) ;            
			          for ( c = 0 ; c <= 7 ; c++ )
			          {            
				          if ( c == coln[r] )            
					          printf ( " Q " ) ;
				          else            
					          printf ( " . " ) ;
			          }            
	        	  }            
	          }            
		      else            
  			  addqueen( ) ;

	           /* снимаем пометку с колонки и диагонали */            
		      col[ coln[row] ] = 1 ;            
  		  up_free[ row + coln[row] ] = 1 ;            
	          dn_free[ row - coln[ row ] + 7 ] = 1 ;            
	      }            
	  }            
    row-- ; /* уменьшаем счетчик строк, пробуем следующую комбинацию */
}

Последний раз редактировалось jawbreaker; 01.04.2009 в 17:59..
 
Ответить с цитированием

  #1245  
Старый 01.04.2009, 18:05
KaZ@NoVa
Постоянный
Регистрация: 05.07.2008
Сообщений: 555
Провел на форуме:
3134311

Репутация: 1467


Отправить сообщение для KaZ@NoVa с помощью ICQ Отправить сообщение для KaZ@NoVa с помощью AIM Отправить сообщение для KaZ@NoVa с помощью Yahoo
По умолчанию

Код HTML:
#include<stdio.h>

int col[8];
int up_free[15];
int dn_free[15];
int coln[8];

void addqueen(){
 int i,c,r;
 static int comb, row = -1;
 row++;
 //Проверяем все колонки
 for (i = 0; i <= 7; i++){
  //Если колонка не находится под ударом
  if ( col[i] && up_free[i+row] && dn_free[row-i+7]){
   //Запоминаем что в строке есть ферзь
   coln[row] = i;
   //Маркируем колонку и обе диагонали
   col[i] = 0;
   up_free[i+row] = 0;
   dn_free[row-i+7] = 0;
   //Если все строки мы уже запомнили, то выводим комбинацию
   if (row >= 7){
    comb++;
    printf("\n\nCombination number - %d\n",comb);
    for (r = 0; r <= 7; r++){
     printf("\n");
     for (c = 0; c <=7; c++){
      if (c == coln[r]){
       printf("@");
      }
      else{
       printf("-");
      }
     }
    }
   }
   else{
    addqueen();
   }
   //Снимаем метку с колонки и диагонали
   col[coln[row]] = 1;
   up_free[row+coln[row]] = 1;
   dn_free[row-coln[row]+7] = 1;
  }
 }
 //Переходим к следующему варианту
 row--;
}

int main(){
 int i;
 for (i = 0; i <= 7; i++){
  col[i] = 1;
 }
 for (i = 0; i<= 14; i++){
  up_free[i] = dn_free[i] = 1;
 }
 addqueen();
 return 0;
}
прогу писал давно - так что щас не думал, просто перевёл с одного языка на другой.
исходник. нужно только скомпилировать и запустить)
 
Ответить с цитированием

  #1246  
Старый 01.04.2009, 18:10
Chaak
Познавший АНТИЧАТ
Регистрация: 01.06.2008
Сообщений: 1,047
Провел на форуме:
5321514

Репутация: 3313


Отправить сообщение для Chaak с помощью ICQ
По умолчанию

KaZ@NoVa, как тебе не стыдно?
http://www.codenet.ru/progr/alg/ferzi.php
 
Ответить с цитированием

  #1247  
Старый 01.04.2009, 18:12
KaZ@NoVa
Постоянный
Регистрация: 05.07.2008
Сообщений: 555
Провел на форуме:
3134311

Репутация: 1467


Отправить сообщение для KaZ@NoVa с помощью ICQ Отправить сообщение для KaZ@NoVa с помощью AIM Отправить сообщение для KaZ@NoVa с помощью Yahoo
По умолчанию

Chaak ага) я походу оттуда классе в восьмом переводил на паскаль)
а теперь назадXD
 
Ответить с цитированием

  #1248  
Старый 01.04.2009, 19:05
WeReWoLf777
Новичок
Регистрация: 23.03.2009
Сообщений: 11
Провел на форуме:
14678

Репутация: 0
По умолчанию

большое спс
 
Ответить с цитированием

  #1249  
Старый 01.04.2009, 19:11
Hammer94
Новичок
Регистрация: 21.12.2008
Сообщений: 4
Провел на форуме:
27639

Репутация: 0
По умолчанию

Ребята срочно, помогите пожалуйста с задачкой, надо написать игру на C# как вот здесь(аналогичную) http://ifolder.ru/11376454

если что вот моя аська: 396052292

Последний раз редактировалось Hammer94; 01.04.2009 в 23:38..
 
Ответить с цитированием

Пмогите еще раз плиз.Перевести прогу с Паскаля на С++
  #1250  
Старый 02.04.2009, 15:48
WeReWoLf777
Новичок
Регистрация: 23.03.2009
Сообщений: 11
Провел на форуме:
14678

Репутация: 0
Question Пмогите еще раз плиз.Перевести прогу с Паскаля на С++

Помогите перевести прогу с паскаля в с++ (полностью)с коментами если можно.
Прога вот:
Код:
Uses CRT;
type
 real=extended;

const
  matrixA: array[1..3,1..3] of real  = ((-19/20,1/5,  3/5),
                                      (-1    ,0.1,  0.5),
                                      (-0.01 ,0  ,1/200));
  One: array [1..3,1..3] of real = ((1,0,0),
                                    (0,1,0),
                                    (0,0,1));
  U:array[1..3] of real = (1,1,1.1);

  var
   i,j,k,q:byte;
   A,At,A1,A2,Ar,One1:array[1..3,1..3] of real;
   delta,Det,S,alpha:real;
   B,Z,U1:array[1..3] of real;
   f:text;

   Procedure TransA;
    begin
     for i:=1 to 3 do
      for j:=1 to 3 do
         At[i,j]:=A[j,i]
    end;

   Function Koef(par1,par2:byte):real;
    var
     Sum:byte;
     Tmp:real;
      begin
       Sum:=par1+par2;
       Tmp:=1;
       for k:=1 to sum do
        Tmp:=Tmp*(-1);
       Koef:=Tmp;
      end;

   Function AlAdd(par1,par2:byte):real;
    type
     element=record
             value:real;
             flag:boolean;
             end;
    var
     BB:array[1..2,1..2] of real;
     AA:array[1..3,1..3] of element;
     k,v,w:byte;
     N:array[1..4] of real;
     P1:real;
    begin
     for v:=1 to 3 do
      for w:=1 to 3 do begin
       AA[v,w].value:=A2[v,w];
       AA[v,w].flag:=true
      end;
     for v:=1 to 3 do AA[par1,v].flag:=false;
     for v:=1 to 3 do AA[v,par2].flag:=false;
     { for v:=1 to 3 do begin
      for w:=1 to 3 do write(AA[i,j].value:2:3,' ');
      writeln
     end; }
     k:=1;
     for v:=1 to 3 do
      for w:=1 to 3 do
       begin
       if AA[v,w].flag then
        begin
         N[k]:=AA[v,w].value;
      {   writeln(N[k]);}
         k:=k+1
        end;
       end;
     BB[1,1]:=N[1];  BB[1,2]:=N[2];
     BB[2,1]:=N[3];  BB[2,2]:=N[4];
{     writeln('alg dop',par1,par2,' ',BB[1,1]*BB[2,2]-BB[1,2]*BB[2,1]);}
     AlAdd:=BB[1,1]*BB[2,2]-BB[1,2]*BB[2,1];
    end;

    Function DetCount:real;
     var
       S1:real;
       z:byte;
     begin
      S1:=0;
      for z:=1 to 3 do S1:=S1+A2[1,z]*Koef(1,z)*AlAdd(1,z);
      DetCount:=S1;
     end;

    Procedure RevMatr;
     begin
       for i:=1 to 3 do
        for j:=1 to 3 do
         Ar[j,i]:=Koef(i,j)*AlAdd(i,j)/DetCount;
{       for i:=1 to 3 do begin
        for j:=1 to 3 do write(Ar[i,j],' ');
        writeln;
       end;}
     end;

     Function AllRight:boolean;
      begin
       writeln(f,'*Ґўп§Є  Ї® 1-¬г н«-вг',(abs(U[1]-U1[1])));
       writeln(f,'*Ґўп§Є  Ї® 2-¬г н«-вг',(abs(U[2]-U1[2])));
       writeln(f,'*Ґўп§Є  Ї® 3-¬г н«-вг',(abs(U[3]-U1[3])));
       writeln(F);
       if (abs(U[1]-U1[1])<0.001) and (abs(U[2]-U1[2])<0.001) and
          (abs(U[3]-U1[3])<0.001) then AllRight:=true
          else AllRight:=false
      end;

     Function Pow(par1:real;par2:byte):real;
      var
       S2:real;
       z:byte;
      begin
       S2:=1;
       if par2=0 then begin
        Pow:=1;
        exit
       end
         else
           for z:=1 to par2 do S2:=S2*par1;
       Pow:=S2;
      end;

      BEGIN
       clrscr;
       Assign(f,'c:\tikh.txt');
       Rewrite(f);
       for i:=1 to 3 do
        for j:=1 to 3 do
         A[i,j]:=matrixA[i,j];
       TransA;
       Det:=0.000125;
       {----------------------------}
       for i:=1 to 3 do begin
        S:=0;
        for j:=1 to 3 do begin
          S:=S+At[i,j]*U[j];
          B[i]:=S
         end;
       end;
       {----------------------------}
       for i:=1 to 3 do
        for j:=1 to 3 do
         begin
          S:=0;
           for k:=1 to 3 do begin
            S:=S+At[i,k]*A[k,j];
            A1[i,j]:=S
           end
         end;
       {-----------------------------}
       q:=1;
      repeat
       alpha:=q/pow(4,q);
       for i:=1 to 3 do
        for j:=1 to 3 do
         One1[i,j]:=One[i,j]*alpha;
       for i:=1 to 3 do
        for j:=1 to 3 do
         A2[i,j]:=One1[i,j]+A1[i,j];
       RevMatr;
       {------------------------------}
       for i:=1 to 3 do begin
        S:=0;
        for j:=1 to 3 do begin
          S:=S+Ar[i,j]*B[j];
          Z[i]:=S
         end;
       end;
       for i:=1 to 3 do begin
        S:=0;
         for j:=1 to 3 do begin
          S:=S+A[i,j]*Z[j];
          U1[i]:=S
         end
       end;
       q:=q+1;
       until AllRight;
       {------------------------------}
       clrscr;
       writeln('ЏаЁЎ«Ё¦Ґ*ЁҐ Є *®а¬ «м*®¬г аҐиҐ*Ёо');
       for i:=1 to 3 do writeln('Z(',i,')=',z[i]);
       writeln;
       writeln('‡* зҐ*ЁҐ Їа ў®© з бвЁ ЇаЁ Ї®¤бв *®ўЄҐ ЇаЁЎ«. аҐиҐ*Ёп');
       for i:=1 to 3 do writeln('U1(',i,')=',U1[i]);
       writeln;
       writeln('‡* зҐ*ЁҐ Ї а ¬Ґва  аҐЈг«паЁ§ жЁЁ:');
       writeln(alpha);
       Close(f);
       readln;
      END.
сама задача и решение тут:http://letitbit.net/download/fedbf28...-----.doc.html
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сюда выкладываем все проги для фрикринга мобильников, которых знаем! nigger Сотовый фрикинг 5 11.04.2009 11:15
Американским студентам запретили пользоваться Skype KPOT_f!nd Мировые новости 1 28.09.2006 03:47
Любителям квестов сюда!! FoX's Болталка 10 25.01.2005 20:42



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


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




ANTICHAT.XYZ