delphi4arab منتديات دلفي للعرب

نسخة كاملة : الصحيح و الخطأ
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
السلام عليكم
يمكن للمستخدم ان يدخل حرف و رقم
اكتب دالة باقل كود ممكن حيث تعيد قيمة بولينية حيث

اذا كان الحرف المدخل a و العدد اكبر 2 صحيح
اذا كان الحرف المدخل a و العدد اصغر او يساوي 2 خطأ
اذا كان الحرف b و العدد اكبر من 7 صحيح
اذا كان الحرف b و العدد اصغر او يساوي من 7 خطأ
اذا كان الحرف c و العدد اكبر من 20 صحيح
اذا كان الحرف c و العدد اصغر او يساوي من 20 خطأ
غير ذلك خطأ
التمرين بسيط Wink ارونا ابداعاتكم
مدة التمرين 3 ايام يفضل نقل الكود على الموضوع بدل المرفقات
الكود الاول
كود :
var i:integer; s:string; begin i:=1; s:='a'; if s='a' then begin if i > 2 then ShowMessage('true') else ShowMessage('false'); end else if s='b' then begin if i > 7 then ShowMessage('true') else ShowMessage('false'); end else if s='c' then begin if i > 20 then ShowMessage('true') else ShowMessage('false'); end else ShowMessage('errrrrrr'); end;
الكود الثاني
كود :
var i:integer; s:string; begin i:=8; s:='c'; if ( s='a' ) or (s='b' )or (s='c' ) then begin if i > 20 then ShowMessage('true') else if ( s='c' ) then ShowMessage('false') else if i > 7 then ShowMessage('true') else if ( s='b' ) then ShowMessage('false') else if i > 2 then ShowMessage('true') else ShowMessage('false') ; end else ShowMessage('rrrrrr');
السلام عليكم

الياس انت لم تحترم شروط التمرين المطلوب كتابة دالة + باقل كود ممكن على كل حال عدلت قليلا على الكود
PHP كود :
procedure TForm1.Button1Click(Sender: TObject);
begin
  
if InputValidation2(Edit1.Text[1], StrToInt(Edit2.Text)) then
  ShowMessage
('True')
    else
  
ShowMessage('False');
end; 
حلك الاول
PHP كود :
function TForm1.InputValidation1(s: string; i: integer): Boolean;
begin
  
if s = 'a' then
  begin
    
if i > 2 then
      Result 
:= True
    
else
      
Result := False;
  
end
  
else if s = 'b' then
  begin
    
if i > 7 then
      Result 
:= True
    
else
      
Result := False;
  
end
  
else if s = 'c' then
  begin
    
if i > 20 then
      Result 
:= True
    
else
      
Result := False;
  
end
  
else
    
Result := False; ;
end; 

حلك الثاني حسب رأي هذا افضل
PHP كود :
function TForm1.InputValidation2(s: string; i: integer): Boolean;
begin
  
if (s = 'a') or (s = 'b') or (s = 'c') then
  begin
    
if i > 20 then
      Result 
:= True
    
else if (s = 'c') then
      Result 
:= False
    
else if i > 7 then
      Result 
:= True
    
else if (s = 'b') then
      Result 
:= False
    
else if i > 2 then
      Result 
:= True
    
else
      
Result := False;
  
end
  
else
    
Result := False;
end; 

الحلان من ناحية النتائج نتائج صحيحة لكن طبعا خاطئان يمكن كتابة حل اصغر بكثير ...



محاولات اخرى...
كود :
function InputValidation2(s: string; i: integer): Boolean; begin if ((s = 'a') and (i > 2)) or ((s = 'b') and (i > 7)) or ((s = 'c') and (i > 20)) then Result := True else Result := False; end;
السلام عليكم ferrero
قاربت جدا من الحل يمكن حذف else ...
نعم صحيح يمكن حذف else
كود :
function InputValidation2(s: string; i: integer): Boolean; begin if ((s = 'a') and (i > 2)) or ((s = 'b') and (i > 7)) or ((s = 'c') and (i > 20)) then Result := True end;
السلام عليكم
حسنا سأطرح الحل
المسئلة منطقية اكثر منها برمجية
حسب مبدأ عدم التناقض لا يمكن لقضية ما ان تكون صحيحة و خاطئة في نفس الوقت و الا سينقلب العالم رأسا على عقب (عفوا على التفلسف لابد منه) :confused:
لدينا العديد من التعليمات التي تحتمل الصحيح و الخطأ لذلك لا يجب ابدا التحقق من الامرين اذا لم تكن صحيحة فهي بدون شك خائطة و اذا لم تكن خائطة فهي بدون شك صحيحة
اذا كان لدينا عدد احتمالات الصحيح > اكبر من عدد احتمالات الخطأ نتحقق من الخطأ و نجعل الصحيح افتراضي
اذا كان لدينا عدد احتمالات الخطأ > اكبر من عدد احتمالات الصحيح نتحقق من الصحيح و نجعل الخطأ افتراضي
في مثالنا امكانية ان يدخل المستخدم مدخلات خاطئة هي 4 احتمالات
و امكانية ان يدخل المستخدم مدخلات صحيحة هي 3 احتمالات
اذن نجعل الخطأ افتراضي و نتحقق من الصحيح ليكون لدينا تعليمات اقل للتحقق منها و اذا لم تكن صحيحة فهي بدون شك خاطئة
حتى دلفي دائما ينبهك الى ضرورة اعطاء قيم ابتدائة للمتغيرات البولينية
ان شاء الله يكون الشرح واضح
@ ferrero
PHP كود :
function InputValidation2(s: string; i: integer): Boolean;
begin
  Result 
:= False;
  if ((
s = 'a') and (i > 2)) or ((s = 'b') and (i > 7)) or ((s = 'c') and (i > 20)) then Result := True
 end
; 

و السلام عليكم
نعم كلامك صحيح والكود الاخير من الناحية البرمجية يعتبر هو الصحيح وشكرا على الشرح ايضا
السلام عليكم
يمكن اختصار الكود السابق

كود :
function InputValidation3(s: string; i: integer): Boolean; begin Result := ((s = 'a') and (i > 2)) or ((s = 'b') and (i > 7)) or ((s = 'c') and (i > 20)); end;
السلام عليكم

طبعا اخ B.M.AbdelAziZ بارك الله فيك يمكن ذلك في حالتنا لم ارد ذلك لكي اصل الى الغاية من التمرين لاني لاحظت الكثير من الاعضاء يكتبون اكواد التحقق بطريقة خاطئة هناك امور بسيطة تجعل البرمجة ممتعة و جميلة Rolleyes الجميع هنا للاخذ و المشاركة و هي الغاية من انشاء المنتدى ...
الصفحات : 1 2