موضوع مميز ملتقى طلاب الاعلام الالي لحل تمارين Algorithmes et programmation en Pascal - الصفحة 18 - منتديات الجلفة لكل الجزائريين و العرب

العودة   منتديات الجلفة لكل الجزائريين و العرب > منتديات الجامعة و البحث العلمي > منتدى الهندسة > قسم الرياضيات و الاعلام الالي

في حال وجود أي مواضيع أو ردود مُخالفة من قبل الأعضاء، يُرجى الإبلاغ عنها فورًا باستخدام أيقونة تقرير عن مشاركة سيئة ( تقرير عن مشاركة سيئة )، و الموجودة أسفل كل مشاركة .

آخر المواضيع

ملتقى طلاب الاعلام الالي لحل تمارين Algorithmes et programmation en Pascal

إضافة رد
 
أدوات الموضوع انواع عرض الموضوع
قديم 2013-02-01, 12:38   رقم المشاركة : 256
معلومات العضو
you92cef
عضو محترف
 
إحصائية العضو










افتراضي

اقتباس:
المشاركة الأصلية كتبت بواسطة ghost_4d مشاهدة المشاركة
علما ان محاولتي كالتالي
لا اعلم كيف نجعل الحلقة for تقوم كل باظهار الاعداد كالتالي 2,,4,,6,,يعني كل مرة تضيف الرقم 2 لذا كتبت تنبيه في الخوارزمي

كود:
 readln(n)
readln(x)
while n>=5 do
p,fact,s:=1
for i:=1 to n -1do
for j:=2 to n-1(هذه تقوم كل مرة بإضافة 2)
fact:=fact*j 
s:=x*x*s
cos:=1-p*s/fact+cos;;
p:=-p
write(cos)
end.
ينصح بتعريف انواع المتغيرات

ينصح باستعمال التعليقات

p,fact,s:=1
راجع*-*ي*-* الكتابة

s:=x*x*s
نفس الامر
x*x.=sqr(x);

راجع*-*ي*-* الحلقات
les boucle
لانها غير كاملة
pas de do dans la 2 ieme boucle

استعمال
begin end;
في الحلقات عندما يكون لدينا اكثر من عملية للقيام بها

cos
الصحيح
cos(x) ou cos(y) ou sin(u) ext

ينصح بعدم استعمال الدوال
cos ,sin;tan ext
داخل البرامج
بل اما ان نعطيها القيمة النهائية
او نظهرها في في العرض
*-*
الكتابة
cos(x):=1-p/fact+cos(x)
لا ينصح بها
ينصح بتغير
cos
ب
r
مثلا
r:=1-p/fact+r
بعدها
اما ان نكتب بعد نهاية عمل كل الحلقات
cos(x):=r
او نستعمل التعليقات
writeln('cos(',x,')=',r));

لان
r
في هذه الحالة متغير
variable
بينما
cos
هي دالة








 


رد مع اقتباس
قديم 2013-02-01, 14:48   رقم المشاركة : 257
معلومات العضو
ghost_4d
عضو مميّز
 
إحصائية العضو










افتراضي

هذه الخوارزمية كانت للتوضيح فقط ،، غرضها توصيل الفكرة فحسب ,,لكن مع ذلك الشكر موصول لكـ على النصائح ’’










رد مع اقتباس
قديم 2013-02-01, 14:53   رقم المشاركة : 258
معلومات العضو
ghost_4d
عضو مميّز
 
إحصائية العضو










افتراضي

اقتباس:
المشاركة الأصلية كتبت بواسطة you92cef مشاهدة المشاركة
بما ان هذه الدالة تتعامل فقط مع الاعداد الزوجية
فنقوم بعمل فحص
test si le nombre pair ou inpair avec la fonction mod

لخوارزمية

si n=0 ou n=1 alors fact:=1
si n=2 alors fact(2):=fact*(n-1)*n
=1*1*2
=2
si n=3 alors on a 3 mod 2=1 alors on fait rien

