Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

01.04.2009, 17:06
|
|
Постоянный
Регистрация: 05.07.2008
Сообщений: 555
Провел на форуме: 3134311
Репутация:
1467
|
|
ну мой вариант выводил все варианты таких расстановок.
вот. я писал на паскале и было это 2 года назад=)
но щас вспомню и быстренько сделаю на cpp
К вечеру нормально будет?)
|
|
|

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

01.04.2009, 17:18
|
|
Новичок
Регистрация: 23.03.2009
Сообщений: 11
Провел на форуме: 14678
Репутация:
0
|
|
прога сама должна расположить 8 ферзей на шахматной доске.
|
|
|

01.04.2009, 17:55
|
|
Участник форума
Регистрация: 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..
|
|
|

01.04.2009, 18:05
|
|
Постоянный
Регистрация: 05.07.2008
Сообщений: 555
Провел на форуме: 3134311
Репутация:
1467
|
|
Код 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;
}
прогу писал давно - так что щас не думал, просто перевёл с одного языка на другой.
исходник. нужно только скомпилировать и запустить)
|
|
|

01.04.2009, 18:10
|
|
Познавший АНТИЧАТ
Регистрация: 01.06.2008
Сообщений: 1,047
Провел на форуме: 5321514
Репутация:
3313
|
|
KaZ@NoVa, как тебе не стыдно?
http://www.codenet.ru/progr/alg/ferzi.php
|
|
|

01.04.2009, 18:12
|
|
Постоянный
Регистрация: 05.07.2008
Сообщений: 555
Провел на форуме: 3134311
Репутация:
1467
|
|
Chaak ага) я походу оттуда классе в восьмом переводил на паскаль)
а теперь назадXD
|
|
|

01.04.2009, 19:05
|
|
Новичок
Регистрация: 23.03.2009
Сообщений: 11
Провел на форуме: 14678
Репутация:
0
|
|
большое спс
|
|
|

01.04.2009, 19:11
|
|
Новичок
Регистрация: 21.12.2008
Сообщений: 4
Провел на форуме: 27639
Репутация:
0
|
|
Ребята срочно, помогите пожалуйста с задачкой, надо написать игру на C# как вот здесь(аналогичную) http://ifolder.ru/11376454
если что вот моя аська: 396052292
Последний раз редактировалось Hammer94; 01.04.2009 в 23:38..
|
|
|
Пмогите еще раз плиз.Перевести прогу с Паскаля на С++ |

02.04.2009, 15:48
|
|
Новичок
Регистрация: 23.03.2009
Сообщений: 11
Провел на форуме: 14678
Репутация:
0
|
|
Пмогите еще раз плиз.Перевести прогу с Паскаля на С++
Помогите перевести прогу с паскаля в с++ (полностью)с коментами если можно.
Прога вот:
Код:
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
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|