مشاهدة النسخة كاملة : مساعدة في الباسكال تمرين
you92cef
2012-10-28, 13:53
السلام عليكم عيد مبارك سعيد للجميع تقبل الله منا ومنكم
عندي تمرين في الباسكال للاسف تعبت معاه وبرمجته بكل الاساليب ولكن يبدو انني متاثر بالعيد وعقلي لم يبدا في العمل بعد :1:
نص التمرين *-* ساهل ولكن لا يشتغل جيدا بكل الطرق التي برمجته به :confused:*-*
exrir un program pascal quio saisit des nombres entiers tant que leur somme est inferieur a 1000 puis qui affiche la somme obtenu et le nombre déentier saisis
you92cef
2012-10-28, 17:25
الا تساعدون؟
السلام عليكم ورحمة الله وبركاته
1-ممكن محاولتك
2-في اي سنة تدرس اولى او ثانية
بعدها ان شاء الله اساعدك
السلام عليكم و رحمة الله وبركاته
الحل من هنا
http://www.mediafire.com/?18jprhuuscj8jyt
صورة السورس كود من هنا
http://www.mediafire.com/view/?0kjmteuesw04n4k#
على ان تضع المحاولتك في المرة المقبلة
you92cef
2012-10-31, 18:07
السلام عليكم
تم حل المشكل بالاعتماد على نفسي
شكرا للجميع بغض النظر على ان بعض المحاولات لم تتطابق مع المضون
-----------
المشكل كان موجود انني كنت اقارن n الرقم الذي ادخله بالنسبة للباقي
بحيث او ادخلت مثلا 200 فالباقي يكون 800 وهذا خاطئ
لانني لو ادخلت مثلا 500 سوف يكون الباقي 500 ولكن 500<500
ففي هذه الحالة سوف يخرج
والحل هو مقارنة المجموع مع 1000
هذا هو الكود
-------------
program ex09;
uses wincrt;
var i,n,s,r,z:integer;
begin
i:=0;
s:=0;
r:=1000;
while s<1000 do begin
readln(n);
s:=s+n;
r:=r-n;
i:=i+1;
end;
if s>1000 then writeln('erreuer');
writeln('la somme est',s-n);
writeln('entree est',i-1);
end.
اللي فهمتو
1) saisir deux entier a et b
2) afficher la somme a+b, a et b si a+b <1000
programme itératif sans modules
----------------------------------------------------------
Program djelfa1 ;
Uses wincrt ;
Var
A,B : integer ;
Ok:Boolean;
Begin
While ok= false do
begin
Readln(A);
Readln(B);
If A+B<1000 then
Ok:=true;
End;
Writeln(a+b);
Writeln(A);
Writeln(B);
End.
programme récursif avec un module
-----------------------------------------------------------------
Program djelfa2 ;
Uses wincrt ;
Procedure lecture (var x,y :integer);
Begin
Readln(x);
Readln(y);
End;
Var
A,b:integer;
Begin
Lecture(a,b);
If A+B>1000 then
Lecture(a,b);
Writeln(a+b);
Writeln(A);
Writeln(B);
End.
you92cef
2012-11-03, 10:31
اللي فهمتو
1) saisir deux entier a et b
2) afficher la somme a+b, a et b si a+b <1000
programme itératif sans modules
----------------------------------------------------------
Program djelfa1 ;
Uses wincrt ;
Var
A,B : integer ;
Ok:Boolean;
Begin
While ok= false do
begin
Readln(A);
Readln(B);
If A+B<1000 then
Ok:=true;
End;
Writeln(a+b);
Writeln(A);
Writeln(B);
End.
programme récursif avec un module
-----------------------------------------------------------------
Program djelfa2 ;
Uses wincrt ;
Procedure lecture (var x,y :integer);
Begin
Readln(x);
Readln(y);
End;
Var
A,b:integer;
Begin
Lecture(a,b);
If A+B>1000 then
Lecture(a,b);
Writeln(a+b);
Writeln(A);
Writeln(B);
End.
-----------------------
لقد جربت كلا الحلين وللاسف هما خاطئين
التمرين يقول انك تدخل قيمة معينة لn وتستمر في اعطاءها اي قيمة طالما ان مجموع القيم لا يتجاوز 1000
يعني مثلا تخيل انه لديك 1000 دينار
بامكانك شراء عدة اشياء طالما ان مجموعها لا يتجاوز 1000 دينار
هذا هو مبدا البرنامج
وفي الاخير يظهر لك عدد الارقام التي ادخلتها *-* اشترتيها*-* وقيمتها
مثلا لو ادخلت
500
400
200
فانه عليه ان يظهر بان مجموع الاعداد التي ادخلتها هي 900*-* قيمة الاشياء التي اشترتيها*-*
وعدد الاشياء التي اشتريتها هي 2
---------------------
برنامجك الاول فيه خطئ بحيث عند البدا في العمل به مثلا وعند ادخال قيم 500 اكثر من مرتين يستمر في العمل
*-* جرب بالرنامج الاول وادخل قيم 500 *-* يمكنك ادخالها 100 مرة بدون ان يتوقف الربنامج*-*
البرنامج الثاني
اذا ادخلنا مثلا قيم 100 و100 فان الربنامج سوف يتوقف
الحل باستخدام while
راجع الردود السابقة
you92cef
2012-11-03, 10:31
هذا هو الحل
program ex09;
uses wincrt;
var i,n,s,r,z:integer;
begin
i:=0;
s:=0;
r:=1000;
while s<1000 do begin
readln(n);
s:=s+n;
r:=r-n;
i:=i+1;
end;
if s>1000 then writeln('erreuer');
writeln('la somme est',s-n);
writeln('entree est',i-1);
end.
King Soft
2012-11-03, 15:51
السلام عليكم اخوتي
اولا ملاحظة عن نص التمرين :
التمرين يقول اكتب برنامج يطلب اعداد حقيقية مدام مجموع الاعداد اقل من 1000 ف إذا فاق المجموع 1000 يتوقف البرنامج
عن طلب الاعداد ولذالك لسنا بحاجة لعرض رسالة الخطا الي كتبتها لان المجموع اصلا يجب ان يكون اكثر من الالف والا فلن يتوقف البرنامج.
تفضل الحل:
program Project1;
uses wincrt;
var X,S,i:integer;
T:array[1..100] of integer;
begin
S:=0;i:=0;
while s<1000 do
begin
i:=i+1;
read(x);
S:=S+X;
T[i]:=X;
end;
for x := 1 to i do
Writeln('le Numero',x,'est = ',T[x]);
Write('La Somme est = ',S);
readln; readln;
end.
بالتوفيق
you92cef
2012-11-03, 17:08
السلام عليكم اخوتي
اولا ملاحظة عن نص التمرين :
التمرين يقول اكتب برنامج يطلب اعداد حقيقية مدام مجموع الاعداد اقل من 1000 ف إذا فاق المجموع 1000 يتوقف البرنامج
عن طلب الاعداد ولذالك لسنا بحاجة لعرض رسالة الخطا الي كتبتها لان المجموع اصلا يجب ان يكون اكثر من الالف والا فلن يتوقف البرنامج.
تفضل الحل:
program Project1;
uses wincrt;
var X,S,i:integer;
T:array[1..100] of integer;
begin
S:=0;i:=0;
while s<1000 do
begin
i:=i+1;
read(x);
S:=S+X;
T[i]:=X;
end;
for x := 1 to i do
Writeln('le Numero',x,'est = ',T[x]);
Write('La Somme est = ',S);
readln; readln;
end.
بالتوفيق
-------------------
نعم يمكن حذف التعليق
ولكن انت اضفت تعاليق اكثر مني :1:
عموما برنامجك فيه بعض الاخطاء
مثلا اذا ادخلت 500 ثم 500 سوف يكتب المجموع 1000 وهذا خاطئ
لان نص التمرين يقول يجب ان يكون المجموع اقل من 1000*-* ليس اقل او يساوى *-*
يعني اكبر مجموع هو 999*-* في حالة تجاوز المجموع 1000او كان يساوي 1000 لا نحسب العدد الاخير
نفس الشيء اذا ادخلت 500 ثم 6000 سوف يكتب المجموع 1100:confused:
+
نص التمرين الاخر الذي يطلب عدد الاعداد التي ادخلتها لم تجب عليه
King Soft
2012-11-03, 18:02
اخي ااكد لك انك لم تفهم نص التمرين
¤ saisit des nombres entiers tant que leur somme est inferieur ¤
بمعنى البرنامج يواصل في طلب الاعداد مدام مجموع الاعداد اقل من 1000 فان فاق 1000 يتوقف ويعرض المجموع
اي ان شرط توقف حجز الاعداد هو المجموه يفوق 999
-----------------------
لقد جربت كلا الحلين وللاسف هما خاطئين
التمرين يقول انك تدخل قيمة معينة لn وتستمر في اعطاءها اي قيمة طالما ان مجموع القيم لا يتجاوز 1000
يعني مثلا تخيل انه لديك 1000 دينار
بامكانك شراء عدة اشياء طالما ان مجموعها لا يتجاوز 1000 دينار
هذا هو مبدا البرنامج
وفي الاخير يظهر لك عدد الارقام التي ادخلتها *-* اشترتيها*-* وقيمتها
مثلا لو ادخلت
500
400
200
فانه عليه ان يظهر بان مجموع الاعداد التي ادخلتها هي 900*-* قيمة الاشياء التي اشترتيها*-*
وعدد الاشياء التي اشتريتها هي 2
---------------------
برنامجك الاول فيه خطئ بحيث عند البدا في العمل به مثلا وعند ادخال قيم 500 اكثر من مرتين يستمر في العمل
*-* جرب بالرنامج الاول وادخل قيم 500 *-* يمكنك ادخالها 100 مرة بدون ان يتوقف الربنامج*-*
البرنامج الثاني
اذا ادخلنا مثلا قيم 100 و100 فان الربنامج سوف يتوقف
الحل باستخدام while
راجع الردود السابقة
كلاهما يعمل ولكن لم يستجيبا للطلب
قد حددت ما فهمت ثم اجبت وللأسف لم أستوعب جيدا المطلوب، على كل حال البركة في الاولاد يعطيهم الصحة:19:
you92cef
2012-11-03, 21:21
اخي ااكد لك انك لم تفهم نص التمرين
بمعنى البرنامج يواصل في طلب الاعداد مدام مجموع الاعداد اقل من 1000 فان فاق 1000 يتوقف ويعرض المجموع
اي ان شرط توقف حجز الاعداد هو المجموه يفوق 999
الاستاذ عندما شرح لنا التمرين شرح لنا هذا الشرح
نستمر في ادخال قيم لn مادام مجموعها اصغر او يساوي 999
لا يجب ان يكون المجموع 1000 او اكبر من الف
فاذا ادخلت مثلا 500 ثم 500
وكتبت المجموع 1000 فبحسب الاستاذ هذا خطا :confused:
فاذا ادخلت 500 ثم 500 يكون المجموع 500 وعدد الاعداد التي ادخلتها هي 1
هذا بحسب شرح الاستاذ :o
you92cef
2012-11-03, 22:13
شكرا للجميع
vBulletin® v3.8.10 Release Candidate 2, Copyright ©2000-2025, TranZ by Almuhajir