si n=4 alors on a 4 mod 2=0 alors fact:=fact*(n-1)*n
=2*3*4
=24
c'est vrai est ca marche bien

on continu

fair le meme choose pour la puissance

ensuite on fait p/fact

le resulat sera sommer avec la somme s

on verifier la condition est on choisi si on continu le meme travail ou on affiche le resultat

merci
لم افهمك جيدآآ ’’
الرجاء التوضيح اكثر ,,









رد مع اقتباس
قديم 2013-02-01, 14:59   رقم المشاركة : 259
معلومات العضو
didou25360
عضو جديد
 
إحصائية العضو










افتراضي

اريد حل معادلة من الدرجة الثانية الغوريتم او fortron وشكرا










رد مع اقتباس
قديم 2013-02-01, 17:17   رقم المشاركة : 260
معلومات العضو
you92cef
عضو محترف
 
إحصائية العضو










افتراضي

اقتباس:
المشاركة الأصلية كتبت بواسطة didou25360 مشاهدة المشاركة
اريد حل معادلة من الدرجة الثانية الغوريتم او fortron وشكرا
يوجد في الصفحات الاولى من هذا الموضوع
*-* اظن الصفحة 4 او 5*-*

حاول*-*ي*-* برمجته بنفسك









رد مع اقتباس
قديم 2013-02-01, 17:37   رقم المشاركة : 261
معلومات العضو
you92cef
عضو محترف
 
إحصائية العضو










افتراضي

اقتباس:
المشاركة الأصلية كتبت بواسطة ghost_4d مشاهدة المشاركة
الرجاء المساعدة في ايجاد هذه الخوارزمية
كود:
cosx=1-(x^2/2!)+(x^4/4!)-(x^6/6!)+...
عدد الحدود يكون معرفا من المستخدم واكبر من 5 ,
بما اننا نحتاج فقط الى الاعداد الزوجية
لحساب العاملي والاس

وبما ان
fact(n):=n*f(n-1);
5!:=5*4!

اذن لم ادخلنا
n.=8
اننا نحتاج فقط الى الاعداد الزوجية لكي نحسب العاملي والاس
يعني ناخذ المجال
[1..8]
وكل مرة ناخذ قيمة اذا كانت زوجية نقوم بالحساب اذا لم تكن زوجية ناخذ القيمة التي تليها
ولهذا نحتاج الى دالة
for I.=1 to 8 do
ونحتاج الى معرفة اذا كانت المتغير زوجي ام فردي
من اجل هذا نستعمل الدالة
mod
I mod 2=0
اذا كان الشرط محققا فاننا نحسب العاملي
وبما اننا لم نحسب عاملي الاعداد الفردية لانه يحصل لدينا مشكل
لماذا؟
مثال
for I.=1 to 8 do
if I mod 2=0 then
fact:=n*fact

بحيث
في هذه الحالة
العاملي باللون الاخضر هو العاملي الجديد
والعاملي باللون الاحمر هو العاملي القديم
لنجرب عمل البرنامج
i:=1
عدد فردي لا نقوم بالحساب
i.=i+1
i:=2
عدد زوجي
نقوم بالحساب
2!:=2*1
بحيث 1 هو العاملي القديم
i.=3
فردي
i.=4
4!:=4*2
*-* طبقنا التعريف فقط*-*
بحيث 2 هو العاملي السابق
وهنا يكمن المشكل لاننا لم نحسب
3!
اذن لكي تكون لنا العبارة الصحيحة فيجب ان نضرب في 3
اذا نلاحظ ان 3 =4-1
اذن فهي هذه الحالة
نكتب
fact:=n*(n-1)*fact

ملاحظة
في حالة حساب
fact que de nombre pair ou inpair on doit multipliyer par n-1

car le fact encient :=fact(n-2)

نفس الامر بالنسبة للاس

