Turbo Pascal

kaAs^^

Забанен
Помогите перевести программу с C++ в Pascal

unsigned short CRC16(char *Msg, unsigned short Datalen)

{

char CRCHi = 0xFF, CRCLo-0xFF;
char Index;

while (DataLen--)

{

Index = CHCRi ^ *Msg++;
CRCHi = CRCLo ^ array_CRCHi[Index];
CRCLo = array_CRCLo[Index];

}

return ((CRCHi << 8) | CRCLo);

}

PS есть два масива с заданными значениями array_CRCHi и array_CRCLo, но указывать сдесь я думаю некчему.
Откуда вы "это" выдрали?
 

Sorcerer

Member
мне интересно,а рандомен ли рандом в паскале?) ато у меня он выдает одни и те же значения
 

Sorcerer

Member
как задается рандом я знаю. проблема в том что рандом при каждой последуйщей генерации выдает одни и те же результаты. а должен выдавать рандомные числа...
вот код программы ,точней модуля
Код:
unit summa;
interface
type ABC=array[1..15,1..15] of real;
var A:ABC;
    i,j:integer;
Function sum(A:ABC):real;
Function pro(A:ABC):real;
Procedure sim(A:ABC);
implementation
Function sum(A:ABC):real;
var sm:real;
begin
j:=0;
sm:=0;
for i:=1 to 15 do
begin
J:=j+1;
sum:=sm+A[i,j];
end;
end;
Function pro(A:ABC):real;
var pr:real;
begin
j:=0;
pr:=1;
for i:=1 to 15 do
begin
J:=j+1;
pro:=pr*A[i,j];
end;
end;
Procedure sim(A:ABC);
var no:real;
begin
no:=0;
for i:=1 to 15 do
for j:=1 to 15 do
begin
if i=j then no:=no+0
else
if A[i,j]=A[j,i] then no:=no+0
else
no:=no+1;
end;
if no=0 then writeln('simetrichna')
else
writeln('ne simetrichna');
end;

end.
а вот код программы проверки
Код:
program prxz;
uses summa,CRT;
var a:ABC;
z,zx:real;
 i,j,n:integer;
 begin
 ClrScr;
for i:=1 to 15 do
begin
for j:=1 to 15 do
begin
a[i,j]:=random*21;
write(a[i,j]:7:1);
end;
writeln;
end;
z:=sum(A);
zx:=pro(A);
sim(a);
writeln('summa',z:10:4);
writeln('proizvedenie',z:10:4);
readkey
end.
PS вот задание
 

Вкладення

Останнє редагування:

Пух

كنت بلهاء
Модератор
как задается рандом я знаю.
видимо не до конца знаете. Если внимательно присмотреться, то у меня перед random(x) стоит ещё randomize; (что собственно и написали вам ниже)...

УРААААА!!!!
PS если б еще кто сказал почему у меня функции выводят одинаковые значения(хотя вычисляют по разным формулам)
напиши код, так проще будет...
 

Sorcerer

Member
видимо не до конца знаете. Если внимательно присмотреться, то у меня перед random(x) стоит ещё randomize; (что собственно и написали вам ниже)...



напиши код, так проще будет...
он был выше=)
вот немного обновленный вариант модуля
Код:
unit summa2;
interface
type ABC=array[1..15,1..15] of real;
var A:ABC;
    i,j:integer;
procedure sp(A:ABC);
Procedure sim(A:ABC);
implementation

Procedure sim(A:ABC);
var no:real;
begin
no:=0;
for i:=1 to 15 do
for j:=1 to 15 do
begin
if i=j then no:=no+0
else
if A[i,j]=A[j,i] then no:=no+0
else no:=no+1;
end;
if no=0 then writeln('simetrichna')
else
writeln('ne simetrichna');
end;
procedure sp(A:ABC);
var pr,sm:real;
begin;
sm:=0;
pr:=1;
for i:=1 to 15 do
begin
sm:=sm+A[i,i];
pr:=pr*A[i,i];
end;
end;
end.
PS сам доделал,можете не волноваться=)
 
Останнє редагування:

dreamer

Member
УРААААА!!!!
PS если б еще кто сказал почему у меня функции выводят одинаковые значения(хотя вычисляют по разным формулам)
А они выводят разные значения, но вот этот код вызывает подозрения:
Код:
writeln('summa',[B]z[/B]:10:4);
writeln('proizvedenie',[B]z[/B]:10:4);
 
Зверху