المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : مساعدة في كتابة خوارزمية


boughaba mohamed
2012-11-27, 14:40
السلام عليكم
أريد مساعدتكم في كتابة خوارزمية لإنجازبرنامج يقوم بقراءة أربعة ارقام صحيحة ويطبع اصغر ثلاث ارقام من بينها
ولو امكن أيضا نموذج لترجمتها للباسكال

fatima0147
2012-11-27, 21:37
algorithme ex01;
variables a,b,c,d : entier
debut
ecrireln ('entrer les valeurs de a,b,c,d');
lire (a,b,c,d);

si (a>b) et (b>c) et (c>d)
ecrireln('les valeur minimonet sont', a, 'et',b,'et',c);


sinon
ecrireln('les valeur mininmontsont',b,'et', c,'et',d);
finsi ;
fin.[/CENTER][/LEFT]

fatima0147
2012-11-27, 21:40
اتمنيى اني افيدك مع العلم انا لي كتبتو يعني يمكن توجد فيه اخطاء ومن بعيدين سوف اضع لك برنامج بسكال

boughaba mohamed
2012-11-27, 23:47
بارك الله فيك
وأنا بدوري حاولت كثيرا فيه حيث توصلت لإنجاز البرنامج في الباسكل لكن هناك مشكلة فهويعرض الثلاث ارقام الأكبر لكنه يقوم بتكرارها عدة مرات ولم استطع التخلص من ذلك فماهو الحل

fatima0147
2012-11-28, 19:26
ترجمة الخورزمية في برنامج بسكال
[LEFT]program ex01;
var a,b,c,d : integer ;
begin
writeln('entrer les valeurs de a,b, c, d');

readln(a,b, c, d );

if (a>b) and (b>c) and (c>d) then writeln (' les valeur mininmont sont:' , a, b, c )
else writeln ( ' les valeurs minimont sont :' , b, 'et', c, 'et ' ,d )
end . LEFT]والله اعلم

fatima0147
2012-11-28, 19:41
طبعا ضع ;في نهاية كل تعليمة ماعدا قبل else فانها غير موجودة لكي تتخلص من تكرار العمليات ضع تحت program uses crt و تحت begin ضع clrscr;
تم ضع قبل end.ضع readln;ان شاءالله اكون قدرت افيدك

boughaba mohamed
2012-11-29, 00:26
شكرا لك اختي الكريمة لقد توصلت بفضل مساعدتك لي لإنجاز البرنامج بشكل جيد الا ان هناك اخطاء طفيفة في ترجمتك للخوارزمية للباسكال

you92cef
2012-11-29, 09:28
الخوارزمية ناقصة اخي

يجب مقارنة كل الحالات 4**4 حالة *-* 4 اس 4 حالة لذلك من الصعب مقارنتها وتحتاج الى وقت فقط
حاولي استعمال رسوم حتى تنجزه
هل تحتاجه*-*يه*-* ضروري ؟

fatima0147
2012-11-29, 18:58
انا لما جربتها في برنامج بسكال اعطتني النتيجة لي طلبها اانو 3ارقام الاصغر

Morphus007
2012-11-29, 19:48
Non ma soeure c'est une solution fausse
Voici la solution
Algo
Var a,b,c,d,min : entier;
debut
lire(a,b,c,d);
min:=a;
si a >b alors
min:=b;
si min>c alors
min:=c;
si min>d alors
min:=d;
ecrire(min);
fin

you92cef
2012-11-29, 21:31
انا لما جربتها في برنامج بسكال اعطتني النتيجة لي طلبها اانو 3ارقام الاصغر

اخي جربي كل الحالات
انت جربتي حالة واحدة فقط
جربي بالاعداد السالبة والموجبة مثلا
جربي ادخال هذه القيم
-5
8
3
-10

انتظر الاجابة

you92cef
2012-11-29, 21:33
non ma soeure c'est une solution fausse
voici la solution
algo
var a,b,c,d,min : Entier;
debut
lire(a,b,c,d);
min:=a;
si a >b alors
min:=b;
si min>c alors
min:=c;
si min>d alors
min:=d;
ecrire(min);
fin

ايضا البرنامج خاطئ وغير كامل
حاول وضع كل الاحتماللات

Morphus007
2012-11-30, 08:16
algo
var a,b,c,d,min : Entier;
debut
lire(a,b,c,d);
min:=a;
si a >b alors
min:=b;
si min>c alors
min:=c;
si min>d alors
min:=d;
si min<> a alors ecrire(a);
si min<> b alors ecrire(b);
si min<> d alors ecrire(d);
si min<> c alors ecrire(c);
fin

you92cef
2012-11-30, 10:09
algo
var a,b,c,d,min : Entier;
debut
lire(a,b,c,d);
min:=a;
si a >b alors
min:=b;
si min>c alors
min:=c;
si min>d alors
min:=d;
si min<> a alors ecrire(a);
si min<> b alors ecrire(b);
si min<> d alors ecrire(d);
si min<> c alors ecrire(c);
fin

للاسف الالغوريتم خاطئ وناقص

تابع الصورة للشرح

http://im20.gulfup.com/WHJJ1.png

فيجب اولا مقارنة ما اذا كان a اكبر او اصغر من صفر ثم مقارنة a مع b ومع c ومع d ثم مقارنة b مع c وc مع d وd مع a
وفي كل حالة تختلف النتيجة

شكرا للجميع

Morphus007
2012-11-30, 12:05
Non mon algorithme est juste mais il donne comme resultat les 3 nombre les plus grand , et pour avoir les 3 nombre les plus petit il fait inverse symbole de comparaison.
et concernant comparaison avec 0 est pas obligatoire paeceque les nombre negatives sont des nombre entiers
Voici la solution juste a 100%
algo
var a,b,c,d,max : Entier;
debut
lire(a,b,c,d);
max:=a;
si a <b alors
max:=b;
si max<c alors
max:=c;
si max<d alors
max:=d;
si max<> a alors ecrire(a);
si max<> b alors ecrire(b);
si max<> d alors ecrire(d);
si max<> c alors ecrire(c);
fin

Morphus007
2012-11-30, 12:12
Non mon algorithme est juste mais il donne comme resultat les 3 nombre les plus grand , et pour avoir les 3 nombre les plus petit il fait inverse symbole de comparaison.
et concernant comparaison avec 0 est pas obligatoire paeceque les nombre negatives sont des nombre entiers
Voici la solution juste a 100%
algo
var a,b,c,d,max : Entier;
debut
lire(a,b,c,d);
max:=a;
si a <b alors
max:=b;
si max<c alors
max:=c;
si max<d alors
max:=d;
si max<> a alors ecrire(a);
si max<> b alors ecrire(b);
si max<> d alors ecrire(d);
si max<> c alors ecrire(c);
fin

fatima0147
2012-11-30, 12:26
اعتقد يا أخي انو طلب منا نعطيه في الغوريتم 3 ارقام الاصغر انا اليوم بالليل رح اشتغل عليه وحقيقة انا ما جربت الارقام سالبة شكرا للملاحظة Morphus007

boughaba mohamed
2012-11-30, 13:08
مشكورين اخواني على هذا التفاعل انا قمت بإنجاز البرنامج بأخذ ثلاث حالات والبرنامج كان مقبولا الا ان المشكلة هي عندما تكون c اصغر قيمة يكررها مرتين ويحذف احدى القيم الاْخرى

you92cef
2012-11-30, 14:12
oui ca marche merci