لفهم اكثر*-* جرب*-*ي*-* بورقة وقلم
توجد اكثر من طريقة من بينها الطريقة ولكن هذه اسهل









رد مع اقتباس
قديم 2013-02-02, 23:53   رقم المشاركة : 262
معلومات العضو
you92cef
عضو محترف
 
إحصائية العضو










افتراضي

اقتباس:
المشاركة الأصلية كتبت بواسطة عودة امل مشاهدة المشاركة
هل الدالة tant queتكون دائما عكس الشرط

نعم يجب ان يتحقق الشرط حتى تعمل

tant que
تعني طالما ان

مثلا
tant que n devise 2 fair

فاذا كانت العدد الذي ادخلناه من قواسم 2 فاننا نقوم بالعمليات الموجودة داخل البوكل

بينما لا بوكل
iterer
فهي العكس
iterer
action
action2
until n divise 2

هي في الحالة الثانية تقوم بتكرار الامور حتى يتحقق الشرط

فاحدى الدالتين عكس الاخرى

فالدالة 1 تعمل طالما ان الشرط محقق وتتوقف عندما لا يتحقق
الدالة 2 تعمل طالما ان الشرط لم يتحقق وتتوقف عندما يتحقق الشرط

الدالة 1
while---tant que
طالما ان

الدالة 2
ietrer--repeat
كرر .... حتى









رد مع اقتباس
قديم 2013-02-05, 17:32   رقم المشاركة : 263
معلومات العضو
salemk
عضو مشارك
 
الصورة الرمزية salemk
 

 

 
إحصائية العضو










افتراضي

اقتباس:
المشاركة الأصلية كتبت بواسطة ghost_4d مشاهدة المشاركة
الرجاء المساعدة في ايجاد هذه الخوارزمية
كود:
cosx=1-(x^2/2!)+(x^4/4!)-(x^6/6!)+...
عدد الحدود يكون معرفا من المستخدم واكبر من 5 ,
هكذا قد يكون الأمر أفضل










رد مع اقتباس
قديم 2013-02-05, 18:10   رقم المشاركة : 264
معلومات العضو
salemk
عضو مشارك
 
الصورة الرمزية salemk
 

 

 
إحصائية العضو










افتراضي

اقتباس:
المشاركة الأصلية كتبت بواسطة عودة امل مشاهدة المشاركة
مشكوووووور مشكلتي تكمن في اختيار البوكل و العلاقاث اللي لازم نسثعملهم
كود:
En Pascal

For Compteur := V_initiale To V_finale  Do
Begin
Actions
End ;
 Boucle à utiliser si le nombre de répétions est connu à l’avance

 Le bloc d'instructions (Actions) est répété en modifiant le contenu de la variable Compteur par la valeur du SUCC(compteur) ;


 la valeur de départ que prend la variable Compteur est celle de V_initiale ;

 la dernière valeur que la variable Compteur va prendre est V_finale ;


 Le bloc d'instructions (Actions) est exécuté pour chacune des valeurs que prend successivement la variable Compteur ;

 La variable Compteur doit être de type scalaire (entier, caractère, booléen ou énuméré) ;


 Le nombre d’itérations ou de répétition est : ORD (V_finale) - ORD (V_initiale) + 1 ;

 le contenu de la variable Compteur peut être modifié par la valeur du PRED(Compteur), on parle de la boucle POUR avec un parcourt décroissant :
كود:
En Pascal
For Compteur :=V_finale Downto V_initiale  Do
Begin
Actions
End ;

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


كود:
En Pascal
Repeat
Actions
Until Condition ;
* La boucle répéter jusqu’à est à utiliser si l’action doit être exécutée au moins une seule fois ;

* Il est nécessaire qu’une instruction à l’intérieur de traitement de la boucle puisse modifier la valeur de la condition, si non on aura une boucle infinie ;


* L’ordre des instructions à répéter dans la boucle est parfois important.


---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

كود:
En Pascal
While  Condition  Do
Begin
Actions
End ;
* La boucle Tantque est à utiliser si l’action peut ne pas être exécutée (zéro fois) ;

* Si la valeur de la condition de non arrêt est vraie alors la boucle continue à s’exécuter, sinon la boucle s’arrête.


* En Pascal Begin et End; sont obligatoires même si la boucle comporte une seule instruction











رد مع اقتباس
قديم 2013-02-12, 11:29   رقم المشاركة : 265
معلومات العضو
ghost_4d
عضو مميّز
 
إحصائية العضو










افتراضي

هذه محاولتي في كتابة خوارزمية تحول من النظام العشري الى النظام الثنائي

لكن عندما ادخل اي رقم يظهر لي رقم 0 ,, لماذا وما المشكل ؟










رد مع اقتباس
قديم 2013-02-12, 13:17   رقم المشاركة : 266
معلومات العضو
agm1991
عضو نشيط
 
إحصائية العضو










افتراضي

اقتباس:
المشاركة الأصلية كتبت بواسطة ghost_4d مشاهدة المشاركة
هذه محاولتي في كتابة خوارزمية تحول من النظام العشري الى النظام الثنائي

لكن عندما ادخل اي رقم يظهر لي رقم 0 ,, لماذا وما المشكل ؟
السلام عليكم ورحمة الله وبركاته
التصحيح باللون الاحمر
كود:
uses crt;
var s1,s2,s3,s4,i:integer;
begin
clrscr;
    readln(s1);
    s4:=0;
    i:=0;
    s3:=1;
    repeat
     i:=i+1;
      if i=1 then s3:=1
      else
        begin
         s3:=s3*10;
        end;
        s2:=s1 mod 2;
        s1:=s1 div 2;
        s4:=s3*s2 + s4;

    until s1=0;
    writeln(s4);
    readln;
end.
كما ان الحل يعتبر محدود اذ لايمكن للبرنامج تحويل
عدد اكبر من 31 الى الاعداد العشرية لان النوع
Integer محصور بين 32767 و -32768 لذلك يرجى تحويل المتغيرات الى longint










رد مع اقتباس
قديم 2013-02-12, 15:25   رقم المشاركة : 267
معلومات العضو
ghost_4d
عضو مميّز
 
إحصائية العضو










افتراضي

اقتباس:
المشاركة الأصلية كتبت بواسطة agm1991 مشاهدة المشاركة
السلام عليكم ورحمة الله وبركاته
التصحيح باللون الاحمر
كود:
uses crt;
var s1,s2,s3,s4,i:integer;
begin
clrscr;
    readln(s1);
    s4:=0;
    i:=0;
    s3:=1;
    repeat
     i:=i+1;
      if i=1 then s3:=1
      else
        begin
         s3:=s3*10;
        end;
        s2:=s1 mod 2;
        s1:=s1 div 2;
        s4:=s3*s2 + s4;

    until s1=0;
    writeln(s4);
    readln;
end.
كما ان الحل يعتبر محدود اذ لايمكن للبرنامج تحويل
عدد اكبر من 31 الى الاعداد العشرية لان النوع
integer محصور بين 32767 و -32768 لذلك يرجى تحويل المتغيرات الى longint


نعم معك حق
احييك اخي ,,على اكتشاف الخطأ
والشكر موصول اليك ,









رد مع اقتباس
قديم 2013-02-12, 19:48   رقم المشاركة : 268
معلومات العضو
bhazar
عضو مجتهـد
 
إحصائية العضو










افتراضي

السلام عليكم
اريد حل لل الالغوريتم التالي
طلب منا الاستاذ كتابة الغوريتم عند ادخل مثلا اليه جملة يقوم بحساب عدد الاحرف المتكررة
انا في انتظار الحل منك و شكرا مسبقا لكم










رد مع اقتباس
قديم 2013-02-13, 01:25   رقم المشاركة : 269
معلومات العضو
salemk
عضو مشارك
 
الصورة الرمزية salemk
 

 

 
إحصائية العضو










افتراضي

اقتباس:
المشاركة الأصلية كتبت بواسطة ghost_4d مشاهدة المشاركة
هذه محاولتي في كتابة خوارزمية تحول من النظام العشري الى النظام الثنائي


هذه محاولتي لنظام اقل من 10 (فقط حاولت التعميم)

هل من تعليق أو نصيحة وجزاكم الله خيرا

ساحاول كتابة برنامج يحول من نظام الى نظام اخر (المشكلة في A B C D E F )

كود:
program re;
uses wincrt;

procedure saisir_base(var x:byte);
begin
writeln('donner la base de convertion');
readln(x);
if ((x<1) or (x>10)) then saisir_base(x);
end;


procedure saisir_nombre(var x:longint);
begin
writeln('donner un nombre en base 10');
readln(x);
if (x<=0) then saisir_nombre(x);
end;


procedure conv(y:longint;z:byte);
begin
if y<z then write(y)
else
begin
conv(y div z , z);
write( y mod z);
end;
end;

var
a:longint;
b:byte;

begin
saisir_nombre(a);
saisir_base(b);
conv(a,b);
end.









رد مع اقتباس
قديم 2013-02-13, 22:35   رقم المشاركة : 270
معلومات العضو
salemk
عضو مشارك
 
الصورة الرمزية salemk
 

 

 
إحصائية العضو










افتراضي

اقتباس:
المشاركة الأصلية كتبت بواسطة salemk مشاهدة المشاركة
هذه محاولتي لنظام اقل من 10 (فقط حاولت التعميم)

هل من تعليق أو نصيحة وجزاكم الله خيرا

ساحاول كتابة برنامج يحول من نظام الى نظام اخر (المشكلة في A B C D E F )

كود:
program conv;
uses wincrt;

var
chiffres,ch:string;
b,b1:byte;


function verifier(s:string;x:byte):boolean;
var
i:byte;
begin
i:=1;
while ((upcase(s[i]) in (['A'..'F','0'..'9'])) and (pos(upcase(s[i]),chiffres)<=x)) do
begin
i:=i+1;
end;
verifier:= (i>length(s)) and (length(s)>0);
end;


function base10(s:string;x:integer):longint;
var
v:longint;
i:byte;
begin
v:=0;
for i:=1 to length(s) do
v:= pos(upcase(s[i]),chiffres)-1 + (v*x);
base10:=v;
end;


function nouvellebase(x:longint;nb:byte):string;
var
s:string;
i:byte;
begin
s:='';
while not(x=0) do
Begin
i:= x mod nb;
s:= chiffres[i+1] + s;
x:= x div nb;
End;
nouvellebase:=s;
end;

begin
chiffres:='0123456789ABCDEF';
repeat
writeln('donner une valeur');
readln(ch);
writeln('Dans quelle base est-elle exprimée ?');
readln(b);
until ((verifier(ch,b)) and (ch<>'0') and (b in [2..16]));
writeln('Dans quelle base faut-il l''exprimer?');
readln(b1);
writeln(ch,' en base ',b,' est égale à ',nouvellebase(base10(ch,b),b1),' en base ',b1); 
end.
شكرا على التمارين التي طرحتموها









رد مع اقتباس
إضافة رد

الكلمات الدلالية (Tags)
ملتقى, الالي, الاعلام, طلاب


تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة

الانتقال السريع

الساعة الآن 12:07

المشاركات المنشورة تعبر عن وجهة نظر صاحبها فقط، ولا تُعبّر بأي شكل من الأشكال عن وجهة نظر إدارة المنتدى
المنتدى غير مسؤول عن أي إتفاق تجاري بين الأعضاء... فعلى الجميع تحمّل المسؤولية


2006-2024 © www.djelfa.info جميع الحقوق محفوظة - الجلفة إنفو (خ. ب. س)

Powered by vBulletin .Copyright آ© 2018 vBulletin Solutions, Inc