المشاركات : 654
المواضيع 82
:
: 57
الإنتساب : Mar 2011
03-05-2020, 08:23 AM
(آخر تعديل لهذه المشاركة: 03-05-2020, 08:27 AM بواسطة onexite.)
قمت ببرمجة دالة تقوم بحساب مفتاح ccp
طريقة الحساب
من اليمين إلى السيار(نبدأ الضرب من رقم 4 فما فوق) وانا قمت بالعملية العكسية لان الحساب فيه 10 ارقام
والناتج هو العشرات
PHP كود :
function CleCcp(Str: string): Word;
var
i: 1..10;
begin
for i := 1 to 10 do
if Length(Str) <> 10 then
Str := '0' + Str;
Result := 0;
for i := 1 to Length(Str) do
Result := Result + strtoint(Str[i]) * (14 - i);
Result := Result mod 100;
end;
المشاركات : 654
المواضيع 82
:
: 57
الإنتساب : Mar 2011
04-05-2020, 07:28 AM
(آخر تعديل لهذه المشاركة: 04-05-2020, 08:32 AM بواسطة onexite.)
PHP كود :
function CleCcp(Str: string): Word;
var
i: 1..10;
begin
str := Format('%.*d',[10, strtoint(Str)]);
Result := 0;
for i := 1 to 10 do // Length(Str)
Result := Result + strtoint(Str[i]) * (14 - i);
Result := Result mod 100;
end;
بعض التعديلات
الاول صحيح لاكن عندما يكون عدد الحروف يساوي 10 لا يخرج من الحلقة
والحل السهل استخدام format
او اضافة Break عند تحقق الشرط
PHP كود :
for i := 1 to 10 do
if Length(Str) <> 10 then
Str := '0' + Str
else
Break;
ولحساب Rip يمكن استخدام هذه الفنكسيون
PHP كود :
function CleCcpRip(Str: string): Word;
begin
result := 97 - ((((StrToInt(Str) mod 97) * 3 mod 97) + 85) mod 97);
end;
المشاركات : 654
المواضيع 34
:
: 106
الإنتساب : Aug 2010
السلام عليكم
بداية الحساب من الأخير و الضرب في 4 تصاعديا دون مراعات طول المفتاح
PHP كود :
function CleCCP(const CCP: string): Integer;
var
L,I: Integer;
begin
Result := 0;
I := 4;
for L := Length(CCP) downto 1 do
begin
Result := Result + StrToInt(CCP[L]) * I;
Inc(I)
end;
Result := Result mod 100;
end;
سبحان الله وبحمده سبحان الله العظيم
المشاركات : 305
المواضيع 50
:
: 43
الإنتساب : Sep 2010
هل من الممكن اخي onexite وضع الكود كامل لو سمحتم حتى نتمكن من التتابعة
وقل ربي زدني علماً
المشاركات : 654
المواضيع 82
:
: 57
الإنتساب : Mar 2011
04-05-2020, 06:13 PM
(آخر تعديل لهذه المشاركة: 05-05-2020, 07:08 AM بواسطة onexite.)
(04-05-2020, 05:46 PM)bouh25 كتب : هل من الممكن اخي onexite وضع الكود كامل لو سمحتم حتى نتمكن من التتابعة
PHP كود :
program Project1;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils;
function CleCCP(const CCP: string): Integer;
var
I: Byte;
begin
Result := 0;
for I := Length(CCP) downto 1 do
Result := Result + StrToInt(CCP[I]) * (Length(CCP) - I + 4);
Result := Result mod 100;
end;
var
CCP: string;
begin
try
repeat
Readln(CCP);
Writeln('**********************************');
Writeln(CleCCP(CCP));
// Readln;
until False;
{ TODO -oUser -cConsole Main : Insert code here }
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
المشاركات : 654
المواضيع 82
:
: 57
الإنتساب : Mar 2011
05-05-2020, 06:59 AM
(آخر تعديل لهذه المشاركة: 05-05-2020, 07:03 AM بواسطة onexite.)
(04-05-2020, 11:41 AM)Agmcz كتب : السلام عليكم
بداية الحساب من الأخير و الضرب في 4 تصاعديا دون مراعات طول المفتاح
PHP كود :
function CleCCP(const CCP: string): Integer;
var
L,I: Integer;
begin
Result := 0;
I := 4;
for L := Length(CCP) downto 1 do
begin
Result := Result + StrToInt(CCP[L]) * I;
Inc(I)
end;
Result := Result mod 100;
end;
يمكن الاستغناء عن متغير I
بهذه الطريقة
PHP كود :
function CleCCP(const CCP: string): Integer;
var
I: Byte;
begin
Result := 0;
for I := Length(CCP) downto 1 do
Result := Result + StrToInt(CCP[I]) * (Length(CCP) - I + 4);
Result := Result mod 100;
end;
المشاركات : 522
المواضيع 46
:
: 394
الإنتساب : Sep 2011
في حالة المفتاح يكون رقم واحد يضيف له صفر ، مثال النتيجة المفتاح 1 يردها 01
PHP كود :
function CleCCP(const CCP: string): string;
var
I: Byte;
begin
Result := '0';
for I := Length(CCP) downto 1 do
Result := IntToStr( StrToInt(Result) + StrToInt(CCP[I]) * (Length(CCP) - I + 4) );
Result := IntToStr( StrToInt(Result) mod 100 );
if Length(Result) = 1 then Result := '0'+ Result;
end;
لاستدعاء
PHP كود :
Edit2.Text := CleCCP(Edit1.Text) ;
المشاركات : 145
المواضيع 1
:
: 41
الإنتساب : Aug 2019
النتيجة غير صحيحة عندي, ربما لم أفهم الدالة.
المشاركات : 522
المواضيع 46
:
: 394
الإنتساب : Sep 2011
(05-05-2020, 03:30 PM)sofiane201 كتب : النتيجة غير صحيحة عندي, ربما لم أفهم الدالة.
المشاركات : 145
المواضيع 1
:
: 41
الإنتساب : Aug 2019
هذا ما اتبعته, لكن النتيجة غير صحيحة.