Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.23;
Скачать: CL | DM;

Вниз

С++ TO DELPHI (PASCAL)   Найти похожие ветки 

 
DroNIX   (2005-10-01 21:38) [0]

Что я сделал не так?
Вот исходник на СИ:


void easing ( unsigned long * P, unsigned long * S , int numb, int& numb_kon )
{
    P[numb] = P[numb_kon - 1];
    S[numb] = S[numb_kon - 1];
    if ( numb_kon > 1 )  numb_kon--;
}

int skleiv ( unsigned long * P, unsigned long * S, int i, int j, int& numb_kon )
{
   unsigned long c;
   if ( P[i] == P[j] ) {
c = S[i] ^ S[j];
if ( c ) {
    if ( ! ( c & (c - 1) ) ) {
  P[i] &= ~c;
  S[i] &= ~c;
  easing ( P, S, j, numb_kon );
  return 0;
    }
    else
 return 1;
}
// Две одинаковые конъюнкции
else  {
    easing ( P, S, j, numb_kon );
    return 1;
}
   }
   else
return 1;
}

int nep_skleiv ( unsigned long * P, unsigned long * S, int i, int j )
{
   unsigned long c;
   int d;
   if ( !( P[i] & ~P[j] ) && !( P[i] == P[j] ) ) {
 d = j;
   }
   else {
if ( !( ~P[i] & P[j] ) && !( P[i] == P[j] ) ) {
     d = i;
}
else
    return 1;
   }
   c = ( S[i] ^ S[j] ) & ( P[i] & P[j] );
   if ( ! ( c & ( c - 1 ) ) ) {
 P[d] &= ~c;
 S[d] &= ~c;
 return 0;
   }
   else
return 1;
}

int poglosh ( unsigned long * P, unsigned long * S, int i, int j, int& numb_kon )
{
   unsigned long c;
   if ( ! ( ~P[j] & P[i] ) ) {
c = P[i] & P[j];
if ( ! ( ( S[i] ^ S[j] ) & c ) ) {
    easing ( P, S, j, numb_kon );
    return 0;
}
else
    return 1;
   }
   else
return 1;
}

Вот так я сделал в делфи: Уже 2 недели немогу понять что тут не правильно.

procedure easing(numb: integer;  var numb_kon1: integer);
begin
 P[numb]:= P[numb_kon1-1];
 S[numb]:= S[numb_kon1-1];
Form1.P.Lines.Add(IntToStr(P[numb])+" cn="+IntToStr(cn));
Form1.S.Lines.Add(IntToStr(S[numb]));
inc(cn);
 if numb_kon1>1
 then
 dec(numb_kon1);
end;

function skleiv(i: integer;  j: integer;  var numb_kon: integer): integer;
var
cx: integer;
begin
 if P[i]=P[j] then
 begin
   cx:= S[i] xor S[j];
   if cx<>0 then
   begin
     if (cx and (cx-1)) = 0 then
     begin
       P[i]:= P[i] and not cx;
       S[i]:= S[i] and not cx;
       easing(j,numb_kon);
       begin
         result:= 0;
         exit;
       end;
     end
     else
     begin
       result:= 1;
       exit;
     end;
   end
   else
   begin
     easing(j,numb_kon);
     begin
       result:= 1;
       exit;
     end;
   end;
 end
 else
 begin
   result:= 1;
   exit;
 end;
end;

function nep_skleiv(i: integer;  j: integer): integer;
var
cx, d: integer;
begin
if ((P[I] and not P[j]) = 0) and (P[i] <> P[j])
 then
 begin
   d:= j;
 end
 else
 begin
 if ((not P[I] and P[j]) = 0) and (P[i] <> P[j])
   then
   begin
     d:= i;
   end
   else
   begin
     result:= 1;
     exit;
   end;
 end;
 cx:= (S[i] xor S[j]) and (P[i] and P[j]);

 if (cx and (cx-1))=0 then
 begin
   P[d]:= P[d] and ( not cx);
   S[d]:= S[d] and ( not cx);
   begin
     result:= 0;
     exit;
   end;
 end
 else
 begin
   result:= 1;
   exit;
 end;
end;

function poglosh(i: integer;  j: integer;  var numb_kon: integer): integer;
var
cx: integer;
begin
 if  (not P[j] and P[i])=0 then
 begin
   cx:= P[i] and P[j];
 if ( ( S[i] xor S[j] ) and cx) <> 0 then
   begin
     easing(j,numb_kon);
       result:= 0;
       exit;
   end
   else
   begin
     result:= 1;
     exit;
     
   end;
 end
 else
 begin
   result:= 1;
   exit;
   
 end;
end;


 
Кефир87 ©   (2005-10-01 22:50) [1]

Ну и кто это будет читать?! Ты хоть покажи где ошибка...


 
S@shka ©   (2005-10-01 22:57) [2]

Я честно посмотрел )))) - вскользь ))))


 
DroNIX   (2005-10-02 19:37) [3]

Скорей всего в функции nep_skleiv
Остальное врде правильно считает.



Страницы: 1 вся ветка

Текущий архив: 2005.10.23;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.056 c
3-1126175918
ХиМ
2005-09-08 14:38
2005.10.23
Внешняя база данных не имеет предполагаемого формата


14-1128078838
Delphin
2005-09-30 15:13
2005.10.23
Как позвонить?


2-1128078215
SergProger
2005-09-30 15:03
2005.10.23
Несколько файлов в одном Exe


14-1128002509
NewWonder
2005-09-29 18:01
2005.10.23
Сайтострой


14-1128359821
Kerk
2005-10-03 21:17
2005.10.23
[Эксперимент] Рафинад прессованный





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский