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

مشاهدة النسخة كاملة : موضوع مميز ملتقى طلاب الاعلام الالي لحل تمارين Algorithmes et programmation en Pascal


الصفحات : 1 [2] 3

you92cef
2013-02-01, 10:59
يعطيكم الصحة
انا مفهمتش هادي لاه نكتبوها ؟
حنا منديروهاش خلاص
uses wincrt;

قد لا تكتبوها في التمارين ولكن في البرمجة يجب كتابتها حتى يعمل البرنامج

لا ادري لماذا الاساتذة لا يقدمون برنامج كامل في الحصص :confused:

بخصوص
uses wincrt

فالباسكال برنامج وعند عمله يحتاج الى ان بعض ادوات الحاسوب وبعض البرمجيات الاخرى لكي يعمل

فهنا تكون دوال اخرى تاتي مع الباسكال نفسه او توجد في الحاسوب ايضا

فمثلا عند اظهار النتائج على شاشة الحاسوب نحتاج الى دالة تقوم باخذ النتائج وما نريد اظهاره من
ram
تقوم بعرضها

هنا نحتاج الى استدعاء هذه الدالة

فعوض ما نقوم بكل مرة باستدعاء الدوال التي نحتاجها نقوم باستدعاء دالة شاملة تقوم هي بدورها باستدعاء الدوال التي تحتاجها في البرنامج
فهذه الدالة هي
wincrt

فمثلا ناخذ البرنامجين التاليين


program ex;
uses wincrt;
var i:integer;
begin
writeln('lire i');
readln(i);
writeln(sqr(i));
end.



البرنامج الثاني



program ex;
var i:integer;
begin
writeln('lire i');
readln(i);
writeln(sqr(i));
end.



قارن بينهما

لمزيد من الفهم استعمل خاصية المساعدة في الباسكال

ghost_4d
2013-02-01, 11:12
الرجاء المساعدة في ايجاد هذه الخوارزمية
cosx=1-(x^2/2!)+(x^4/4!)-(x^6/6!)+...
عدد الحدود يكون معرفا من المستخدم واكبر من 5 ,

ghost_4d
2013-02-01, 11:26
علما ان محاولتي كالتالي
لا اعلم كيف نجعل الحلقة 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.

you92cef
2013-02-01, 12:10
الرجاء المساعدة في ايجاد هذه الخوارزمية
cosx=1-(x^2/2!)+(x^4/4!)-(x^6/6!)+...
عدد الحدود يكون معرفا من المستخدم واكبر من 5 ,


بما ان هذه الدالة تتعامل فقط مع الاعداد الزوجية
فنقوم بعمل فحص
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, 12:33
هل الدالة tant queتكون دائما عكس الشرط

you92cef
2013-02-01, 12:38
علما ان محاولتي كالتالي
لا اعلم كيف نجعل الحلقة 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:confused:
راجع*-*ي*-* الكتابة

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

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

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

cos:confused:
الصحيح
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
هي دالة

ghost_4d
2013-02-01, 14:48
هذه الخوارزمية كانت للتوضيح فقط ،، غرضها توصيل الفكرة فحسب ,,لكن مع ذلك الشكر موصول لكـ على النصائح ’’

ghost_4d
2013-02-01, 14:53
بما ان هذه الدالة تتعامل فقط مع الاعداد الزوجية
فنقوم بعمل فحص
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

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

didou25360
2013-02-01, 14:59
اريد حل معادلة من الدرجة الثانية الغوريتم او fortron وشكرا

you92cef
2013-02-01, 17:17
اريد حل معادلة من الدرجة الثانية الغوريتم او fortron وشكرا

يوجد في الصفحات الاولى من هذا الموضوع
*-* اظن الصفحة 4 او 5*-*

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

you92cef
2013-02-01, 17:37
الرجاء المساعدة في ايجاد هذه الخوارزمية
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)

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

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

you92cef
2013-02-02, 23:53
هل الدالة 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
كرر .... حتى

salemk
2013-02-05, 17:32
الرجاء المساعدة في ايجاد هذه الخوارزمية
cosx=1-(x^2/2!)+(x^4/4!)-(x^6/6!)+...
عدد الحدود يكون معرفا من المستخدم واكبر من 5 ,

هكذا قد يكون الأمر أفضل

http://img15.hostingpics.net/pics/252960Sanstitre.png

salemk
2013-02-05, 18:10
مشكوووووور مشكلتي تكمن في اختيار البوكل و العلاقاث اللي لازم نسثعملهم



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 ;


http://img15.hostingpics.net/pics/470313photoshopmanipulation01.jpg
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------




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.

http://img15.hostingpics.net/pics/159087photoshopmanipulation37.jpg
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


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


http://img15.hostingpics.net/pics/663308Carioca47.jpg

ghost_4d
2013-02-12, 11:29
هذه محاولتي في كتابة خوارزمية تحول من النظام العشري الى النظام الثنائي
http://data.imagup.com/10/1175330475.png
لكن عندما ادخل اي رقم يظهر لي رقم 0 ,, لماذا وما المشكل ؟

agm1991
2013-02-12, 13:17
هذه محاولتي في كتابة خوارزمية تحول من النظام العشري الى النظام الثنائي
http://data.imagup.com/10/1175330475.png
لكن عندما ادخل اي رقم يظهر لي رقم 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

ghost_4d
2013-02-12, 15:25
السلام عليكم ورحمة الله وبركاته
التصحيح باللون الاحمر
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





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

bhazar
2013-02-12, 19:48
السلام عليكم
اريد حل لل الالغوريتم التالي
طلب منا الاستاذ كتابة الغوريتم عند ادخل مثلا اليه جملة يقوم بحساب عدد الاحرف المتكررة
انا في انتظار الحل منك و شكرا مسبقا لكم

salemk
2013-02-13, 01:25
هذه محاولتي في كتابة خوارزمية تحول من النظام العشري الى النظام الثنائي




هذه محاولتي لنظام اقل من 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.

salemk
2013-02-13, 22:35
هذه محاولتي لنظام اقل من 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.



شكرا على التمارين التي طرحتموها

salemk
2013-02-13, 22:38
السلام عليكم
اريد حل لل الالغوريتم التالي
طلب منا الاستاذ كتابة الغوريتم عند ادخل مثلا اليه جملة يقوم بحساب عدد الاحرف المتكررة
انا في انتظار الحل منك و شكرا مسبقا لكم


program ee;
uses wincrt;

var
lettre :array['A'..'Z'] of integer;
ch:string;
i:char;
j:integer;

begin
repeat
writeln('saisir une chaine');
readln(ch);
until ch<>'';

for i:='A' to 'Z' do
for j:=1 to length(ch) do
if upcase(ch[j])=i then
lettre[i]:=lettre[i]+1;


for i := 'A' to 'Z' do
if lettre[i]<>0 then
writeln(i, ' pour ',lettre[i],' fois');
end.

medscd
2013-02-14, 09:47
ااااااااااااااااااااااااشكرااااااااااااااااااااا

you92cef
2013-02-14, 13:55
السلام عليكم
اريد حل لل الالغوريتم التالي
طلب منا الاستاذ كتابة الغوريتم عند ادخل مثلا اليه جملة يقوم بحساب عدد الاحرف المتكررة
انا في انتظار الحل منك و شكرا مسبقا لكم

تم حل تمرين مشابه له تقوم بادخال جدول ويقوم باعطاءك رقم الاعداد التي تكررت ومكان تكررها

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

you92cef
2013-02-14, 17:44
ارجوا من الطلبة ان يضعوا امتحانات الاعلام الاي لمحاولة حلها

كما ارجوا ممن لديه امتحانات السنة الثانية اعلام الي ان يضعها هنا
ومن لديها دروس السنة الثانية اعلام الي
الخاص ب
arbres binire de recherche
ان يضعها هنا او أي معلومات بخصوص ه>ا النوع من الدروس
شكرا للجميع

yalova
2013-02-22, 12:17
نحطو كل caractère في خانة في جدول
نباركوريو tableau ونديرو كونتور يتانكريمونتا كل مرة يلقى فيها المحتوى تاع الخانة مطابق للحرف المراد
ونكتبو الكونتور
والله اعلم

algeriano9354
2013-02-22, 12:26
السلام عليكم ،،، من فضلكم أريد برنامج باسكال لحساب أعداد كيث المكونة من 3 أٍقام
un programme qui permet de calculer les nombres de Keith composé de 3 chiifres

*ابو محمد الجزائري*
2013-02-22, 14:10
ما شاء الله عليكم اصحاب الاعلام الآلي رب يبارك
ادام الله نشاطكم و جعلها في ميزان حسناتكم و لكي ترقى جامعاتنا الى مستوى اعلى
و اعتذر لنفاذ زاد الشكر لدي

بالتوفيق

you92cef
2013-02-22, 18:01
السلام عليكم ،،، من فضلكم أريد برنامج باسكال لحساب أعداد كيث المكونة من 3 أٍقام
un programme qui permet de calculer les nombres de Keith composé de 3 chiifres

هده المتتالية تشبه الى حد بعيد متتالية فيبوناتشي

اولا نقوم بقراءة عدد مكون من ثلاث ارقام

مثلا
145
الان يلزمنا عزل الارقام عن بعضها البعض
1 4 5

من اجل هدا نستعمل المبدا التالي


n mod 10
ex
145 mod 10=5
n:= n div 10
n:=14
14 mod 10
:=4
n:= n div 10
:=1
1 mod 10:=1

هك>ا نكون قد عزلنا الارقام
1 4 5

الان ندخل الى الدالة





entreé
trois chiffres
sortie seroa la somme des trois chiffres

par suite
le 2 ieme chiffre prendre la place de 1 ier chifre

le 3ieme chiffre prendre la place de 2ieme chiffres

la somme prendre la place de troisieme chiffres
ex

145
premiere chiffres 1
2ieme 4
3ieme 5

la somme 10

2ieme iteration
1 iere chiffre :=4
2 ieme chiffre :=5
3ieme chiffres :=10
on fait la somme
4+5+10:=19

ensi de suite

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




هدا البرنامج لا يتناسب مع المطلوب سيتم تعديله قريبا ان شاء الله

you92cef
2013-02-22, 18:08
نحطو كل caractère في خانة في جدول
نباركوريو tableau ونديرو كونتور يتانكريمونتا كل مرة يلقى فيها المحتوى تاع الخانة مطابق للحرف المراد
ونكتبو الكونتور
والله اعلم

نعم ه>ا هو المبدا

الرد موجود في الرد الاول من الصفحة19

والرد رقم 240 في الصفحة 16
*-* تمرين مشابه له تقريبا*-*

you92cef
2013-02-22, 18:09
ما شاء الله عليكم اصحاب الاعلام الآلي رب يبارك
ادام الله نشاطكم و جعلها في ميزان حسناتكم و لكي ترقى جامعاتنا الى مستوى اعلى
و اعتذر لنفاذ زاد الشكر لدي

بالتوفيق


امين
بارك الله فيك وجزاك خيرا

you92cef
2013-02-22, 20:29
program ex;
uses wincrt;
type tableau=array[0..100]of integer;
var n,n1,m,m1,i:integer;
s:tableau;
begin
writeln('Entrez un nombre de 3 chiffres');
readln(n);
writeln('Combien de nombre des Keith vous aime afficher?');
readln(m);
m1:=m;
n1:=n;
s[2]:=n mod 10;
n:= n div 10;
s[1]:= n mod 10;
n:= n div 10;
s[0]:= n mod 10;
for i:=3 to m+3 do begin
s[i]:=s[i-3]+s[i-2]+s[i-1];
writeln(s[i-3],'+',s[i-2],'+',s[i-1],'=',s[i]);
end;
end.


البرنامج مع الشرح لكيفية الحصول على اعداد كيث

حاول ان تفهمه بنفسك
سيتم وضع الشرح قريبا ان شاء الله

salemk
2013-02-22, 21:40
السلام عليكم ،،، من فضلكم أريد برنامج باسكال لحساب أعداد كيث المكونة من 3 أٍقام
un programme qui permet de calculer les nombres de Keith composé de 3 chiifres

للاستفادة الناس لكل،
ارجو في التساؤلات اضافة الطرح العام وشكرا Le terme général ou le principe

enemi05
2013-02-27, 21:47
السلام عليكم و رحمة الله و بركاته


من فضلكم أريد برنامج باسكال.
soit un matrice "n" ligne et "m" colonne ecrire un sous programe qui calcule la transpose de cette matrice**
ecrire un sous programe qui calcule le produit de la matrice pour satransposee

algeriano9354
2013-02-27, 23:20
هذا برنامج كيث قمت بكتابته شخصيا مستفيدا من نصائح الاخوة ،،، أرجو منكم تقييما له

program keith;
uses wincrt;
var
a,b,c,d,e,r1,r2,r3,r4,s,k:longint;
begin
repeat
writeln('entrer un nombre composé de 5 chiffres');
readln(k);
begin
a:= k div 10000;
r1:=k-a*10000;
b:=r1 div 1000;
r2:=r1-1000*b;
c:=r2 div 100;
r3:=r2-c*100;
d:=r3 div 10;
r4:=r3-10*d;
e:=r4;
s:=0;
repeat
s:=a+b+c+d+e;
begin
if s=k then
writeln(s,' :est un nombre de keith')
else
a:=b;
b:=c;
c:=d;
d:=e;
e:=s;
end;
until s>k;
end;
until k>99999
end.

you92cef
2013-02-28, 19:09
بخصوص برنامج كيث فللاسف لم افهمه جيدا الى بعد قراءة نص الموسوعة ويكيبيديا

ل>لك يجب في البرنامج لالاول ان نقوم بملاحظة ما ا>ا كان الرقم الاول موجود في متتالية الاعداد التي نحصل عليها

سيتم تعديل البرنامج الاول ان شاء الاول
-------------------
بخصوص برنامج الاخ الجريانو فهو مبني على اساس قراءة عدد من 5 ارقام وهنا نحتاج الى معرفة عدد من خمسة ارقام يكون عدد كيث حتى نحكم على البرنامج ا>ا كان يعمل بشكل جيدا ام لا

اضافة الى التعليقات *-* بحيث عند ادخال عدد ليس من اعداد كيث يظهر تعليق على ان ه>ا العدد ليس من اعداد كيث

التعليقات مهمة جدا جدا جدا جدا جدا

you92cef
2013-02-28, 19:56
احسنت اخي
algeriano9354

بداية موفقة استمر في البرجة :rolleyes:

تم اضافة بعض التعديلات الطفيفة على برنامجك وه>ا هو البرنامج النهائي ان شاء الله
ملاحظة: هدا البرنامج مخصص فقط لاعداد التي تتكون من 5 ارقام يمكن تعديله كيفما نشاء مع احترام مجالات الاعداد

program keith;
uses wincrt;
var
a,b,c,d,e,r1,r2,r3,r4,s,k,j:longint;
begin
repeat
writeln('entrer un nombre composé de 5 chiffres');
readln(k);
until (k>9999) and(k<=99999);
begin
a:= k div 10000;
r1:=k-a*10000;
b:=r1 div 1000;
r2:=r1-1000*b;
c:=r2 div 100;
r3:=r2-c*100;
d:=r3 div 10;
r4:=r3-10*d;
e:=r4;
s:=0;
repeat
s:=a+b+c+d+e;
begin
if s=k then begin
writeln(s,' :est un nombre de keith');
j:=1;
end
else
a:=b;
b:=c;
c:=d;
d:=e;
e:=s;
end;
until s>k;
if (s>=k) and(j<>1) then writeln('le nombre n''est pas de keith');
end;
end.



quelque nombres de keith avec 5 chiifres
31331
34285
34348
55604

ملاحظة: هذا التمرين كان امتحان في المدرسة
Examen de janvier 2009 - Université Libre de Bruxelles
وهي مدرسة رائدة في مجال الهندسة بما فيها الاعلام الالي جل الجامعات تاخذ تمارين الامتحانات وباقي التمارين من تمارين هده الجامعة

سيتم وضع الشرح قريبا ان شاء الله

بهاار
2013-02-28, 20:11
السلام عليكم ورحمة الله تعالى وبركاته

عندي سؤال في كيفية ترتيب جدول، بحيث انو توجد طرق عديدة لكن انا ابحث عن هده الطريقةtri d'un tableau par champ
هل هي موجودة؟
لاني بحثت عنها ولم اجدها ، ممكن يكون لها اسم آخر

you92cef
2013-02-28, 20:22
السلام عليكم ورحمة الله تعالى وبركاته

عندي سؤال في كيفية ترتيب جدول، بحيث انو توجد طرق عديدة لكن انا ابحث عن هده الطريقةtri d'un tableau par champ
هل هي موجودة؟
لاني بحثت عنها ولم اجدها ، ممكن يكون لها اسم آخر

صراحة لا ادري

ولكن هدا النوع يشبه
control de l'information
المبدا
لدينا معلومة تتكون من
cahmp
type record

اولا نقوم بالترتيب بحسب
champ1
si sont egaux
le champ2
ainsi de suite

مثال
لترتيب الطلبة بحسب الاسم
لدينا طالب اسمه
محمود محمد
وطالب اخر اسمه ايضا محمود محمد

نقارن الحقل الاول
محمود محمود نفس الحقل
ن>هب الى الحقل الثاني
محمد محمد
نقارن الحقل الثالث ال>ي نفترضه مثلا تاريخ الميلاد فهنا يمكننا ترتيب

لتفادي كل ه>ه الاشياء نستعمل
code pour chaque personne
تدرسنوه ابتداءا من السنة الثانية اعلام الي
ه>ا هو المبدا بحسب علمي

you92cef
2013-02-28, 20:31
بخصوص المصفوفة فهنا يوجد بعض الشرح
البرنامج سيتم برمجته قريبا ان شاء الله *-* يوجد مشكل في منتديات الجلفة بخصوص الردود للاسف كتبت رد قبل مدة بخصوص عدد كيث ولكن ضاع هباءا منثورا +اعت>ر لانني مرهق بعض الشيء ه>ا اليوم *-*


شرح بخصوص المصفوفات
http://www.djelfa.info/vb/showthread.php?t=1135321&page=7

بهاار
2013-02-28, 21:40
لكن اخي الكريم على حسب مافهمت من ردك انك تستعمل enregistrement

you92cef
2013-03-01, 09:57
لكن اخي الكريم على حسب مافهمت من ردك انك تستعمل enregistrement

نعم في الباسكال نستعمل
enregistrement

بينما في مواد او برامج اخرى لا نستعمل
enregistrement

مثلا في مادة
system information
ou base de donnee

نستعمل نفس المبدا ولكن بطرق اخرى


type enre=record
nom:string;
prenom:string;
age:integer;
....
..
.
.
end;


nom,prenom,age sont des champs

بهاار
2013-03-01, 11:59
انا ادرس السنة الاولى رياضيات واعلام آلي
ولحد الآن لم ندرس enregistrement
لكن بالنسبة les tableau
في ترتيبها توجد عدة طرق كselection insertion...الخ
لكن انا طلب مني tri d'un tableau par champ
ولم اجد أي شي يخص هده الطريقة ، فما الحل؟؟؟؟

ولدي سؤال بخصوص selection
هل نبحث على اصغر عدد ونضعه في الخانة الاولى ، أم نبحث على اكبر عدد؟

you92cef
2013-03-01, 13:00
انا ادرس السنة الاولى رياضيات واعلام آلي
ولحد الآن لم ندرس enregistrement
لكن بالنسبة les tableau
في ترتيبها توجد عدة طرق كselection insertion...الخ
لكن انا طلب مني tri d'un tableau par champ
ولم اجد أي شي يخص هده الطريقة ، فما الحل؟؟؟؟

ولدي سؤال بخصوص selection
هل نبحث على اصغر عدد ونضعه في الخانة الاولى ، أم نبحث على اكبر عدد؟



بخصوص انواع
tri
فللاسف لم نتطرق لهم بشكل واسع في السنة الاولى ونسيت التعاريف

ارجوا ممن لديه تعارف انواع
tri
ان يزودنا بها

بخصوص ه>ه الاسئلة فالافضل طرحها على الاستاد مباشرة لانها تدخل ضمن التعريفات ومن الصغب ان ناخد دور الاستاد ونقوم بشرح هده التعريفات

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

algeriano9354
2013-03-01, 14:30
احسنت اخي
algeriano9354

بداية موفقة استمر في البرجة :rolleyes:

تم اضافة بعض التعديلات الطفيفة على برنامجك وه>ا هو البرنامج النهائي ان شاء الله
ملاحظة: هدا البرنامج مخصص فقط لاعداد التي تتكون من 5 ارقام يمكن تعديله كيفما نشاء مع احترام مجالات الاعداد

program keith;
uses wincrt;
var
a,b,c,d,e,r1,r2,r3,r4,s,k,j:longint;
begin
repeat
writeln('entrer un nombre composé de 5 chiffres');
readln(k);
until (k>9999) and(k<=99999);
begin
a:= k div 10000;
r1:=k-a*10000;
b:=r1 div 1000;
r2:=r1-1000*b;
c:=r2 div 100;
r3:=r2-c*100;
d:=r3 div 10;
r4:=r3-10*d;
e:=r4;
s:=0;
repeat
s:=a+b+c+d+e;
begin
if s=k then begin
writeln(s,' :est un nombre de keith');
j:=1;
end
else
a:=b;
b:=c;
c:=d;
d:=e;
e:=s;
end;
until s>k;
if (s>=k) and(j<>1) then writeln('le nombre n''est pas de keith');
end;
end.



quelque nombres de keith avec 5 chiifres
31331
34285
34348
55604

ملاحظة: هذا التمرين كان امتحان في المدرسة
Examen de janvier 2009 - Université Libre de Bruxelles
وهي مدرسة رائدة في مجال الهندسة بما فيها الاعلام الالي جل الجامعات تاخذ تمارين الامتحانات وباقي التمارين من تمارين هده الجامعة

سيتم وضع الشرح قريبا ان شاء الله

شكرااااا أخي على الإضافة المميزة ،،، القادم سيكون برنامج لحساب العدد Pi بثلاث طرق مختلفة ، أي سيكون باستعمل les procedures

algeriano9354
2013-03-01, 14:32
انا ادرس السنة الاولى رياضيات واعلام آلي
ولحد الآن لم ندرس enregistrement
لكن بالنسبة les tableau
في ترتيبها توجد عدة طرق كselection insertion...الخ
لكن انا طلب مني tri d'un tableau par champ
ولم اجد أي شي يخص هده الطريقة ، فما الحل؟؟؟؟

ولدي سؤال بخصوص selection
هل نبحث على اصغر عدد ونضعه في الخانة الاولى ، أم نبحث على اكبر عدد؟



أنا أدرس في جامعة قسنطينة ،،، رانا لحقنا لـ les listes ،،، شخصيا أنا درس recording لم أحضره تمــــــــــــاما

بهاار
2013-03-01, 16:18
program triparselection;
uses crt;
const N=5;
type Tableau = array [1..N] of integer;
var
tab: Tableau;

Procedure remplir ( var tab: Tableau);
var i:integer;
begin

for i:=1 to N do
read(tab[i]);

end;


procedure triselection( var tab: Tableau);
var
i,j,x, indice:integer;
begin
for i:= 1 to N-1 do
begin
indice:=i;

for j:= i+1 to N do
begin
if(tab [indice] > tab[j]) then
indice:=j;
end;

if( tab[indice] <>tab [ i]) then
begin
x:= tab[i];
tab[i]:=tab[indice];
tab [indice]:=x;
end;
end;



procedure Impression ( tab: Tableau);
var
i:integer;
begin
writeln ('-------------------------------------------------------');
for i:= 1 to N do
write ( tab [i]:3,' ');
writeln;
end;


begin
remplir (tab);
writeln('Tri par selection');
writeln;
Impreession (tab);
triselection (tab);
Impression (tab);
writeln('---------------------------------------------------------');
end.





أريد المساعدة حيث يوجد فيها خطأ لكن لم أتمكن من معرفته

you92cef
2013-03-01, 18:15
أنا أدرس في جامعة قسنطينة ،،، رانا لحقنا لـ les listes ،،، شخصيا أنا درس recording لم أحضره تمــــــــــــاما

les liste
المفروض تدروسونه في السنة الثانية :confused:

you92cef
2013-03-01, 18:19
program triparselection;
uses wincrt;
const N=5;
type Tableau = array [1..N] of integer;
var
tab: Tableau;

Procedure remplir ( var tab: Tableau);
var i:integer;
begin

for i:=1 to N do
read(tab[i]);

end;


procedure triselection( var tab: Tableau);
var
i,j,x, indice:integer;
begin
for i:= 1 to N-1 do
begin
indice:=i;

for j:= i+1 to N do
begin
if(tab [indice] > tab[j]) then
indice:=j;
end;

if( tab[indice] <>tab [ i]) then
begin
x:= tab[i];
tab[i]:=tab[indice];
tab [indice]:=x;
end;
end;
end;



procedure Impression ( tab: Tableau);
var
i:integer;
begin
writeln ('-------------------------------------------------------');
for i:= 1 to N do
write ( tab [i]:3,' ');
writeln;
end;


begin
remplir (tab);
writeln('Tri par selection');
writeln;
Impression (tab);
triselection (tab);
Impression (tab);
writeln('---------------------------------------------------------');
end.


تصحيح البنامج السابق
كان ينقص
end;
وكان هناك خطا في استدعاء البروسيدور

you92cef
2013-03-01, 18:21
program triparselection;
uses crt;
const N=5;
type Tableau = array [1..N] of integer;
var
tab: Tableau;

Procedure remplir ( var tab: Tableau);
var i:integer;
begin

for i:=1 to N do
read(tab[i]);

end;


procedure triselection( var tab: Tableau);
var
i,j,x, indice:integer;
begin
for i:= 1 to N-1 do
begin
indice:=i;

for j:= i+1 to N do
begin
if(tab [indice] > tab[j]) then
indice:=j;
end;

if( tab[indice] <>tab [ i]) then
begin
x:= tab[i];
tab[i]:=tab[indice];
tab [indice]:=x;
end;
end;

end;

procedure Impression ( tab: Tableau);
var
i:integer;
begin
writeln ('-------------------------------------------------------');
for i:= 1 to N do
write ( tab [i]:3,' ');
writeln;
end;


begin
remplir (tab);
writeln('Tri par selection');
writeln;
Impreession (tab);
triselection (tab);
Impression (tab);
writeln('---------------------------------------------------------');
end.





أريد المساعدة حيث يوجد فيها خطأ لكن لم أتمكن من معرفته

كان ينقص
end;
وكان هناك خطا في استدعاء البروسيدور

بهاار
2013-03-01, 18:53
شكرا لك اخي الكريم على المساعدة

من اين آتي بهذا الرمز من clavier |

you92cef
2013-03-01, 19:47
بخصوص المصفوفات
matrice
calcule le produit d'un matrice par sa transopseé


program produit;
uses wincrt;
type tab=array[1..25,1..25] of integer;
var i,k,j,l1,c1,l2,c2:integer;
m1,m2,mat:tab;
begin
writeln('donner le nombre de ligne de m1');
readln(l1);
writeln('donner le nombre de colonnes de m1');
readln(c1);
if l1=c1 then begin
writeln('donner les ',l1*c1,' elements de m1');
for i:=1 to l1 do
for j:=1 to c1 do
read(m1[i,j]);
writeln('La matrice est');
for i:=1 to l1 do begin
for j:=1 to c1 do
write(m1[i,j]:4);
writeln;
end;

for i:=1 to l1 do
for j:=1 to c1 do
m2[i,j] := m1[j,i];
writeln(' la transposée de votre matrice est');
for i:=1 to l1 do begin
for j:=1 to c1 do
write(m2[i,j]:4);
writeln;
end;


for i:=1 to l1 do
for j:=1 to c2 do begin
mat[i,j]:=0;
end;
for i:=1 to l1 do
for j:=1 to c1 do
for k:=1 to c1 do
mat[i,j]:=mat[i,j]+m1[i,k]*m2[k,j];
writeln('Le produit est');
for i:=1 to l1 do begin
for j:=1 to c1 do
write(mat[i,j]:4);
writeln;
end;
end;
if l1<>c1 then writeln('La matrice n''est pas carré');
end.




site pour verifier

http://bts-ig.numeriques.net/cours-exercices-corriges/produit/index.php#fin


Si est une matrice de type et est une matrice de type , alors leur produit, noté est une matrice de type donnée par :

http://upload.wikimedia.org/math/4/2/0/420943447f3abc658f2efec6c57039bc.png

you92cef
2013-03-01, 20:06
شكرا لك اخي الكريم على المساعدة

من اين آتي بهذا الرمز من clavier |


هنا الشرح

http://im31.gulfup.com/jHR3P.jpg

enemi05
2013-03-01, 21:38
شكرا اخي علي المساعدة جزاك الله خيرا و جعله في ميزان حسناتك

بهاار
2013-03-01, 21:39
شكرا لك اخي على المساعدة

you92cef
2013-03-01, 21:47
شكرا لك على المساعدة لكن انا اريد ان اضع الرمز في البسكال والبسكال لا يدعم اللغة العربية يعني الطريقة لم تنفع معي
فهل من حل؟

لقد جربت الطريقة وهي شغالة في الباسكال نسخة
tpw

في باقي النسخ لست ادري ما ادت كانت شغالة ام لا

بهاار
2013-03-01, 21:57
شكرا لك اخي انا في البسكال لم تنجح
لكن قمت بفتح ملف البسكال ب bloc note واضفتها

you92cef
2013-03-01, 22:26
شكرا لك اخي انا في البسكال لم تنجح
لكن قمت بفتح ملف البسكال ب bloc note واضفتها


بحسب نسخة الباسكال التي تستخدمها
الطريقة شغالة على نسخة tpw

بهاار
2013-03-07, 21:55
السلام عليكم

من فضلكم اريد شرح لطريقة ترتيب جدول بطريقة شل
انا وجدت procedure لكن لم افهمها
procedure tri****l (var t:tab; n:integer ) ;
var p,i,j,v: integer;
begin
p:=0;
while p<= n do
p:= 3*p+1;
while p <> 0 do
begin
p:=p div 3;
for i:= p to n do
begin
v:=t[i];
j:=i;
while (j > p-1) and (t[j-p] > v ) do
begin
t[j]:=t[j-p];
j:=j-p;
end;
t[j]:=v;
end;
end;
end;

you92cef
2013-03-08, 09:41
نتيجة الطريقة هي ترتيب جدول تصاعديا
ordre croissant
mais comment moi aussi je ne comprendre pas la maniere:confused:

program exe


program ex;
uses wincrt;
type tableau=array[1..100]of integer;
var tab:tableau;
j,m:integer;
procedure tri (var t:tableau; n:integer ) ;
var p,i,j,v: integer;
begin
p:=0;
while p<= n do
p:= 3*p+1;
while p <> 0 do
begin
p:=p div 3;
for i:= p to n do
begin
v:=t[i];
j:=i;
while (j > p-1) and (t[j-p] > v ) do begin
t[j]:=t[j-p];
j:=j-p;
end;
t[j]:=v;
end;
end;
end;
begin
writeln('Entrez m');
readln(m);
for j:=1 to m do begin
writeln ('Entrez tab[',j,']');
readln(tab[j]);
end;
tri(tab,m);
writeln('-----------------------');
for j:=1 to m do
writeln(tab[j]);
end.

بهاار
2013-03-08, 10:03
http://www.youtube.com/watch?v=wdrwwl5Ib9g

هدا يشرح قليلا الطريقة لكن الشي الذي لم افهمه انا

while p<= n do p:= 3*p+1; while p <> 0 do begin p:=p div 3;

you92cef
2013-03-08, 10:56
http://www.youtube.com/watch?v=wdrwwl5Ib9g

هدا يشرح قليلا الطريقة لكن الشي الذي لم افهمه انا

while p<= n do p:= 3*p+1; while p <> 0 do begin p:=p div 3;

الغوريتم شل هو تطوير لالغوريتم
tri par insertion
ولكن اسرع من
tri par insertion



موقع رائع لشرع انواع الترتيبات الممكنة
http://people.cs.pitt.edu/~kirk/cs1501/animations/Sort1.html

يمكن اختيار نوع الترتيب ال>ي نريده من في الخانة الاولى ثم ندخل عناصر الجدول ونفصل بينهم ب
space
لفهم الاختلاف بين انواع الترتيبا ننصح باختيار عناصر جدول واحد مثلا
1 5 8 9 7 3 2 9 6 3 1 2
وكل مرة نغير طريقة ترتيب العناصر

ارجوا من الادارة عدم حدف الموقع لانه ليس اشهاري

بهاار
2013-03-08, 11:41
لكن الذي لم افهمه
لماذا p;=0
ومادا يقصد ب p
وبعدها لماذا p;=3*p+1

you92cef
2013-03-08, 12:39
في
tri par insertion
نقارن العنصر
i
مع العنصر الدي يليه
i+1
في هده الحالة نحتاج الى وقت كبير
----------------------------
بينما في شال
نقارن العنصر
p
مع
عنصر اخر لا يكون بالضرورة
p+1
فشال اول مرة حاء بالعبارة
p:=0
p:=3*p+1
ففي شال
دائما نقارن العنصر
p
ال>ي يكون في الاول يساوي 1
مع عنصر اخر شال عبر عنه ب
p:=p*3+1
ثم قسم على 3
يمكن ان نضرب مثلا في 5 ونقسم على 5 وهكدا نكسب وقت اكبر
--------------------------------------------
كمبرمجين ما يهمنا هو كيفية عمل البروسيدور والنتيجة وممزياته وعيوبه اما لمادا وكيف وباقي الاسئلة فهي اسئلة رياضية تدخل ضمن
recherche operationnelle
*-*تطبيق الرياضيات في الاعلام الالي او تطبيق الاعلام اللي في الرياضيات*-*
ou algo avanceé
وهده تحتاج الى فهم قوي ومتين بالالغوريتم والرياضيات

بهاار
2013-03-08, 13:13
procedure ****l (n: integer ; var t:tab ) ;var p,i,j,valeur: integer; begin p:=0; while p < n do p:= 3*p+1; while p > 0 do begin p:=p div 3; for i:= p to n do begin valeur:=t[i]; j:=i; while (j > p-1) and (t[j-p] > valeur ) do begin t[j]:=t[j-p]; j:=j-p; end; t[j]:=valeur; end; end; end;





والله لم افهم شي اخي الكريم ياريت لو تكرمت وكتبت لي تعليق بسيط امام كل instruction

بهاار
2013-03-08, 13:20
فشال اول مرة حاء بالعبارة
p:=0
p:=3*p+1
ففي شال
دائما نقارن العنصر
p
ال>ي يكون في الاول يساوي 1
مع عنصر اخر شال عبر عنه ب
p:=p*3+1
ثم قسم على 3
يمكن ان نضرب مثلا في 5 ونقسم على 5 وهكدا نكسب وقت اكبر
--------------------------------------------

انا الشي الذي لم افهمه لماذا ضرب في 3 ثم قسم على3

يعني اين الفائدة لما اضرب في 3 ثم اقسم على 3

بهاار
2013-03-08, 14:28
انا يجب علي فهم الخوارزمية لاني سأكتب تقرير عن هذه الطريقة

you92cef
2013-03-08, 18:03
الله يكون في العون لان ه>ه الخوارزميات الناس تخصص تعمل دوتوراه من اجلها وتتطرق لها من كل الجوانب لان الاعلام الالي ليس فقط البرمجة
----------------------------------
لغرض تنظيم المعلومات وترتيبها تم اكتشاف وابتكار خوارزميات من اجل هه>ا الهدف من بينها خوارزميات الترتيب
les algo de tri
من بينها كان لدينا
algo tri par insertion
حيث اننا نقارن القيمة الحالية مع القيمة التي تليها وهكدا
ولما نجد ان القيمة
i+1
اصغر من القيمة
i
علينا ان نغير من تريتب القيميتن
ثم نقارن مع القيم التي تلي قيمة i
مثلا
1 8 9 6 7 3 4 0
-*- القرائة من اليمين الى اليسار-*-
لدينا 1اصغر من 8
8اصغر من 9
9اكبر من 6-*- علينا ان نغير القيم
فتصبح هك>ا
1 8 6 9 7 3 4 0
الان علينا ان نقارن 6 مع 8 ايضا نعمل تغري بين القيمتين فتصبح هكدا
1 6 8 9 7 3 4 0
الان لدينا 9 اكبر من 7 نغير فتصبح
1 6 8 7 9 3 4 0
نقارن 7 مع 8 لا نغير
7 مع 8 لا نغير

لدينا 3 اصغر من 9
نغير قتصبح هك>ا
1 6 8 7 3 9 4 0
ونستمر ونستمر
حتى نصل الى الصفر فمع الصفر علينا ان نغيره مع القيمة التي تسبقه ثم التي تسبقه ثم التي تسبقه ...... حتى يصير في المرتبة الاولى
-*- مع المفروض اننا ننقلها مباشرة-*-

الجدير بالدكر ان كل عملية نقوم بها تحتاج الى وقت ومساحة في الداكرة
espace memeoire

لتفادي ه>ه المشاكل العالم شال اكتشف خوارزمية شال التي هي تعميم ل
tri par insertion
-*-le tri par insertion est un cas perticulier de tri

s h e l

lorsque on multiple par 1 est on devise par 1

كما نعرف ففي
tri par insertion
لا يمكننا تغير التريتب الى بمرتبة واحدة
ادا كان عنصر في المكان 2 فاما يصير في المرتبة 1 او يصبح في المرتبة 3
في كل مرة نحرك العنصر بمرتبة واحدة
لمادا؟
لاننا كما قلنا
le tri par insertion on multiple par 1 et on devive par 1

alors on peut que deplacer l'element d'une place

من اجل هدا شال اقترح انه يمكننا ربح لوقت ومساحةى الداكرة
gagner de temps et d''espace memoire

pour cela au lieu de multiplier par1 et deveiser par 1
on peut multiplyer par k est deviser par k
dans ce cas on ^peut deplacer un elemnt de k place
si k:=5
alors si un element a la place 6 alors
il peau etre sur la 1 ere place avec jusque un permutation *-* pas 5 permutation dans tri par insertion-*-
ou avoir la place 11 de meme maniere


من اجل عدة اسباب تتعلق بفعالية الخوارزمية وتتعلق بالوقت وبمساحة الداكرة من الافضل اختيار
un pas de 3
alors on * par 3
ensuite on / par 3
si par example
k<>1 ou k<>3 on n'est pas sur que on a les resulatat que on aime avoir
-*- il peut que le tableau u otre chz ne soit par tri par ordre croisant -*-
alors on perdre de temps e de ram pour r1
e il peut que si k e tres grand que on revien a un tri par inertion -*- ce qui on veut evider-*-

donc pour tout ca on multiple par 3 et / par 3

car aussi dans le cas ou le pas est 3 on ait sur que le pas va prendre la valeur 1 e donc on a un tri par insertion

le tri de shal passe toujours par tri par insertion lorsque le pas est 3 mais ce tri par insertion est organiser dons sa qsera plus rapide que le tri par insertion normale

La formule la plus couramment utilisée pour calculer la valeur des pas successifs est la suivante U(n+1)=(3Un+1) avec U0=0.


Lorsque le pas atteint la valeur 1, cela revient à effectuer le tri par insertion. Cependant, cette fois, le tri par insertion est appliqué à un tableau possédant un certain ordre (provoqué par les étapes de préparations où le pas est supérieur à un)

car le tri par insertion est efficasse qand on a un tableu a peut pré trieé


après une étape où le pas est de quatre, les quatre premières valeurs du tableau sont les quatre plus petites, les quatre suivantes sont plus grandes ext


En résumé, le tri ****l permet d’organiser plus rapidement le tableau à trier. donc gagner de temps est d'espac memeoire


Grandeurs successives de p pour n=100
Calcul du plus grande valeur de p tel que p<100 :
U0=0
U1=3U0+1=1
U2=3U1+1=4
U3=3U2+1=13
U4=3U3+1=40
U5=3U4+1=121
Conclusion : la plus grande valeur de p tel que p<100 est 40. Les valeurs successives du pas p seront alors : (ou la division par 3 est une division entiére).
p1=121/3=40
on peut deplacer l'element de 40place !!!!!
p2=p1/3=40/3=13
aussi de 13 place !!!!!
p3=p2/3=13/3=4
4 place !!!!!!
p4=p3/3=4/3=1
tri par insertion mais organiser car on deplace -*- si la valeur est plus grnd-* 40 place a la fois



Exemple de tri
ةvolution du tableau au fil du tri ****l. Le pas, représenté en rouge est également indiqué ainsi que la valeur en mémoire, sur laquelle porte la comparaison. En bleu, les valeurs sur lesquels portent les comparaisons à chaque étape.
--------------------

المثال في الصورة التالية مع الشرح
http://im31.gulfup.com/RMWtk.png

A ce stade, le tri fusion revient à effectuer le tri par insertion. L’exemple s’arrêtera donc ici. Il faut cependant remarquer que, grâce aux différentes étapes du tri ****l, le tableau est un peu mieux organisé : La moyenne des valeurs de la première moitié du tableau a diminué. Ce résultat est d’autant plus remarquable que le tableau à trier est grand.

لفهم اكثر راجع*-*ي-*-* الموقع السابق


***
تعني
شال
لم اكن اكتبها كتابة صحيحة لذلك قد يكون تغير معناه ونتج عنها ***


شكرا

you92cef
2013-03-08, 18:52
الموقع
http://people.cs.pitt.edu/~kirk/cs1501/animations/Sort1.html

كيفية الاستخدام
http://im31.gulfup.com/WVFFd.png

http://im31.gulfup.com/OHUin.png

http://im31.gulfup.com/JX0gF.png


شكرا

بهاار
2013-03-10, 17:36
بارك الله فيك

بهاار
2013-03-10, 17:38
من فضلك اخي الكريم ارجو ان تبين لي كيفية كتابة هده algorithme في البسكال

بهاار
2013-03-10, 18:15
هده الطريقة tri par paquets (radix sort)

salemk
2013-03-10, 18:38
شكرا لك اخي الكريم على المساعدة

من اين آتي بهذا الرمز من clavier |




Enfoncez les touches “Alt Gr” + “6 - |”
“6 - |” de la première ligne des lettres alphanumériques, en dessus des touches “Y” et “T”

Bakadis
2013-03-11, 16:13
السلام عليكم
لدي راتراباج في الانفورماتيك 1 سنة أولى ليسانس السبت القادم
ولا أعلم ما علي أن أراجعه...
أريد أهم الدروس التي علي أن أركز عليها وإن كان هناك من يمكنه تقديمها ملخصة الي أو أن يشرحها لي أكون شاكرا له

kafa22
2013-03-12, 09:05
أزجو المساعدة في هذا الموضوع


ecrit l algothime fait calcule la somme suivant


S=1+2+4+8+...................+N

marwa.dz
2013-03-12, 15:18
Ecrire un algorithme qui utilise des sous-programmes permettant de
1. Saisir les éléments d'un tableau de taille TMAX=100 ,
2. Afficher les éléments de ce tableau.
3. Le calcul du nombre d'occurrences d'un élément donné dans ce tableau
4. Le calcul de la moyenne et du minimum des éléments d'un tableau
5. De tester si un tableau est trié

you92cef
2013-03-12, 17:05
من فضلك اخي الكريم ارجو ان تبين لي كيفية كتابة هده algorithme في البسكال

الصورة غير واضحة +
هدا النوع يتعلق بالسنة الثانية اعلام الي -*- تحتاج الى زاد معرفي في البرمجة اكثر من السنة الاولى-*-

you92cef
2013-03-12, 17:06
هده الطريقة tri par paquets (radix sort)

لا اعلم اي شيء عن هده الطريقة صراحة :confused:

you92cef
2013-03-12, 17:07
السلام عليكم
لدي راتراباج في الانفورماتيك 1 سنة أولى ليسانس السبت القادم
ولا أعلم ما علي أن أراجعه...
أريد أهم الدروس التي علي أن أركز عليها وإن كان هناك من يمكنه تقديمها ملخصة الي أو أن يشرحها لي أكون شاكرا له

راجع الدروس التي تطرقتم لها +التمارين المحلولة والشرح الموجود في هدا الموضوع

you92cef
2013-03-12, 17:09
أزجو المساعدة في هذا الموضوع


ecrit l algothime fait calcule la somme suivant


S=1+2+4+8+...................+N

لامر سهل جدا :confused:

هدف الموضوع هو المساعدة وليس ان نبرمج كل البرامج هناك برامج سهلة جدا لا تحتاج الى تفكير كبير صراحة
هنا لدينا مجموع اعداد كل مرة نضرب في *2

1
1*2
2*2
4*2
8*2

الا غاية لما نصل الى العدد n
او نتجاوزه
بسيطة :confused:

you92cef
2013-03-12, 17:19
Ecrire un algorithme qui utilise des sous-programmes permettant de
1. Saisir les éléments d'un tableau de taille TMAX=100 ,
2. Afficher les éléments de ce tableau.
3. Le calcul du nombre d'occurrences d'un élément donné dans ce tableau
4. Le calcul de la moyenne et du minimum des éléments d'un tableau
5. De tester si un tableau est trié

بخصوص القراءة والعرض فهي سهل
نستدعي الدالة
for

readln للقراءة

writeln للعرض
+
السؤال الثالث
هنا موجود برنامج شبيه له

الصفحة 16 الرد 240 من هدا الموضوع
عوض قراءة حرف نقرا عدد

moy
سهلة نقوم بالجمع وفي الاخير نقسم على n
في القراءة نقوم بالجمع

min
سهل

في الاول نجعل مثلا
min
ياخد القيمة الاولى
و كلما ندخل عدد نقارنه من
min
بخصوص tri
ùفادا غيرنا قيمة
min
مثلا صارت في الاخير تاخد قيمة العدد 20 فهنا الجدول غير مرتب ترتيب تصاعدي
لان

t[i]>t[20]


والعكس صحيح ادا كانت ثيمة
min
هي القيمة الاولى فهدا معناه

t[i]<t[i+1]<....<t[n]

بهاار
2013-03-12, 19:11
الصورة غير واضحة +
هدا النوع يتعلق بالسنة الثانية اعلام الي -*- تحتاج الى زاد معرفي في البرمجة اكثر من السنة الاولى-*-

للأسف طلبت منا هذه الطريقة لترتيب جدول (طبعا السنة الاولى)

razokix
2013-03-12, 21:46
هلا شباب ممكن مساعد في حل هدة التمارين ربي يجازيكم
بسم الله

en utilisant les procedures et les fonctio ecrivez un programme en pascal qui :

1_affiche le plus grand element et le rang de celle_ci dans le tableau

2_inserer la valeur X a la kieme place (on obtiendra un tableau de n+1 elements) ^^i

3_augmente de 1 tous les element d'un tableau ,le nouveau tableau sera affiche a lecran

ارجو ان يتم تقديم الحلول في اقرب وقت من فضلكم لا تبخلو علينا ^^ :1:

kafa22
2013-03-12, 22:38
كتب خوارزمية التي تقوم بحساب و طبع المرسلات البريدية مع العلم أنه في حالة :
1- وزن poids الرسالة أقل من 20 غ السعر prix يساوي 10دج للغرام
2- وزن poids الرسالة ما بين 20 غ و 50غ السعر prix يساوي 15دج للغرام
3- وزن poids الرسالة أكثر من من 50 غ السعر prix يساوي 30دج للغرام
بالاضافة الى انه في حالة بعث الرسالة الى الدول international يضاف سعر الضريبة taxe تقدر ب 10% من السعر

tarek_81
2013-03-17, 00:14
السلام عليكم، كيف يمكنني كتابة هذه العملية في الإكسل و شكرا مسبقا
si f12=100% alors
ecrire "plate-forme"
si non
si i12=100% alors
ecrire "plancher"
si non
si l12=100% alors
ecrire "receptionné"
sinon
ecrire " "
finish
finish
finish
finish
finish

مع العلم أن " " يعني نتركها فارغة يعني لا نكتب شيئا
وشكرا

salemk
2013-03-18, 17:48
السلام عليكم، كيف يمكنني كتابة هذه العملية في الإكسل و شكرا مسبقا
si f12=100% alors
ecrire "plate-forme"
si non
si i12=100% alors
ecrire "plancher"
si non
si l12=100% alors
ecrire "receptionné"
sinon
ecrire " "
finish
finish
finish
finish
finish

مع العلم أن " " يعني نتركها فارغة يعني لا نكتب شيئا
وشكرا

Sachant que la syntaxe de la fonction de calcul SI est


SI(test_logique;valeur_si_vrai;valeur_si_faux)



==> Dans le cas où on’à plus que deux cas à prévoir alors imbriquer SINON (valeur_si_faux) les autres SI

Sous Microsoft office Excel, sélectionner la cellule qui va contenir le résultat et saisir la formule qui suit



=SI(F12=100%;"plate-forme";SI(I12=100%;"planchier";SI(L12=100%;"receptionne";"")))

you92cef
2013-03-21, 09:24
السلام عليكم

ارجوا من الاعظاء التفاعل في هده الفترة التي تتزامن مع العطلة لربفع مستوى البرمجة في الباسكال

وان شاء الله سيتم وضع تمارين وحلول وشروحات في اقرب وقت
شكرا للجميع

you92cef
2013-03-23, 09:48
********************TPN01********************

1-ECRIRE UNE FONCTION VERIFIENT SI TROIS NOMBRE ENTIERS A,B,C F ORMENT UN TRIPLET DE PYTHAGORE C'EST -A- DIRE
A²+b²=c²

2-ECRIRE ENSUITE UN PROGRAMME PASCAL PERMET TANNT D'AFFICHER LES N PREMIERS/N DONNE PAR L'UTILISATEUR/ TRIPLETS DE PHYTHAGORE (A,B,C) TELS QUE 0<A<B<C

VOICI UNE ILLUSTRATION DE L'EXECUTION D'UN TEL PROGRAMME

N=5

3²+4²=5²=25
6²+8²=10²=100
5²+12²=13²=169
9²+12²=15²=225
8²+15²=17²=289


مدة الحل ساعة

you92cef
2013-03-24, 18:08
الا توجد متابعة هنا؟

.صفاء.
2013-03-24, 20:07
http://www.djelfa.info/vb/showthread.php?t=1248559

لقد حاولت كتابة البرنامج بالباسكال لكن في if الثانية يقول لي ان العبارة خاطئة
و انا كذلك اظن ان البرنامج الذي في الصورة فيه خطأ
فقط اعتدت ان ارى بعد si ...alors.....................if...then
لكن لا توجد في الصورة
فهل من احد منكم يستطيع مساعدة العضوة
و ليتفضل مشكورا

you92cef
2013-03-24, 20:22
http://www.djelfa.info/vb/showthread.php?t=1248559

لقد حاولت كتابة البرنامج بالباسكال لكن في if الثانية يقول لي ان العبارة خاطئة
و انا كذلك اظن ان البرنامج الذي في الصورة فيه خطأ
فقط اعتدت ان ارى بعد si ...alors.....................if...then
لكن لا توجد في الصورة
فهل من احد منكم يستطيع مساعدة العضوة
و ليتفضل مشكورا

بخصوص الالغوريتم فهو خاطئ

والخطا يمكن في
si
expression logique
يعني بعد
si
نكتب عبارة منطقية اما تكون صحيحة او خاطئة
مثلا
si a>b alors

si a=b alors

si a div b =5 alors

فكبها عبارات منطقية
بينما في
si
الثانية
فاننا كتبنا هكدا

deput si
c:=c+1;
finsi
ادن بعد
si
لم نكتب عبارة منطقية بل كتبنا عملية
-*- instruction/affectation/
ادن هنا الخطا

فيجب ان نحدف
deput si ... finsi
في الالغوريتم

apres si on met une expression loqigue pas une instruction

.صفاء.
2013-03-24, 20:33
شكرا على المساعدة ............سوف أعيد كتابة البرنامج من جديد لمساعدة العضوة
لكن هذه المرة لن استعمل الباسكال لانه ممل من حيث الكتابة
سوف أستعمل برنامج المفضل لازاروس lazarus
هو بنفس لغة الباسكال لكنه بواجهة برنامج عادي
http://wiki.freepascal.org/images/thumb/f/fd/Lazarus-icons-lpr-proposal-bpsoftware.png/48px-Lazarus-icons-lpr-proposal-bpsoftware.png

razokix
2013-03-26, 14:40
هلا شباب ممكن مساعد في حل هدة التمارين ربي يجازيكم
بسم الله

en utilisant les procedures et les fonctio ecrivez un programme en pascal qui :

1_affiche le plus grand element et le rang de celle_ci dans le tableau

2_inserer la valeur X a la kieme place (on obtiendra un tableau de n+1 elements) ^^i

3_augmente de 1 tous les element d'un tableau ,le nouveau tableau sera affiche a lecran

you92cef
2013-03-26, 16:42
هلا شباب ممكن مساعد في حل هدة التمارين ربي يجازيكم
بسم الله

en utilisant les procedures et les fonctio ecrivez un programme en pascal qui :

1_affiche le plus grand element et le rang de celle_ci dans le tableau

2_inserer la valeur X a la kieme place (on obtiendra un tableau de n+1 elements) ^^i

3_augmente de 1 tous les element d'un tableau ,le nouveau tableau sera affiche a lecran

تمارين سهلة اخي

بخصوص
grand element
فهو سهل
في هده الحالة من الافضل ان نستعمل
fonction
لان سوف تكون لنا نتيجة
le plus grand element affecter a le nom de la fonction

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

insertion
اولا نحدد المكان الدي ندخل فيه القيمة
مثلا
المكان 5
في القيمة التي ندخلها تاخد المكان 5
القيمة التي كانت في الرتبة 5 تصبح في الرتبة 6
وهكدا

بخصوص
augmentation
فهي سهلة

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

yalova
2013-03-27, 20:35
comment afficher une structure en c ,je cherche l'algorithme s.v.p

yalova
2013-03-27, 20:50
Livres Informatique
http://yacinedicristi.webobo.biz/download.php?id_menu=4043006

you92cef
2013-03-28, 11:53
comment afficher une structure en c ,je cherche l'algorithme s.v.p

structure de qoui

enregistrement,liste chaine,2 chaine,circulaire, arbre......

yalova
2013-03-28, 12:09
structure de qoui

enregistrement,liste chaine,2 chaine,circulaire, arbre......

Liste Linéaire Chainée

yalova
2013-03-28, 12:11
الـــــرجاء أخي ان تفضلت تساعدني في هذا البرنامج :
http://djelfa.info/vb/showthread.php?t=1252002

you92cef
2013-03-28, 18:34
الـــــرجاء أخي ان تفضلت تساعدني في هذا البرنامج :
http://djelfa.info/vb/showthread.php?t=1252002

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

ادا امكن حاول ان تكتب الرنامج بلغة الباسكال او الالغوريتم ثم من بعد ترجمه الى لغى السي
شكرا

yalova
2013-03-28, 19:21
اظن انك تحتاجه بلغة السي
للاسف لم نتطرف بعد لهده الدروس في لغة السي

ادا امكن حاول ان تكتب الرنامج بلغة الباسكال او الالغوريتم ثم من بعد ترجمه الى لغى السي
شكرا

للأسف هذه هي المشكلة أخي الكريم الألغوريتم صحيح لكن هناك خطأ ،والخطأ بسبب اللغة وليس الألغوريتم

سماح الجيجلية
2013-03-29, 18:58
svp ...aidez-moi ....je veux l'algorithme ou le prgm en C
ecrire un prgrm qui lit à partir du clavier une suite de caractères terminée par'.' et mémorise au fur et à mesure la suite dans un tableau puis effectuer les taches suivantes :
1-recherche le caractère le plus fréquent dans la suite
2-teste si la suite de caractères constitue un palindrome
3-affiche à l'inverse la suite de caractères
(chaque tache par une fonction ou procédure qui doit etre appelée par le prgrm principale)

asma@
2013-03-30, 21:28
السلام عليكم انا بامس الحاجة لحل هذا التمرين
ecrire un algo qui pemet :
de créer un fichier (etudient)contenant les info suivantes:numero d'identification (entier),nom,moy
de visualiser la liste des "tudiants
de visualiser un etudiant par son numero d'identigication

بلييييييييييييييييييييييز في اقرب ساعة

razokix
2013-03-30, 21:36
ارجو المساعده في كيفية زيادة 1 في كل مره في الجدول

هدا السوال

3_augmente de 1 tous les element d'un tableau ,le nouveau tableau sera affiche a lecran

وادا ممكن توضيح هدا السوال اكثر

2_inserer la valeur X a la kieme place (on obtiendra un tableau de n+1 elements)

you92cef
2013-03-31, 13:03
[QUOTE=asma@;13498463]السلام عليكم انا بامس الحاجة لحل هذا التمرين
ecrire un algo qui pemet :
de créer un fichier (etudient)contenant les info suivantes:numero d'identification (entier),nom,moy
de visualiser la liste des "tudiants
de visualiser un etudiant par son numero d'identigication

بلييييييييييييييييييييييز في اقرب ساعة[/QUOTE

on utilison les tableau ou les liste chaineé

l'algo consist a l'architacture d'enregistrement

razokix
2013-03-31, 14:41
ارجو المساعده في كيفية زيادة 1 في كل مره في الجدول

هدا السوال

3_augmente de 1 tous les element d'un tableau ,le nouveau tableau sera affiche a lecran

وادا ممكن توضيح هدا السوال اكثر

2_inserer la valeur X a la kieme place (on obtiendra un tableau de n+1 elements)


تم حل السوال 1 ارجو المساعده في هدان السوالان

en utilisant les procedures et les fonctio ecrivez un programme en pascal qui

1
_inserer la valeur X a la kieme place (on obtiendra un tableau de n+1 elements)

2
permet d afficher les element de T compris entre deux position P1 et P2 ,leur moyenne arthimetique ,la valeur maximale et la valeur minimale contenues dans cet intervalle ,

ارجو توضيح طريقة الحل بشكل واضح لو سمحتو

سلام

you92cef
2013-03-31, 18:33
تم حل السوال 1 ارجو المساعده في هدان السوالان

en utilisant les procedures et les fonctio ecrivez un programme en pascal qui

1
_inserer la valeur x a la kieme place (on obtiendra un tableau de n+1 elements)

2
permet d afficher les element de t compris entre deux position p1 et p2 ,leur moyenne arthimetique ,la valeur maximale et la valeur minimale contenues dans cet intervalle ,

ارجو توضيح طريقة الحل بشكل واضح لو سمحتو

سلام

ان شاء الله غدا صباحا نضع الشرح مكع برنامج كامل

للاسف لقد كتبت رد مع الشرح ولكن انقطاء الكهرباء اضاع كل شيء :d

حاول برمدجته بنفسك الامر ليس صعب حول بورقة وقلم

razokix
2013-03-31, 20:49
ان شاء الله غدا صباحا نضع الشرح مكع برنامج كامل

للاسف لقد كتبت رد مع الشرح ولكن انقطاء الكهرباء اضاع كل شيء :d

حاول برمدجته بنفسك الامر ليس صعب حول بورقة وقلم

حاولت اخي بس ما في فايد ارجو المساعدة لو تكرم

razokix
2013-03-31, 22:52
ارجو المساعد في السوالين

en utilisant les procedures et les fonctio ecrivez un programme en pascal qui

1
_inserer la valeur X a la kieme place (on obtiendra un tableau de n+1 elements)

2
permet d afficher les element de T compris entre deux position P1 et P2 ,leur moyenne arthimetique ,la valeur maximale et la valeur minimale contenues dans cet intervalle ,

وعندي سوال اخر لو يمكن تكتبو لي طريقة المقارن بين جدولين في البسكال ادا كانا نفس القيم او لا
ارجو ان يتم الحل في اقرب وقت لو تكرمو

you92cef
2013-04-01, 10:59
ارجو المساعد في السوالين

en utilisant les procedures et les fonctio ecrivez un programme en pascal qui

1
_inserer la valeur X a la kieme place (on obtiendra un tableau de n+1 elements)

2
permet d afficher les element de T compris entre deux position P1 et P2 ,leur moyenne arthimetique ,la valeur maximale et la valeur minimale contenues dans cet intervalle ,

وعندي سوال اخر لو يمكن تكتبو لي طريقة المقارن بين جدولين في البسكال ادا كانا نفس القيم او لا
ارجو ان يتم الحل في اقرب وقت لو تكرمو



program ex;
uses wincrt;
type tab=array[1..25] of integer;
var i,z,p,n:integer;
t,tt:tab;
function tot (m:integer):integer;
begin
if m=1 then
for i:=1 to n do begin
write('t[',i,']=');
read(t[i]);
tt[i]:=t[i]+1;
end;
if m=2 then begin
writeln('Les valeur initiale de tableau sont');
for i:=1 to n do
writeln('t[',i,']= ',t[i]);
end;
if m=3 then begin
writeln('Les valeur de tableau apres augmentation de 1 sont');
for i:=1 to n do
writeln('t[',i,']= ',tt[i]);
end;
end;
begin
writeln('S.V.P entrez le nombre de valeur de tableau');
readln(n);
if n<=0 then writeln('Immpossible!');
tot(1);
tot(2);
tot(3);
end.


بخصوص المقارنة او
insertion
او الترتيب فكل هده التمارين تطرقنا لها في هدا الموضوع يكفي فقط ان تراجع الردود السابقة
واظن انكم تطرقتم لها ايضا في الجامعة فحاول ان تبرمجها بنفسك وادا تحتاج مساعدة نحن في الخدمة ان شاء الله

حول ان تفهم البرنامج

yalova
2013-04-01, 12:31
السلام عليكم ابحث عن الخوارزمية التي تممكنني من انجاز une liste chainée
ويكون كل مايون ستريكتير مثل ما في الصورة:
http://img707.imageshack.us/img707/8230/capturedxst.png
ثم نديرلها tri a bulle et tri par insertion et tri par comptage على حسب اسامي الأشخاص واذا أمكن البرنامج في الباسكال او السي
وشكــــــــراا

razokix
2013-04-01, 15:18
program ex;
uses wincrt;
type tab=array[1..25] of integer;
var i,z,p,n:integer;
t,tt:tab;
function tot (m:integer):integer;
begin
if m=1 then
for i:=1 to n do begin
write('t[',i,']=');
read(t[i]);
tt[i]:=t[i]+1;
end;
if m=2 then begin
writeln('Les valeur initiale de tableau sont');
for i:=1 to n do
writeln('t[',i,']= ',t[i]);
end;
if m=3 then begin
writeln('Les valeur de tableau apres augmentation de 1 sont');
for i:=1 to n do
writeln('t[',i,']= ',tt[i]);
end;
end;
begin
writeln('S.V.P entrez le nombre de valeur de tableau');
readln(n);
if n<=0 then writeln('Immpossible!');
tot(1);
tot(2);
tot(3);
end.


بخصوص المقارنة او
insertion
او الترتيب فكل هده التمارين تطرقنا لها في هدا الموضوع يكفي فقط ان تراجع الردود السابقة
واظن انكم تطرقتم لها ايضا في الجامعة فحاول ان تبرمجها بنفسك وادا تحتاج مساعدة نحن في الخدمة ان شاء الله

حول ان تفهم البرنامج

اخي يبدو انك لم تفهم المطلوب من السوال
البرنامج الدي عملته انت يقوم بزيادة 1 لكل خانة
اما السوال فهو يقول
2_inserer la valeur X a la kieme place (on obtiendra un tableau de n+1 elements) ^^i
يعني مثلا لو وضعت 4 قيم للجدول هي 4 و 2 و 5 و6
تضع قيمة x وتضع مكانها مثلا في الموقع 3
عندها الناتج يجب ان يكون
4 و 2 وx و5 و 6
يعني الي بعد x يتقدمو برتبه

+ تسلم على مجهوداتك اخي وارجو ان تخبرني بكيفية الحل ^^
واررجو توضيح كيفية المقارن بين جدولين t1[i] wa t2[j] v

you92cef
2013-04-01, 18:26
اخي يبدو انك لم تفهم المطلوب من السوال
البرنامج الدي عملته انت يقوم بزيادة 1 لكل خانة
اما السوال فهو يقول
2_inserer la valeur X a la kieme place (on obtiendra un tableau de n+1 elements) ^^i
يعني مثلا لو وضعت 4 قيم للجدول هي 4 و 2 و 5 و6
تضع قيمة x وتضع مكانها مثلا في الموقع 3
عندها الناتج يجب ان يكون
4 و 2 وx و5 و 6
يعني الي بعد x يتقدمو برتبه

+ تسلم على مجهوداتك اخي وارجو ان تخبرني بكيفية الحل ^^
واررجو توضيح كيفية المقارن بين جدولين t1[i] wa t2[j] v
نعم لم ابرمج اضافة عنصر للجدول
ajouter un element dans le tableau je pence que on fait ces exercice dans cette page alors il suffit de revoir le sujet et les reponce precedent

ce qui la comparaison entre les tableau cela revient au type de comparason par exemple ordre croissant ou decroissant ,la moyen .. extra

mais je pences que vous vouler connaitre si deux tableau contient les meme element
pour cela
on a duex chemin ou plusieurs a suivre
par example
si on tient compte ou classement
alors le tableau 1
qui contient les element suivant
1
2
3
4
c'est pas le meme pour le tableau 2 qui contient les element suivant
1
3
2
4

alors cela revient ou type de reponce ou tout simplement la maniere qu'on veut resoudre l'exo

donc a mon avis je pence que vous avez l'algo de l'insertion d'un element dans un tableau *-* ajouter un element*-*
donc il reste d'appliquer

essayer et si vous trouver des difficulteé on est la
ان شاء الله
شكرا

razokix
2013-04-01, 19:14
نعم لم ابرمج اضافة عنصر للجدول
ajouter un element dans le tableau je pence que on fait ces exercice dans cette page alors il suffit de revoir le sujet et les reponce precedent

ce qui la comparaison entre les tableau cela revient au type de comparason par exemple ordre croissant ou decroissant ,la moyen .. extra

mais je pences que vous vouler connaitre si deux tableau contient les meme element
pour cela
on a duex chemin ou plusieurs a suivre
par example
si on tient compte ou classement
alors le tableau 1
qui contient les element suivant
1
2
3
4
c'est pas le meme pour le tableau 2 qui contient les element suivant
1
3
2
4

alors cela revient ou type de reponce ou tout simplement la maniere qu'on veut resoudre l'exo

donc a mon avis je pence que vous avez l'algo de l'insertion d'un element dans un tableau *-* ajouter un element*-*
donc il reste d'appliquer

essayer et si vous trouver des difficulteé on est la
ان شاء الله
شكرا

مشكور لاهتمامك اخي
بخصوص السوال 2 انا برمجت برنامج يسمح بقراءة جدول
ثم وضع قيمه x
واختيار المكان الدي سوف توضع في هالقيمة x
لكن المشكل هو مثلا لو كانت قيم الجدول
5
2
3
1
انا احدد القيمه x=20 ثم احدد مكان وضعها 2
الجدول الدي ينتج
5
20
3
1
نلاحط ان القيمة السابق التي هي 2 اختفت ووضع مكانها 20

لكن المفروض في السوال هو ان الجدول الناتج يجب ان يكون
5
20
2
3
1
ارجو مساعدتي في كتابة الطريقة التي تسمح بهدا

اما بخصوص المقارن فالمطلوب المقارن مع جدولين
مثلا
الجدول الاول الجدول الثاني
5 ,,,,,,,,,,,,,,,,, 5
2 ,,,,,,,,,,,,,,,, 33
3 ,,,,,,,,,,,,,,, 3
1 ,,,,,,,,,,,,,,,, 1
هنا المفروض يخبرنا البرنامج ان الجدولين غير متماثلين
حتى ولو كان الاختلاف في قيمة
اما ادا كانا
الجدول الاول الجدول الثاني
5 ,,,,,,,,,,,,,,,,, 5
2 ,,,,,,,,,,,,,,,, 2
3 ,,,,,,,,,,,,,,, 3
1 ,,,,,,,,,,,,,,,, 1

هنا المفروض البرنامج يخبرنا ان الجدولين متماثلين

ارجو ان اكون قد وضحت وفي انتظاااااااار المساعد اخي
اشكرك مرة اخر اخي ربي يجازيك ما قصرت معي :19:

razokix
2013-04-01, 22:04
مشكور لاهتمامك اخي
بخصوص السوال 2 انا برمجت برنامج يسمح بقراءة جدول
ثم وضع قيمه x
واختيار المكان الدي سوف توضع في هالقيمة x
لكن المشكل هو مثلا لو كانت قيم الجدول
5
2
3
1
انا احدد القيمه x=20 ثم احدد مكان وضعها 2
الجدول الدي ينتج
5
20
3
1
نلاحط ان القيمة السابق التي هي 2 اختفت ووضع مكانها 20

لكن المفروض في السوال هو ان الجدول الناتج يجب ان يكون
5
20
2
3
1
ارجو مساعدتي في كتابة الطريقة التي تسمح بهدا

اما بخصوص المقارن فالمطلوب المقارن مع جدولين
مثلا
الجدول الاول الجدول الثاني
5 ,,,,,,,,,,,,,,,,, 5
2 ,,,,,,,,,,,,,,,, 33
3 ,,,,,,,,,,,,,,, 3
1 ,,,,,,,,,,,,,,,, 1
هنا المفروض يخبرنا البرنامج ان الجدولين غير متماثلين
حتى ولو كان الاختلاف في قيمة
اما ادا كانا
الجدول الاول الجدول الثاني
5 ,,,,,,,,,,,,,,,,, 5
2 ,,,,,,,,,,,,,,,, 2
3 ,,,,,,,,,,,,,,, 3
1 ,,,,,,,,,,,,,,,, 1

هنا المفروض البرنامج يخبرنا ان الجدولين متماثلين

ارجو ان اكون قد وضحت وفي انتظاااااااار المساعد اخي
اشكرك مرة اخر اخي ربي يجازيك ما قصرت معي :19:

تم بحمد الله حل تمرين المقااارن
باقي السوال 2 ارجو المساعده
2_inserer la valeur X a la kieme place (on obtiendra un tableau de n+1 elements) ^^i

salemk
2013-04-01, 22:43
تم بحمد الله حل تمرين المقااارن
باقي السوال 2 ارجو المساعده
2_inserer la valeur X a la kieme place (on obtiendra un tableau de n+1 elements) ^^i

محاولتك حسب الشرح جيدة، شكرا
ربما لم تنتبه لكون بزيادة قيمة جديدة للجدول فان n ستصير n+1، هذه محاولتي قد تنفعك في شيء



program ee;
uses wincrt;
type
tab=array[1..10] of integer;


procedure remplir(var t:tab; var n:integer);
var
i:integer;
begin
repeat
writeln('donner le nombre des éléments à saisir (entre 2 et 9)');
readln(n);
until n in [2..9];
for i:=1 to n do
begin
writeln('donner l''élement de la position ',i);
readln(t[i]);
end;
end;

procedure insert(var t:tab; var n:integer);
var
i,x,p:integer;
begin
writeln('donner une valeur à inserer dans le tableau');
readln(x);
repeat
writeln('donner la position d''isertion');
readln(p);
until p in [1..n+1];
for i:=n+1 downto p do
t[i]:= t[i-1];
t[p]:=x;
n:=n+1;
end;

procedure affiche (t:tab;n:integer);
var
i:integer;
begin
for i:=1 to n do
writeln('l''élement du tableau n°',i,' est ',t[i]);
end;


var
t:tab ;
n:integer;


begin
remplir(t,n);
insert(t,n);
affiche(t,n);
end.

you92cef
2013-04-02, 10:53
تم الاجابة عن التمرين ارجوا فقط ان تبرمج بروسيدور او فونكشن واحدة تضع فيها كل ما هو مطلوب بعدها تعمل منادات لها
سواء مثلا في البرنامج السابق او مناداتها بالطريقة
tot(2)
بالنسبة للحل الاول المقترح
اضافة الى بعض التعديلات ومنح القارئ بعض الاختيارات
case .... of
وبعدها نعمل منادات للبروسيدور بحسب اختيار القارئ

razokix
2013-04-02, 16:09
محاولتك حسب الشرح جيدة، شكرا
ربما لم تنتبه لكون بزيادة قيمة جديدة للجدول فان n ستصير n+1، هذه محاولتي قد تنفعك في شيء



program ee;
uses wincrt;
type
tab=array[1..10] of integer;


procedure remplir(var t:tab; var n:integer);
var
i:integer;
begin
repeat
writeln('donner le nombre des éléments à saisir (entre 2 et 9)');
readln(n);
until n in [2..9];
for i:=1 to n do
begin
writeln('donner l''élement de la position ',i);
readln(t[i]);
end;
end;

procedure insert(var t:tab; var n:integer);
var
i,x,p:integer;
begin
writeln('donner une valeur à inserer dans le tableau');
readln(x);
repeat
writeln('donner la position d''isertion');
readln(p);
until p in [1..n+1];
for i:=n+1 downto p do
t[i]:= t[i-1];
t[p]:=x;
n:=n+1;
end;

procedure affiche (t:tab;n:integer);
var
i:integer;
begin
for i:=1 to n do
writeln('l''élement du tableau n°',i,' est ',t[i]);
end;


var
t:tab ;
n:integer;


begin
remplir(t,n);
insert(t,n);
affiche(t,n);
end.




lمشكور اخي
تم الاستفادة من مشاركتك

razokix
2013-04-02, 16:10
تم الاجابة عن التمرين ارجوا فقط ان تبرمج بروسيدور او فونكشن واحدة تضع فيها كل ما هو مطلوب بعدها تعمل منادات لها
سواء مثلا في البرنامج السابق او مناداتها بالطريقة
tot(2)
بالنسبة للحل الاول المقترح
اضافة الى بعض التعديلات ومنح القارئ بعض الاختيارات
case .... Of
وبعدها نعمل منادات للبروسيدور بحسب اختيار القارئ

مشكور اخي مشكور كثير ما قصرت معي :19:
ربي يجازيك

razokix
2013-04-02, 16:18
الان شباب باقي لي سوالين لم افهم شو المطلوب فارجو ان توضحو لي المطلوب في كل سوال بمثال ان امكن :

en utilisant les procedures et les fonctio ecrivez un programme en pascal qui :

1
pour chaque elemet de T on ne garde que sa premiere occurrence et on remplace les autres par 0 . puis regrouper les element restant au debut de tableau
2
inserer un entier x saisi par l utilisateur dans un tableau d'elements classes par order croissant

في الانتظار

you92cef
2013-04-02, 19:19
الان شباب باقي لي سوالين لم افهم شو المطلوب فارجو ان توضحو لي المطلوب في كل سوال بمثال ان امكن :

En utilisant les procedures et les fonctio ecrivez un programme en pascal qui :

1
pour chaque elemet de t on ne garde que sa premiere occurrence et on remplace les autres par 0 . Puis regrouper les element restant au debut de tableau
2
inserer un entier x saisi par l utilisateur dans un tableau d'elements classes par order croissant

في الانتظار

بخصوص السؤال الاول
فادا كانت لدينا قيمة تتكرر فاننا نحتفظ بالقيمة الاولى فقط والقيم الاخرى تصبح 0 مثال

10 1 3 2 4 5 6 2 8 2

10 قيم
نلاحظ ن القيمة 2 تكررت اكثر من مرة
ادن علينا ان نبرمج بروسيدور او فوكسيون لاعطاءنا النتائج التالية
10 1 3 2 4 5 6 0 8 0

10 قيم
احتفظنا ب2 الاولى والقيم الاخرى ل2 تصبح 0
بخصوص الشطر الثاني للسؤال فلم افهمه جيدا ولكن اظن
انه علينا ان نجعل القيم التي لا تساوي 0 في بداية الجدول والقيم التي تساوي 0 في نهاية الجدول *-* يعني نحدف القيم التي تساوي 0*-*
هكدا
10 1 3 2 4 5 6 8

8 قيم

السؤال الثاني علينا اولا ترتيب الجدول ترتيب تصاعدي
بعدها نقوم بقراءة قيمة ونضعها في مكانها بحيث نحتفظ بالترتيب التصاعدي
مثلا
لدينا القيم التالية
1
3
2
4
7
6

نرتبها فتصبح هكدا
1
2
3
4
6
7

نقرا قيمة ولتكن مثلا 5
علينا ان نضع 5 في مكانها الخاص مع الحفاظ على الترتيب فينتج التالي
1
2
3
4
5
6
7

سماح الجيجلية
2013-04-02, 19:50
svp ...aidez-moi ....je veux l'algorithme ou le prgm en C
ecrire un prgrm qui lit à partir du clavier une suite de caractères terminée par'.' et mémorise au fur et à mesure la suite dans un tableau puis effectuer les taches suivantes :
1-recherche le caractère le plus fréquent dans la suite
2-teste si la suite de caractères constitue un palindrome
3-affiche à l'inverse la suite de caractères
(chaque tache par une fonction ou procédure qui doit etre appelée par le prgrm principale)


plzzzz ya jma3a 3awnouna ..wella pas de chance hna tani hhhhhhhh

you92cef
2013-04-02, 21:42
plzzzz ya jma3a 3awnouna ..wella pas de chance hna tani hhhhhhhh

j'essaye demain
ان شاء الله
mais je suis pas sur d'avoir un program ki circule b1

you92cef
2013-04-03, 12:10
لقد حاولت برمجة لمطلوب
برمجة فونكسيون القراءة وهل شغالة عادي ولكن بخصوص les tableau فهنا كان المشكل
فعندما اردت اظهار les valeur de tableau
البرنامج يظهر اشياء اخرى
والبتالي لم استطع اكمال البرنامج اعتدر لاننا لم نتطرق بعد لمثل هته التمارين ولكن ادا لديك محاولة فضعيها هنا لكي نتناقش حولها ربما نصل الى الحل المطلوب شكرا

yalova
2013-04-03, 15:58
السلام عليكم ابحث عن طريقة tri à bulle d'une liste liéaire chainée

عودة امل
2013-04-03, 16:54
بسم الله الرحمن الرحيم
السلام عليكم
موضوع مميز من عضو مميز ماشاء الله.......
ارجو أن تساعدوني من فضلكم في
ecrivez une fonction ou procedur qui retourne le nombre des jour
من
11/11/1990
.
.
.
.
.
jusqua 3/4/2013

you92cef
2013-04-03, 17:58
السلام عليكم ابحث عن طريقة tri à bulle d'une liste liéaire chainée

اولا هده الدروس خاصة بالسنة الثانية وقبل التطرق لها يجب المرور باشياء قبلها تسبقها ولكن كيف تطرقتم لها هده السنة

عموما هدا رابط خاص بدروس السنة الثانية

http://www.academia.edu/1906505/Algorithmique_et_Structures_de_Donnees_II
وبخصوص ما سئلت عنه
فالصفحة 10 تحتوي على
tri bulle d'un tableau
زالصفحة 25
تحتوي
tri bule d'un liste lineare

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

you92cef
2013-04-03, 18:03
بسم الله الرحمن الرحيم
السلام عليكم
موضوع مميز من عضو مميز ماشاء الله.......
ارجو أن تساعدوني من فضلكم في
ecrivez une fonction ou procedur qui retourne le nombre des jour
من
11/11/1990
.
.
.
.
.
jusqua 3/4/2013

ارجوا توضيح اكثر للبرنامج
يعني عدد الايام من 11/11/1990 الى 3/4/2013
ثابت وليس متغير لدلك لا نحتاج الى برمجة بروسيدور او فونكشن

ارجوا توضيخح المطلوب بدقة اكثر
ععد الايم الخاصة بكل شهر ؟
او تدخل تاريخ معين ويحسب الفارق الى غاية تاريخ 3/4/2013
او مادا بالضبظ؟
عموما الامر ليس بصعب
عدد ايام الشهور ثابت
ما عدا شهر فيفري يتغير كل اربع سنوات نضيف يوم
وهنا نكتفي باستدعاء الدالة
mod
والباقي مشكل حساب اكثر منه مشكل برمجة
ارجوا وضع المطلوب بدقة ومحاولة حله
شكرا لكم

razokix
2013-04-03, 18:47
شباب لو ممكن تساعدوني في حل هدين السوالين قبل نهاية العطله لو سمحتم
باقي لي سوالين فقط

En utilisant les procedures et les fonctio ecrivez un programme en pascal qui :

1
pour chaque elemet de t on ne garde que sa premiere occurrence et on remplace les autres par 0 . Puis regrouper les element restant au debut de tableau
2
inserer un entier x saisi par l utilisateur dans un tableau d'elements classes par order croissant
بخصوص السوال الثاني انا عرفت كيف اعمل جدول مرتب لكن لم اعرف الباقي
في انتظار حلولكم ومساعدتكم
^^

عودة امل
2013-04-03, 20:18
نعم اعتقد انه تدخل تاريخ معين ويحسب الفارق الى غاية تاريخ 3/4/2013

moh11183
2013-04-03, 20:20
اريد برنامج بلغة الباسكال يحسب العمر انطلاقا من تاريخ الميلاد بالتفصيل الشهر و اليوم

yalova
2013-04-03, 20:28
اولا هده الدروس خاصة بالسنة الثانية وقبل التطرق لها يجب المرور باشياء قبلها تسبقها ولكن كيف تطرقتم لها هده السنة

عموما هدا رابط خاص بدروس السنة الثانية

http://www.academia.edu/1906505/algorithmique_et_structures_de_donnees_ii
وبخصوص ما سئلت عنه
فالصفحة 10 تحتوي على
tri bulle d'un tableau
زالصفحة 25
تحتوي
tri bule d'un liste lineare

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

نعم أخي فأنا أدرس بالمدرسة الوطنية للاعلام الألي: وقد تطرقنا الى هذه الدروس
شكـــــــــراا على الملف

عودة امل
2013-04-03, 20:31
اريد برنامج بلغة الباسكال يحسب العمر انطلاقا من تاريخ الميلاد بالتفصيل الشهر و اليوم

هل تدرس في جامعة غرداية لانه لدينا نفس المطلوب...

you92cef
2013-04-03, 20:59
نعم أخي فأنا أدرس بالمدرسة الوطنية للاعلام الألي: وقد تطرقنا الى هذه الدروس
شكـــــــــراا على الملف
حسبتك من طلاب الجامعة
عموما ادا احتجت مساعدة فنحن في الخدمة ان شاء الله
شكرا

razokix
2013-04-04, 14:57
ارجو مساعدتي في حل هدا السوال شباب من فضلكم


en utilisant les procedures et les fonctio ecrivez un programme en pascal qui :

1
pour chaque elemet de T on ne garde que sa premiere occurrence et on remplace les autres par 0 . puis regrouper les element restant au debut de tableau

في الانتظار

you92cef
2013-04-04, 18:13
ارجو مساعدتي في حل هدا السوال شباب من فضلكم


en utilisant les procedures et les fonctio ecrivez un programme en pascal qui :

1
pour chaque elemet de T on ne garde que sa premiere occurrence et on remplace les autres par 0 . puis regrouper les element restant au debut de tableau

في الانتظار

تم شرح عمل الرنامج الامر بسيط
عليك فقط ان تعرف كيفية استخدام
les boucle

if ... else
:confused::confused:

عودة امل
2013-04-04, 18:31
ارجوا توضيح اكثر للبرنامج
يعني عدد الايام من 11/11/1990 الى 3/4/2013
ثابت وليس متغير لدلك لا نحتاج الى برمجة بروسيدور او فونكشن

ارجوا توضيخح المطلوب بدقة اكثر
ععد الايم الخاصة بكل شهر ؟
او تدخل تاريخ معين ويحسب الفارق الى غاية تاريخ 3/4/2013
او مادا بالضبظ؟
عموما الامر ليس بصعب
عدد ايام الشهور ثابت
ما عدا شهر فيفري يتغير كل اربع سنوات نضيف يوم
وهنا نكتفي باستدعاء الدالة
mod
والباقي مشكل حساب اكثر منه مشكل برمجة
ارجوا وضع المطلوب بدقة ومحاولة حله
شكرا لكم

نعم أعتقد انه تدخل تاريخ معين ويحسب الفرق
الباقي لم افهم ماتقصد

razokix
2013-04-04, 18:48
تم شرح عمل الرنامج الامر بسيط
عليك فقط ان تعرف كيفية استخدام
les boucle

if ... Else
:confused::confused:

ارجو مساعدتي قليل اخي ربي يجازيك والله حاولت وما نفعت
ساعدني في الجزئ الاول فقط الدي يجعل الرقم لثاني المماثل 0

you92cef
2013-04-04, 19:32
ارجو مساعدتي قليل اخي ربي يجازيك والله حاولت وما نفعت
ساعدني في الجزئ الاول فقط الدي يجعل الرقم لثاني المماثل 0

اظن انه تم حل تمرين مشابه

عموما لنفرض مثلا لدينا القيم التالية

1 2 3 4 5 6 7 8 9 1 2

اولا نحتاج الى دالة تحدد لنا العنصر الاول
مثلا في هده الحالة
دالة تحدد لنا الرقم 1
ثم نحتاج الى مقارنة 1 مع باقي القيم
من اجل هدا نحتاج الى دالة اخرى
هده الدالة كل مرة تاخد قيمة من 2 3 4 5 6 7 8 9 1 2
وتقارنه من القيمة الاولية التي هي 1
في حالة كان هناك تساوي القيمة الثانية تصبح 0
ثم بعد الانتهاء
الدالة الثاثنية تعطينا القيمة 2
2 نقارنها مع القيم 3 4 5 6 7 8 9 0 2 *-* تم تعويض 1 بالصفر سابقا*-*
وهكدا
اظن نحتاج دالتين
يمكن حل التمرين بطرق اخرى

you92cef
2013-04-04, 19:56
نعم أعتقد انه تدخل تاريخ معين ويحسب الفرق
الباقي لم افهم ماتقصد

حسنا

لنفرض مثلا انني ادخلت تاريخ
1/1/1990
واريد ان احسب عدد الايام الى غاية تاريخ 05/04/2013


عدد ايام الاهشر ثابت بغض النظر عن السنة
ما عدا عدد ايام شهر فيفري الدي في كل 4 سنوات نضيف يوم
طيب من
1/1/1990
الى
1/1/1991
توجد سنة

طيب نفرض ان في سنة 1990 شهر فيفري فيه 29 يوم
طيب
من 1/1/1990 الى 1/1/1991 توجد سنة
هده السنة كم عدد ايامها؟
365 صحيح؟
طيب لمادا 356 وليس 366؟
هدا لان 1990 عام يكون فيه شهر فيفري فيه 29 يوم
يعني العام الدي يكون فيه شهر فيفري 29 يوم والبتالي السنة 366 يوم هو سنة 1994 ثم 1998 وهكدا
اهدا من جهة
من جهة اخرى
ادا كان عدد الشهور مختلفا ولكن اليوم نفسه مثلا
من 1/3/1990 الى 1/1/200
فهنا
نحسب عدد الشهور التي تنقصنا حتى نصل الى سنة 1991 ثم من سنة 1991 الى 2000 الامر بسيط

نفس الامر بالنسبة للايام
مثلا من
21/5/1990
الى
12/03/2012
نحسب عدد الايام التي تنقصنا حتى ندخل في الشهر الجديد ثم بعدها عدد الاشهر التي تنقصنا حتى ندخل في السنة الجديدة
ثم بعدها نتعامل بالسنوات ادا كان دلك ممكن
ثم بعد دلك
عندما لا نستطيع التعامل بالسنة نتعامل بالاشهر ثم بالايام

الان بقي فقط البرجمة

عودة امل
2013-04-05, 09:48
حسنا

لنفرض مثلا انني ادخلت تاريخ
1/1/1990
واريد ان احسب عدد الايام الى غاية تاريخ 05/04/2013


عدد ايام الاهشر ثابت بغض النظر عن السنة
ما عدا عدد ايام شهر فيفري الدي في كل 4 سنوات نضيف يوم
طيب من
1/1/1990
الى
1/1/1991
توجد سنة

طيب نفرض ان في سنة 1990 شهر فيفري فيه 29 يوم
طيب
من 1/1/1990 الى 1/1/1991 توجد سنة
هده السنة كم عدد ايامها؟
365 صحيح؟
طيب لمادا 356 وليس 366؟
هدا لان 1990 عام يكون فيه شهر فيفري فيه 29 يوم
يعني العام الدي يكون فيه شهر فيفري 29 يوم والبتالي السنة 366 يوم هو سنة 1994 ثم 1998 وهكدا
اهدا من جهة
من جهة اخرى
ادا كان عدد الشهور مختلفا ولكن اليوم نفسه مثلا
من 1/3/1990 الى 1/1/200
فهنا
نحسب عدد الشهور التي تنقصنا حتى نصل الى سنة 1991 ثم من سنة 1991 الى 2000 الامر بسيط

نفس الامر بالنسبة للايام
مثلا من
21/5/1990
الى
12/03/2012
نحسب عدد الايام التي تنقصنا حتى ندخل في الشهر الجديد ثم بعدها عدد الاشهر التي تنقصنا حتى ندخل في السنة الجديدة
ثم بعدها نتعامل بالسنوات ادا كان دلك ممكن
ثم بعد دلك
عندما لا نستطيع التعامل بالسنة نتعامل بالاشهر ثم بالايام

الان بقي فقط البرجمة

بارك الله فيك جاري محاولة البرمجة.....

salemk
2013-04-06, 02:31
ارجو مساعدتي قليل اخي ربي يجازيك والله حاولت وما نفعت
ساعدني في الجزئ الاول فقط الدي يجعل الرقم لثاني المماثل 0


Soit le tableau T suivant :
|10| 7| 9| 7|10| 6| 7| 4| 8| 8|

Pour chaque élément de T on ne garde que sa première occurrence et on remplace les autres par 0.
|10| 7| 9| 0| 0| 6| 0| 4| 8| 0|

On regroupe les éléments restants au début du tableau T.
|10| 7| 9| 6| 4| 8| 0| 0| 0| 0|

Ecrire un programme Pascal qui fait le traitement ci-dessus pour un tableau T de n (2 <= n <= 20) entiers positifs non nuls et détermine et affiche le nombre d'éléments différents de T.





program ex;
uses wincrt;
type
tab=array[1..20] of integer;

procedure remplir(var u:tab;var x:integer);
var i:integer;
begin

repeat
writeln('donner la dimension du tableau');
readln(x);
until x in [2..20];

for i:=1 to x do
begin
repeat
writeln('donner l''element n°',i,' du tableau');
readln(u[i]);
until (u[i]<>0);
end;
end;





procedure remplacer(var v :tab;y:integer);
var
i,j:integer;
begin
i:=1;
while i<=y do
begin
for j:=i+1 to y do
begin
if( v[i] = v [j] ) and (v[i]<>0) then
v[j]:=0;
end;
i:=i+1;
end;
end;

procedure regrouper(var w:tab;z:integer);
var
i,j,nb,aux:integer;
begin
for i:=1 to z-1 do
for j:= i+1 to z do
if ((w[j]<>w[i]) and (w[i]=0)) then
begin
aux:=w[i];
w[i]:=w[j];
w[j]:=aux
end;
nb:=0;
i:=1;
while ((w[i]<>0) and (i<=z)) do
begin
nb:=nb+1;
i:=i+1;
end;
writeln('le nombre des entiers différents est de ',nb);
end;


procedure afficher(v:tab;y:integer);
var
i:integer;
begin
for i :=1 to y do
write(v[i]:3);
writeln;
end;


var
t:tab;
n:integer;
begin
remplir(t,n);
afficher(t,n);
remplacer(t,n);
afficher(t,n);
regrouper(t,n);
afficher(t,n);
end.

amine0007
2013-04-07, 13:30
من لديه التوقيت الاسبوعي للسنة الثانية اعلام الي بجامعة سطيف

عودة امل
2013-04-09, 19:29
حسنا

لنفرض مثلا انني ادخلت تاريخ
1/1/1990
واريد ان احسب عدد الايام الى غاية تاريخ 05/04/2013


عدد ايام الاهشر ثابت بغض النظر عن السنة
ما عدا عدد ايام شهر فيفري الدي في كل 4 سنوات نضيف يوم
طيب من
1/1/1990
الى
1/1/1991
توجد سنة

طيب نفرض ان في سنة 1990 شهر فيفري فيه 29 يوم
طيب
من 1/1/1990 الى 1/1/1991 توجد سنة
هده السنة كم عدد ايامها؟
365 صحيح؟
طيب لمادا 356 وليس 366؟
هدا لان 1990 عام يكون فيه شهر فيفري فيه 29 يوم
يعني العام الدي يكون فيه شهر فيفري 29 يوم والبتالي السنة 366 يوم هو سنة 1994 ثم 1998 وهكدا
اهدا من جهة
من جهة اخرى
ادا كان عدد الشهور مختلفا ولكن اليوم نفسه مثلا
من 1/3/1990 الى 1/1/200
فهنا
نحسب عدد الشهور التي تنقصنا حتى نصل الى سنة 1991 ثم من سنة 1991 الى 2000 الامر بسيط

نفس الامر بالنسبة للايام
مثلا من
21/5/1990
الى
12/03/2012
نحسب عدد الايام التي تنقصنا حتى ندخل في الشهر الجديد ثم بعدها عدد الاشهر التي تنقصنا حتى ندخل في السنة الجديدة
ثم بعدها نتعامل بالسنوات ادا كان دلك ممكن
ثم بعد دلك
عندما لا نستطيع التعامل بالسنة نتعامل بالاشهر ثم بالايام

الان بقي فقط البرجمة

ممكن البرمجة لاني حاولت فيها و تجيني خاطئة,,,,, و غدا عندي

algeriano9354
2013-04-11, 15:56
السلام عليكم ،،، أريد مساعدة في تمرين يطلب عمل برنامج يقوم بالتحويل بين القواعد العديدة (changement de base) يعني مثلا نعطيع عدد في الأساس 10 base decimal و هو يقوم بالتحويل لأساس آخر (مثلا2 - base binaire)
البرنامج يتكون من 3 مراحل : 1- التحقق من العدد ( هذه المرحلة قمت بها و هي تعمل جيدا)
2- التحويل للاساس 10 : قبل التحويل لاساس المطلوب يجب اولا المرور عبر الاساس 10
3- التحويل للاساس الجديد الذي نريد التحويل له

*****************************************
المرحلة الاولى :
rogram tp4;
uses wincrt;
var
base,nbr,a:longint;

Function test(a:longint):string;
begin
test:='valide';
repeat
a:=nbr mod 10;
nbr:=(nbr-a) div 10;
if a>=base then
test:='non valide';
until nbr < 1
end;

Begin
write('entrer une valeur :');
readln(nbr);
write('entrer la base :');
readln(base);
writeln('la valeur est :',test(a));
end.

you92cef
2013-04-11, 18:14
السلام عليكم ،،، أريد مساعدة في تمرين يطلب عمل برنامج يقوم بالتحويل بين القواعد العديدة (changement de base) يعني مثلا نعطيع عدد في الأساس 10 base decimal و هو يقوم بالتحويل لأساس آخر (مثلا2 - base binaire)
البرنامج يتكون من 3 مراحل : 1- التحقق من العدد ( هذه المرحلة قمت بها و هي تعمل جيدا)
2- التحويل للاساس 10 : قبل التحويل لاساس المطلوب يجب اولا المرور عبر الاساس 10
3- التحويل للاساس الجديد الذي نريد التحويل له

*****************************************
المرحلة الاولى :
rogram tp4;
uses wincrt;
var
base,nbr,a:longint;

Function test(a:longint):string;
begin
test:='valide';
repeat
a:=nbr mod 10;
nbr:=(nbr-a) div 10;
if a>=base then
test:='non valide';
until nbr < 1
end;

Begin
write('entrer une valeur :');
readln(nbr);
write('entrer la base :');
readln(base);
writeln('la valeur est :',test(a));
end.

تم حله تمرين مشابه لهدا وتم منحه لطالب
ساحاول التواصل معه ادا ما كان يحتفظ بالرنامج والكود لديه

بخصوص التحويل يمكن استعمال عدة اقتراحات ولكن من الاحسن استعمال دالة خاصة بلغة البرمجة
assembleur
الدالة اسمها
shr
مثلا
8
octale
=1000
en binaire
pour cela
on peut utuliser les chaine de carrectere puisgue
1+1=11
1 et un carectere
donc 1000 sera un chaine de carectere
pour rendre 1000 un nombre on fait des test et des fonction soit predefinit ou on programmer

ou tout simplemenrt utiliser la fonction shr de langauge assempleur qui est connu en pascal *-* on peut la utilier*-*

pour tout ca essayer de resoudre le programme comme vous vouler et j'essaye de trouver le programme cher mon amin
bon chance

you92cef
2013-04-11, 18:15
ممكن البرمجة لاني حاولت فيها و تجيني خاطئة,,,,, و غدا عندي
اسف على تاخر الرد
عموما تم شرح طريقة البرمجة
او يمكن بكل بساطة حساب عدد الايام بين التاريخين الدين ندخلهما ومع مراعات شهر فيفري فقط

haroune21
2013-04-12, 14:30
اريد مساعدة من الاخوة في حل هدا (باسكال ) ف /ن+....+ 4/27+3/12+ s = 2/9

you92cef
2013-04-12, 17:56
اريد مساعدة من الاخوة في حل هدا (باسكال ) ف /ن+....+ 4/27+3/12+ s = 2/9

وضح اكثر اخي حتى نستطيع ان نساعدك

you92cef
2013-04-13, 10:57
بخصوص كود التحويل من
octale to bin
للاسف لم اجده والعضو الدي ارسلته له لم يجده ايضا
عموما هدا برنامج وحجدته في احد المنتديات


program dec_bin_oct;
uses wincrt;
const po2:array[0..7] of byte=(1,2,4,8,16,32,64,128); {powers of 2}
bin:array[false..true] of char='01';
oct:array[0..7] of char='01234567';

{Decimal to binary}
function dec2bin(b:byte):string;
var s:string;
i:byte;
begin
s:='';
for i:=7 downto 0 do
s:=s+bin[(po2[i] and b=po2[i])];
dec2bin:=s;
end;

{Binary ot decimal}
function bin2dec(s:string):byte;
var l:byte absolute s; {lenght of s}
i,b:byte;
begin
b:=0;
while l<8 do s:=bin[false]+s;
if l>8 then s:=copy(s,l-7,8);
for i:=1 to l do
if s[i]=bin[true] then b:=b+po2[8-i];
bin2dec:=b;
end;

{Binary to octal}
function bin2oct(b:string):string;
var s:string;
l:byte absolute b; {lenght of b}
i:byte;
begin
while ((l mod 3)<>0) do b:=bin[false]+b;
s:='';
for i:=1 to (l div 3) do
s:=s+oct[bin2dec(b[pred(i)*3+1]+b[pred(i)*3+2]+b[pred(i)*3+3])];
bin2oct:=s;
end;

{Octal to binary}
function oct2bin(b:string):string;
var l:byte absolute b;
i:byte;
s:string;
begin
s:='';
for i:=1 to l do
s:=s+copy(dec2bin(ord(b[i])-48),6,3);
oct2bin:=s;
end;


var n:byte;

begin
write(#13#10,'Enter a decimal :');readln(n);
writeln(n,' in binary :',dec2bin(n),', in decimal :',bin2dec(dec2bin(n)));
writeln(n,' in octal :',bin2oct(dec2bin(n)),' in binary: ',oct2bin(bin2oct(dec2bin(n))));
readln;
end.




اولا



var l:byte absolute s; {lenght of s}


فهده دالة تقوم باعطاءنا طول
la chaine de carecterre
مثلا


s:='bonjour'
l:=7


يمكن استعمال الدالة
absolute
او
length
جربت تعويضها ب
length
ولكن البرنامج لم يشتغل كاملا
ثانيا


s:=copy(s,l-7,8)


هده الدالة
تتعامل فقط مع
chaine de carrectere
بحيث انها 3 قيم لكي تعمل
القيمة الاولى وهي
la chaine de carresterre
القيمة الثانية
وهو العنصر الدي نريده ان نقوم بنسخة
القيمة الثالثة وهو عدد الحروف الدي ننسخها بعد العنصر 2
مثلا


s:='bonjour'
s:=copy(s,1,1)
's:='b
s:=copy(s,1,3);
s:='bon'
s:=copy(s,3,4);
s:='njou''

you92cef
2013-04-13, 11:10
يمكن تحويل عدد من قاعدة الى القاعدة 10 انطلاقا من البرنامج السابق
بحيث ندخل رقم ثم ندخل القاعدة التي كتبنا فيها هدا الرقم
مثلا
25
sur la base de
6
alors on utilison le prancipe de puissancce on obtient la representation de se nombre sur la base 10
pour cela il faut utiliser une procedure ou fonction
c'est facile car on utilse simplement la maniere de calcule un nombre a une puissance
a^b:=a*a*a*a*a*a*
b fois
on sortant de procedure ou fonction on obtient la representation sur la base de 10
ensuite on fait la representation qu'on veut *-* octale ,binaire....'

نريمان شهرزاد
2013-04-13, 19:25
J'ai 2 exo:
exo1:
f(n,p)=n!!!! (p fois
exemple : f(3,2)=3!!=(3!)=6!=720
exo 2:
jeu loto:générer tous les cas possibles de jeu de 6 parmi 49 nombres (calculer le nombre de cas et trouver les cas possibles)

salemk
2013-04-13, 23:48
السلام عليكم ،،، أريد مساعدة في تمرين يطلب عمل برنامج يقوم بالتحويل بين القواعد العديدة (changement de base) يعني مثلا نعطيع عدد في الأساس 10 base decimal و هو يقوم بالتحويل لأساس آخر (مثلا2 - base binaire)
البرنامج يتكون من 3 مراحل : 1- التحقق من العدد ( هذه المرحلة قمت بها و هي تعمل جيدا)
2- التحويل للاساس 10 : قبل التحويل لاساس المطلوب يجب اولا المرور عبر الاساس 10
3- التحويل للاساس الجديد الذي نريد التحويل له

*****************************************
المرحلة الاولى :
rogram tp4;
uses wincrt;
var
base,nbr,a:longint;

Function test(a:longint):string;
begin
test:='valide';
repeat
a:=nbr mod 10;
nbr:=(nbr-a) div 10;
if a>=base then
test:='non valide';
until nbr < 1
end;

Begin
write('entrer une valeur :');
readln(nbr);
write('entrer la base :');
readln(base);
writeln('la valeur est :',test(a));
end.



http://www.djelfa.info/vb/showpost.php?p=12993546&postcount=269

http://www.djelfa.info/vb/showpost.php?p=13002877&postcount=270

ssissoume
2013-04-15, 23:05
svp khawti 3awnouni f pgm de changement entre base ani 7ssalt pllllllllz je veux une soluition simple par division succesive plllz c urgent w rabi yjazikom

salemk
2013-04-15, 23:48
svp khawti 3awnouni f pgm de changement entre base ani 7ssalt pllllllllz je veux une soluition simple par division succesive plllz c urgent w rabi yjazikom



program conv1_b_10;
uses wincrt;


function puissance(x,y:integer):longint;
var
r1:longint;
i:integer;
begin
r1:=1;
for i:= 1 to y do
r1:= r1*x;
puissance:=r1;
end;


function convb_10(s:string;b:integer):longint;
var
d,e,i:integer;
r:longint;
begin
r:=0;
for i:=length(s) downto 1 do
begin
if(s[i] in ['0'..'9']) then
val(s[i],d,e)
else
case upcase(s[i]) of
'A': d := 10;
'B': d := 11;
'C': d := 12;
'D': d := 13;
'E': d := 14;
'F': d := 15;
end;
r:= r + d * puissance(b,length(s)-i);
end;
convb_10:=r;
end;


function convb1_10(s:string;b:integer):longint;
var
d,e,i:integer;
r:longint;
begin
r:=0;
for i:=1 to length(s) do
begin
if(s[i] in ['0'..'9']) then
val(s[i],d,e)
else
case upcase(s[i]) of
'A': d := 10;
'B': d := 11;
'C': d := 12;
'D': d := 13;
'E': d := 14;
'F': d := 15;
end;
r:= r*b + d ;
end;
convb1_10:=r;
end;


function conv10_b1(n:longint;b:integer):string;
var
s,c:string;
d:integer;

begin
s:='';
repeat
d:=n mod b;
n:= n div b;
if d in [0..9] then
str(d,c)
else
case d of
10 : c := 'A';
11 : c := 'B';
12 : c := 'C';
13 : c := 'D';
14 : c := 'E';
15 : c := 'F';
end;
s:=c+s;
until n = 0;
conv10_b1:=s;
end;





var
ch:string;
b,b1:integer;


begin
readln(ch);
readln(b);
readln(b1);
writeln(conv10_b1(convb1_10(ch,b),b1));


end.

ssissoume
2013-04-16, 21:13
program conv1_b_10;
uses wincrt;


function puissance(x,y:integer):longint;
var
r1:longint;
i:integer;
begin
r1:=1;
for i:= 1 to y do
r1:= r1*x;
puissance:=r1;
end;


function convb_10(s:string;b:integer):longint;
var
d,e,i:integer;
r:longint;
begin
r:=0;
for i:=length(s) downto 1 do
begin
if(s[i] in ['0'..'9']) then
val(s[i],d,e)
else
case upcase(s[i]) of
'A': d := 10;
'B': d := 11;
'C': d := 12;
'D': d := 13;
'E': d := 14;
'F': d := 15;
end;
r:= r + d * puissance(b,length(s)-i);
end;
convb_10:=r;
end;


function convb1_10(s:string;b:integer):longint;
var
d,e,i:integer;
r:longint;
begin
r:=0;
for i:=1 to length(s) do
begin
if(s[i] in ['0'..'9']) then
val(s[i],d,e)
else
case upcase(s[i]) of
'A': d := 10;
'B': d := 11;
'C': d := 12;
'D': d := 13;
'E': d := 14;
'F': d := 15;
end;
r:= r*b + d ;
end;
convb1_10:=r;
end;


function conv10_b1(n:longint;b:integer):string;
var
s,c:string;
d:integer;

begin
s:='';
repeat
d:=n mod b;
n:= n div b;
if d in [0..9] then
str(d,c)
else
case d of
10 : c := 'A';
11 : c := 'B';
12 : c := 'C';
13 : c := 'D';
14 : c := 'E';
15 : c := 'F';
end;
s:=c+s;
until n = 0;
conv10_b1:=s;
end;





var
ch:string;
b,b1:integer;


begin
readln(ch);
readln(b);
readln(b1);
writeln(conv10_b1(convb1_10(ch,b),b1));


end.



mercii lah yhanik

ssissoume
2013-04-16, 21:16
mais mafhamtch la logique li takhdem beha w val veut dire quoi????

salemk
2013-04-16, 22:55
mais mafhamtch la logique li takhdem beha w val veut dire quoi????



Val (X, S, error ) ;
Procédure qui convertit la chaîne de caractère de
nom S en un nombre (Integer ou Real) X et renvoie
un code erreur error (de type integer) qui est
égale à 0 si la conversion est possible.


Exemples :

CH :=’1234’ ;
Val(CH,D,E) ;

La valeur de CH est la chaine ‘1234’
La valeur de la variable D est l’entier 1234
La valeur de la variable E est l’entier 0


CH :=’1234.234’ ;
Val(CH,D,E) ;

La valeur de CH est la chaine ‘1234.234’
La valeur de la variable D est l’entier 1234.234
La valeur de la variable E est l’entier 0


CH :=’123S4’ ;
Val(CH,D,E) ;

La valeur de CH est la chaine ‘123S4’
La valeur de la variable D est l’entier 0 (c’est la valeur par défaut lors de la déclaration d’un
entier (par défaut c’est 0.0 si c’est réel)), car ’123S4’ ne peut
pas correspondre à une valeur numérique.

La position de la chaine CH qui causera l’erreur est que sa valeur ne
correspond pas à un chiffre est la position numéro 3 (la valeur ‘S’), donc dans la
variable de type entier on trouvera la valeur 3
La valeur de la variable E est l’entier 0


De même pour La valeur de CH est la chaine ‘123S456*78’ et on trouvera dans la
variable E la valeur 3 car la première positon dont la valeur
est non transformable est 3, on arrête la transformation et on ne poursuit pas le reste

ssissoume
2013-04-16, 23:13
aaaa ok merci bcp ma3lich tfahemni bark f la logique de ce pgm car ya des trucs que jamais khdamna bihom w dsl la9ala9tek

salemk
2013-04-16, 23:32
aaaa ok merci bcp ma3lich tfahemni bark f la logique de ce pgm car ya des trucs que jamais khdamna bihom w dsl la9ala9tek



function puissance(x,y:integer):longint;

Cette fonction renvoie x puissance y






function convb_10(s:string;b:integer):longint;


Exemple des valeurs à convertir d’une base vers
une autre : 120, 5623, 983, 101010, 12A, 4c3…

On remarque que les valeurs à convertir peuvent contenir
des caractères alphabétiques, alors c’est mieux d’utiliser le
type String pour la valeur de départ (la variable S), la
variable B correspond à la base dans la quelle la valeur est exprimée

(120)8 = (0*8^0 + 2*8^1 + 1*8^2)10

(12C)16 = (12*16^0 + 2*16^1 + 1*16^2)10

Comme S qui peut contenir 120 et B peut contenir 8,
dans ce cas on commance depuis la fin de la chaine donc (for… downto)

Evaluer les postions de S en leurs correspondants
numérique (de 0 à 9 et de 10 à 16 pour les bases supérieurs à 10) (if… else)

Cumuler la valeur finale en procédant position par position
r:= r + d * puissance(b,length(s)-i);


(120)8 = (0*8^0 + 2*8^1 + 1*8^2)10 = ((((1)*8)+2)*8)+0

(12C)16 = (12*16^0 + 2*16^1 + 1*16^2)10 = ((((1)*16)+2)*16)+12



Donc On peut reformer la conversion vars la base 10 autrement,

c'est la fonction

function convb_10(s:string;b:integer):longint;

on utilise l’une des deux




function conv10_b1(n:longint;b:integer):string;

la conversion vers un base B depuis la base 10 se fait par
division successive par la base B,
la valeur recherchée peut contenir des caractères
alphabétique, alors on utilise le type String, est pour transformer un
entier en string on utilise la procédure prédéfinie STR.









لك جزيل الشكر:mh92:
التواصل هو الهدف من هذا الركن:19:

hind-95
2013-04-17, 10:48
exo
ecrire un algo qui calcul le montant d achat dans un magazin tel que si le montant d achat est reduit suivant les conditions si

MA<2000
1000=<MA
%il y a reductio de 2

MA<3000
MA>=2000
%il y a reductio de 5
MA<5000
MA>=3000
%il y a reductio de10
Ma>=5000
%il y a reductio de15

salemk
2013-04-17, 11:47
exo
ecrire un algo qui calcul le montant d achat dans un magazin tel que si le montant d achat est reduit suivant les conditions si

MA<2000
1000=<MA
%il y a reductio de 2

MA<3000
MA>=2000
%il y a reductio de 5
MA<5000
MA>=3000
%il y a reductio de10
Ma>=5000
%il y a reductio de15



Program exo ;
Uses wincrt ;
Var
ma : real ;
Begin
Writeln('saisir le montant d''achat') ;
Readln(ma) ;
if ((ma<2000) and (ma>=1000)) then
ma:=ma-0.02*ma
else if ((ma<3000) and (ma>=2000)) then
ma:=ma-0.05*ma
else if ((ma<5000) and (ma>=3000)) then
ma:=ma-0.1*ma
else if ma>=5000 then
ma:=ma-0.15*ma;

writeln('le montant à payer est ',ma);
end.

ssissoume
2013-04-22, 18:08
bns a tous bon svp aider moi a faire un pgm en pascal pour tri des tableau par 2 methodes et merci d'avance

you92cef
2013-04-23, 18:25
هدا موقع خاص بالدروس

http://www.academia.edu/1906492/Algorithmique_et_Structures_de_Donnees_I

يوجد شرح في الصفحة26

لتحميل الملف يجب التسجيل في الموقع
+
راجع الردود في نهاية الصفحة21 وبداية الصفحة22 +هناك رابط يوضح الفرق بين انواع التريتبات

ssissoume
2013-04-23, 19:18
salam jma3a chrakom labass plz aider moi ndir programme changemlent de base par division succesive

you92cef
2013-04-23, 20:45
salam jma3a chrakom labass plz aider moi ndir programme changemlent de base par division succesive
راجع الردود الاخيرة في الصفحات 27-28-29

ssissoume
2013-04-23, 21:22
oui chefthom déjà had la solution est un peu compliqué je veux une solution simple svp mon frére aide moi

you92cef
2013-04-23, 22:21
oui chefthom déjà had la solution est un peu compliqué je veux une solution simple svp mon frére aide moi
لا اظن انه توجد طريقة اسهل او طريقة اخرى لتحويل الاعداد من وحدة الى وحدة

للاسف الان اصبحت مشكلة فهم الغوريتم التحويل من قاعدة الى قاعدة
ومثل هته الالغوريتمات توجد مادة تدرسونها في مادة مستقلة اسمها
******** machine
اظن ما عليك الا ان تفهم هته المادة السهلة وادا فهمت الطرق المعتمدة فيها*-*الاغلوريتمات*-*
ca1,ca2,de base a vers base b
ansi de suite
alors vous allez avoir le programme qui torne b1

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

haroune21
2013-04-25, 13:52
اسف لعدم توضيح الطلب السابق لان الاستاد ايضا لم يوضح لنا ...لدي طلب اخر
Ecrire un programme qui permet d’effectuer la transposition d’une matrice A(m ,n) en une matrice T A(n,m)
وشكرا اخي

عودة امل
2013-04-25, 18:42
Algorithme
date_jour_anne
Fonction
DateDuJour() :
Chaîne de caractères
Variables
valeur :
Entier
dateFormatée :
Chaîne de caractères
Début
Remarque
Le jour
valeur <- Jour()
Si
valeur < 10
Alors
dateFormatée <- "0" + EnChaîne(valeur)
Sinon
dateFormatée <- EnChaîne(valeur)
Fin Si
dateFormatée <- dateFormatée + "/"
Remarque
Le mois
valeur <- Mois()
Si
valeur < 10
Alors
dateFormatée <- dateFormatée + "0" + EnChaîne(valeur)
Sinon
dateFormatée <- dateFormatée + EnChaîne(valeur)
Fin Si
dateFormatée <- dateFormatée + "/"
Remarque
L’année
dateFormatée <- dateFormatée + EnChaîne(Année())
Retourner
(dateFormatée)
Fin Fonction
Début
Afficher("Nous sommes le ", DateDuJour())
Fin Algorithme

هذه محاولتي أرجو التعليق ......كذلك كيف استطيع ان انقل من الباسكال الى هنا ....:D:D:D

عودة امل
2013-04-25, 18:48
السلام.....
أين الخطااء الموجود في هذه الخوارزمية أرجو الرد

program Nbr_Jours;
uses crt,dos;
const les_mois : array[1..12] of byte = (31,28,31,30,31,30,31,31,30,31,30,31);

var
Annee,Annee_Cornt,Mois_Cornt,Jour_Cornt,jour_semai ne : word;
mois,jour : byte;

function validj(annee:word;mois,jour:byte):boolean;
begin
validj := false;
if annee mod 4 = 0 then
les_mois[2] := 29;
if not ((jour > les_mois[mois]) or (jour < 1)) then
validj := true;
end;

function nbrj_D(jour,mois: byte;annee : word):longint;
var
i : byte;
begin
nbrj_D := 0;
if Annee_Cornt > Annee then
begin
if Annee mod 4 = 0 then
les_mois[2] := 29;
i := mois ;
repeat
nbrj_D := nbrj_D + les_mois[i];
i := i + 1;
until i > 12 ;
nbrj_D := nbrj_D - jour ;
end;
end;

function nbrj_M(Annee_Cornt,annee : word):longint;
begin
nbrj_M := 0;
if Annee_Cornt -1 > annee then
repeat
annee := annee + 1;
if annee mod 4 = 0 then
nbrj_M := nbrj_M + 366 else
nbrj_M := nbrj_M + 365;
until annee >= Annee_Cornt - 1;
end;

function nbrj_F(jour,mois: byte;annee : word):longint;
var
i : byte;
begin
nbrj_F := 0;
if Annee_Cornt > Annee then
begin
jour := 0;
mois := 1;
end;
i := mois ;
if Annee_Cornt mod 4 = 0 then
les_mois[2] := 29;
if i < Mois_Cornt then
repeat
nbrj_F := nbrj_F + les_mois[i];
i := i + 1;
until i >= Mois_Cornt ;
nbrj_F := nbrj_F - jour + jour_Cornt;
end;

function nbrJours(jour,mois: byte;annee : word):longint;
begin
nbrJours := nbrj_D(jour,mois,annee) + nbrj_M(Annee_Cornt,annee) + nbrj_F(jour,mois,annee);
end;

begin

write('Entre l''annee :');
readln(annee);
repeat
write('Entre le mois :');
readln(mois);
until (mois >= 1) and (mois <= 12);
repeat
write('Entre le jour :');
readln(jour);
until validj(annee,mois,jour);

getdate(Annee_Cornt,Mois_Cornt,Jour_Cornt,jour_sem aine);
write('le nombre de jours entre le ',jour,'/',mois,'/',annee,' et le ');
writeln(Jour_Cornt,'/',Mois_Cornt,'/',Annee_Cornt,' : ',nbrJours(jour,mois,annee),' Jours');

writeln(nbrj_D(jour,mois,annee));
writeln(nbrj_M(Annee_Cornt,annee));
writeln(nbrj_F(jour,mois,annee));

end.

you92cef
2013-04-25, 19:43
اسف لعدم توضيح الطلب السابق لان الاستاد ايضا لم يوضح لنا ...لدي طلب اخر
Ecrire un programme qui permet d’effectuer la transposition d’une matrice A(m ,n) en une matrice T A(n,m)
وشكرا اخي

تم حل هدا التمرين سابحث عن الرابط
الترمين يقوم بحساب
transposer de matrice et affectuer la * de matrice avec le transposer de matrive

you92cef
2013-04-25, 19:45
algorithme
date_jour_anne
fonction
datedujour() :
Chaîne de caractères
variables
valeur :
Entier
dateformatée :
Chaîne de caractères
début
remarque
le jour
valeur <- jour()
si
valeur < 10
alors
dateformatée <- "0" + enchaîne(valeur)
sinon
dateformatée <- enchaîne(valeur)
fin si
dateformatée <- dateformatée + "/"
remarque
le mois
valeur <- mois()
si
valeur < 10
alors
dateformatée <- dateformatée + "0" + enchaîne(valeur)
sinon
dateformatée <- dateformatée + enchaîne(valeur)
fin si
dateformatée <- dateformatée + "/"
remarque
l’année
dateformatée <- dateformatée + enchaîne(année())
retourner
(dateformatée)
fin fonction
début
afficher("nous sommes le ", datedujour())
fin algorithme

هذه محاولتي أرجو التعليق ......كذلك كيف استطيع ان انقل من الباسكال الى هنا ....:d:d:d

ارجوا توضيح الهدف من الاغوريتم والنتيجة التي نرد اظهارها +
وضع الكود في خانة

ادراجو كود الموجود في الردود

you92cef
2013-04-25, 19:48
بخصوص المصفوفات
matrice
calcule le produit d'un matrice par sa transopseé
كود:

الرابط هنا

http://www.djelfa.info/vb/showthread.php?t=1135321&page=21

you92cef
2013-04-25, 20:06
السلام.....
أين الخطااء الموجود في هذه الخوارزمية أرجو الرد

program Nbr_Jours;
uses crt,dos;
const les_mois : array[1..12] of byte = (31,28,31,30,31,30,31,31,30,31,30,31);

var
Annee,Annee_Cornt,Mois_Cornt,Jour_Cornt,jour_semai ne : word;
mois,jour : byte;

function validj(annee:word;mois,jour:byte):boolean;
begin
validj := false;
if annee mod 4 = 0 then
les_mois[2] := 29;
if not ((jour > les_mois[mois]) or (jour < 1)) then
validj := true;
end;

function nbrj_D(jour,mois: byte;annee : word):longint;
var
i : byte;
begin
nbrj_D := 0;
if Annee_Cornt > Annee then
begin
if Annee mod 4 = 0 then
les_mois[2] := 29;
i := mois ;
repeat
nbrj_D := nbrj_D + les_mois[i];
i := i + 1;
until i > 12 ;
nbrj_D := nbrj_D - jour ;
end;
end;

function nbrj_M(Annee_Cornt,annee : word):longint;
begin
nbrj_M := 0;
if Annee_Cornt -1 > annee then
repeat
annee := annee + 1;
if annee mod 4 = 0 then
nbrj_M := nbrj_M + 366 else
nbrj_M := nbrj_M + 365;
until annee >= Annee_Cornt - 1;
end;

function nbrj_F(jour,mois: byte;annee : word):longint;
var
i : byte;
begin
nbrj_F := 0;
if Annee_Cornt > Annee then
begin
jour := 0;
mois := 1;
end;
i := mois ;
if Annee_Cornt mod 4 = 0 then
les_mois[2] := 29;
if i < Mois_Cornt then
repeat
nbrj_F := nbrj_F + les_mois[i];
i := i + 1;
until i >= Mois_Cornt ;
nbrj_F := nbrj_F - jour + jour_Cornt;
end;

function nbrJours(jour,mois: byte;annee : word):longint;
begin
nbrJours := nbrj_D(jour,mois,annee) + nbrj_M(Annee_Cornt,annee) + nbrj_F(jour,mois,annee);
end;

begin

write('Entre l''annee :');
readln(annee);
repeat
write('Entre le mois :');
readln(mois);
until (mois >= 1) and (mois <= 12);
repeat
write('Entre le jour :');
readln(jour);
until validj(annee,mois,jour);

getdate(Annee_Cornt,Mois_Cornt,Jour_Cornt,jour_sem aine);
write('le nombre de jours entre le ',jour,'/',mois,'/',annee,' et le ');
writeln(Jour_Cornt,'/',Mois_Cornt,'/',Annee_Cornt,' : ',nbrJours(jour,mois,annee),' Jours');

writeln(nbrj_D(jour,mois,annee));
writeln(nbrj_M(Annee_Cornt,annee));
writeln(nbrj_F(jour,mois,annee));

end.

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


function max(a,b,c:integer):integer;
عند استدعاءنا للدالة
max
يجب علينا ان نقدم لها 3 متغيرات مثلا
max(x,y,z);
بينما لا يمكن انا نستدعيها هكدا
max
:confused:
الباسكال يتيح امكانية اعطاء قيمة اولية لاسم الدالة مثلا
function min (a,b,integer):byte
فيمكن ان نعطي قيمة اولية للدالة
min
تكون من نفس نوع الدالة
min
الدي هو في هده الحالة
byte
فيمكن كتابة
min:=5;
صحيحة في الباسكال
هناك لغان برمجة لا يمكن ان نقدم قيمة اولية للدالة او حتى قيم للدوال



يجب استعمال الدوال بشكل جيد وفي حالة لم نحتاج الى استعمال الدوال فمن الاحسن عدم استعمالها اصلا الا في الحالات الضرورية
مثلا
هده الكتابة
nbrj_F := nbrj_F - jour + jour_Cornt;
لا تعتبر صحيحة :confused:
ادن من الاحسن استعمال متغير اخر الدي نقوم من خلاله بالقيام بعملليات وعند الانتهاء من العمليات نعطي النتيجة النهائية للدالة
فمثلا يمكن استعمال المبدا التالي

var n:integer;
n:=0;
for i:=1 to 5 do
n:=n+t[i]
nom_function:=n;


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

you92cef
2013-04-26, 11:27
تم تصحيح بعض الاخطاء في البرنامج ولكن النتائج ليست صحيحة

عموما هدا برنامج معدل يشتغل ولكن نتائجه خاطئة

program Nbr_Jours;
uses wincrt;
const les_mois : array[1..12] of byte = (31,28,31,30,31,30,31,31,30,31,30,31);

var
Annee,Annee_Cornt,Mois_Cornt,Jour_Cornt,jour_semai ne : word;
mois,jour : byte;

function validj(annee:word;mois,jour:byte):boolean;
begin
validj := false;
if annee mod 4 = 0 then
les_mois[2] := 29;
if not ((jour > les_mois[mois]) or (jour < 1)) then
validj := true;
end;

function nbrj_D (jour,mois: byte;annee : word):longint;
var
i : byte;nbr:integer;
begin
nbr := 0;
if Annee_Cornt > Annee then
begin
if Annee mod 4 = 0 then
les_mois[2] := 29;
i := mois ;
repeat
nbr:= nbr + les_mois[i];
i := i + 1;
until i > 12 ;
nbr := nbr - jour ;
nbrj_D:=nbr;
end;
end;

function nbrj_M(Annee_Cornt,annee : word):longint;
var nbr:integer;
begin
nbr := 0;
if Annee_Cornt -1 > annee then
repeat
annee := annee + 1;
if annee mod 4 = 0 then
nbr := nbr + 366 else
nbr := nbr + 365;
until annee >= Annee_Cornt - 1;
nbrj_M:=nbr;
end;

function nbrj_F(jour,mois: byte;annee : word):longint;
var
i : byte;nbr:integer;
begin
nbr := 0;
if Annee_Cornt > Annee then
begin
jour := 0;
mois := 1;
end;
i := mois ;
if Annee_Cornt mod 4 = 0 then
les_mois[2] := 29;
if i < Mois_Cornt then
repeat
nbr := nbr + les_mois[i];
i := i + 1;
until i >= Mois_Cornt ;
nbr:= nbr - jour + jour_Cornt;
nbrj_f :=nbr;
end;

function nbrJours(jour,mois: byte;annee : word):longint;
begin
nbrJours := nbrj_D(jour,mois,annee) + nbrj_M(Annee_Cornt,annee) + nbrj_F(jour,mois,annee);
end;

begin

write('Entre l''annee :');
readln(annee);
repeat
write('Entre le mois :');
readln(mois);
until (mois >= 1) and (mois <= 12);
repeat
write('Entre le jour :');
readln(jour);
until validj(annee,mois,jour);

write('le nombre de jours entre le ',jour,'/',mois,'/',annee,' et le ');
writeln(Jour_Cornt,'/',Mois_Cornt,'/',Annee_Cornt,' : ',nbrJours(jour,mois,annee),' Jours');
writeln('nombre de nbr_j:',nbrj_D(jour,mois,annee));
writeln('nombre de nbrj_mt:',nbrj_M(Annee_Cornt,annee));
writeln('nombre de nbrj_f:',nbrj_F(jour,mois,annee));

end.



التعليقات
1-استخدام اسماء المتغيرات طويلة
من الاحسن ان نستخدم اسماء متغيرات قصيرة لتسهيل قرائة وفهم البرنامج
يمكن استخدام مثلا

var nbr_j:integer;
ou
var nj:integer;



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

function validj(annee:word;mois,jour:byte):boolean;
begin
validj := false;
if annee mod 4 = 0 then
les_mois[2] := 29;
if not ((jour > les_mois[mois]) or (jour < 1)) then
validj := true;
end;


الدالة هده تقوم بتحديد عدد ايام شهر فيفري
حسنا
عدد ايام شهر فيفري هل يتعلق بالايام او بالشهور ام بالسنة التي قمنا بادخالها؟
لان الدالة هده لديها 3 متغيرات
3
entreé donc c'est logique qu'il depont de trois entreé
mais le nombre de jour pour fécrier depent delement de l'anneé
:confused:

لاننا عندما نقوم بتعريف دالة ويكون لديها مثلا 4 متغيرات فهنا يجب ان نستخدم 4متغيرات لاجراء امور الدالة
مثلا

f(x)-->x^3+2x+5
هده الدالة لديها متغير واحد وهو
x
يمكن تحويل نفس الدالة الى دالة بمتغيران
هكدا
f(x,y)-->x^3+2x+5+0y+0y/15+y-y+y^2-y^2

نتيجة الدالتين هي نفسها ولكن من المنطق ان نستعمل الدالة الاولى لانها تتعلق ب
x
نفس الامر بالنسبة لدالتنا



ادن من الاحسن ان تكون الدالة بالشكل التالي

function validj(annee:integer):boolean;


هدف الدوال او البروسيدور هو تلقيص حجم البرنامج وعدم تكرار الامور
مثلا
ادا كان لدي حرف اريد طباعته على الشاشة مرات متكررة
فيمكنني ان استعمل
العبارة
writeln
ادا اريد مثلا كتابة
x
5مرات في برنامجي الرئيسي
فيمكنني ان استعمل المبدا التالي

writeln(x);
writeln(x);
writeln(x);
writeln(x);
writeln(x);


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


procedure impr(c:char,n:integer);
var i:integer;
begin
for i:=1 to n do
writeln(x);
end;


فادا اردت طباعة حرف
y
100 مرة فلا يعقل ان ان استعمل
writeln
100 مرة
بل اقوم باستدعاء البروسيدور
بالشكل التالي


procedure impr('y',100);



فهدا البرنامج هدفه هو معرفة ادا كان شهر فيفري 29 يوم ام 28 يوم
بينما انك في الدوال الاخرى دائما تقومين بعمل فحص ادا كان عدد الايام 29 او 28
بدون استدعاء البروسيدور
كحال هده الدالة


function nbrj_D (jour,mois: byte;annee : word):longint;
var
i : byte;nbr:integer;
begin
nbr := 0;
if Annee_Cornt > Annee then
begin
if Annee mod 4 = 0 then
les_mois[2] := 29;


لمادا قمت هنا بتكرار العمليات التي عرفتها في الدالة الاولى؟

3-


const les_mois : array[1..12] of byte = (31,28,31,30,31,30,31,31,30,31,30,31);


حسنا هده الكتابة صحيحة ولكن الا يمكن تلخيصها؟
بحيث مثلا شهر
جانفي ومارس وماي جويلية واوت اكتوبر ديسمبر لديهام نفس عدد الايام 31
حاول تلخيص هده الدالة
ولكن لا يهم حاول في الاول تعديل البرنامج وبعدها نقوم بتعديل هده الامور وتقليصها
4-
لقد جربت ادخال التاريخ
0-0-0
يعني
السنة0
الشهر0
اليوم0
حاول القيام بعمل فحصوات لادخال تاريخ صحيح وسنة
يمكن مثلا اظهار تعليقف عند ادخال تاريخ اثل من 1950 او تاريخ اكبر من 2013

باقي الاخطاء الموجودة في الربنامج سيتم تصحيحها وشرحها ان شاء الله

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

asma@
2013-04-26, 12:09
program sol;
uses wincrt;
var
d,i,z,j:integer;

t,f,n:string;
s:array[1..50]of string[1];
function rec(n:string):integer;
begin
d:=length(n);
for i:=1 to d do begin
t:=copy(n,1,1);
s[i]:=t;
n:=copy(n,2,d-i);
writeln('s[',i,']=',s[i]);
end;
end;
begin
readln(n);
rec(n);
end.

لقد حاولت جاهدا وهذا احسن ما قمت به بقي فقط جمع الاعداد لم اعرف كيف اجمعها بحيث اذا جمعت مثلا 8 و9 المفروض تكون النتيجة 17 الا انه يظهر النتيجة 98:confused:

لم افهم هذه النقطة جيدا


اخي من فضلك اريد ان اعرف طريقة رفع البروغرام بهذه الطريقة
بصراحة لا اعرفها

haroune21
2013-04-26, 13:51
شكرا اخي علي المساعدة جزاك الله خيرا و جعله في ميزان حسناتك

you92cef
2013-04-26, 18:58
اخي من فضلك اريد ان اعرف طريقة رفع البروغرام بهذه الطريقة
بصراحة لا اعرفها

الشرح هنا
http://im41.gulfup.com/UIMIY.png

عودة امل
2013-04-26, 23:04
تم تصحيح بعض الاخطاء في البرنامج ولكن النتائج ليست صحيحة

عموما هدا برنامج معدل يشتغل ولكن نتائجه خاطئة

program nbr_jours;
uses wincrt;
const les_mois : Array[1..12] of byte = (31,28,31,30,31,30,31,31,30,31,30,31);

var
annee,annee_cornt,mois_cornt,jour_cornt,jour_semai ne : Word;
mois,jour : Byte;

function validj(annee:word;mois,jour:byte):boolean;
begin
validj := false;
if annee mod 4 = 0 then
les_mois[2] := 29;
if not ((jour > les_mois[mois]) or (jour < 1)) then
validj := true;
end;

function nbrj_d (jour,mois: Byte;annee : Word):longint;
var
i : Byte;nbr:integer;
begin
nbr := 0;
if annee_cornt > annee then
begin
if annee mod 4 = 0 then
les_mois[2] := 29;
i := mois ;
repeat
nbr:= nbr + les_mois[i];
i := i + 1;
until i > 12 ;
nbr := nbr - jour ;
nbrj_d:=nbr;
end;
end;

function nbrj_m(annee_cornt,annee : Word):longint;
var nbr:integer;
begin
nbr := 0;
if annee_cornt -1 > annee then
repeat
annee := annee + 1;
if annee mod 4 = 0 then
nbr := nbr + 366 else
nbr := nbr + 365;
until annee >= annee_cornt - 1;
nbrj_m:=nbr;
end;

function nbrj_f(jour,mois: Byte;annee : Word):longint;
var
i : Byte;nbr:integer;
begin
nbr := 0;
if annee_cornt > annee then
begin
jour := 0;
mois := 1;
end;
i := mois ;
if annee_cornt mod 4 = 0 then
les_mois[2] := 29;
if i < mois_cornt then
repeat
nbr := nbr + les_mois[i];
i := i + 1;
until i >= mois_cornt ;
nbr:= nbr - jour + jour_cornt;
nbrj_f :=nbr;
end;

function nbrjours(jour,mois: Byte;annee : Word):longint;
begin
nbrjours := nbrj_d(jour,mois,annee) + nbrj_m(annee_cornt,annee) + nbrj_f(jour,mois,annee);
end;

begin

write('entre l''annee :');
readln(annee);
repeat
write('entre le mois :');
readln(mois);
until (mois >= 1) and (mois <= 12);
repeat
write('entre le jour :');
readln(jour);
until validj(annee,mois,jour);

write('le nombre de jours entre le ',jour,'/',mois,'/',annee,' et le ');
writeln(jour_cornt,'/',mois_cornt,'/',annee_cornt,' : ',nbrjours(jour,mois,annee),' jours');
writeln('nombre de nbr_j:',nbrj_d(jour,mois,annee));
writeln('nombre de nbrj_mt:',nbrj_m(annee_cornt,annee));
writeln('nombre de nbrj_f:',nbrj_f(jour,mois,annee));

end.



التعليقات
1-استخدام اسماء المتغيرات طويلة
من الاحسن ان نستخدم اسماء متغيرات قصيرة لتسهيل قرائة وفهم البرنامج
يمكن استخدام مثلا

var nbr_j:integer;
ou
var nj:integer;



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

function validj(annee:word;mois,jour:byte):boolean;
begin
validj := false;
if annee mod 4 = 0 then
les_mois[2] := 29;
if not ((jour > les_mois[mois]) or (jour < 1)) then
validj := true;
end;


الدالة هده تقوم بتحديد عدد ايام شهر فيفري
حسنا
عدد ايام شهر فيفري هل يتعلق بالايام او بالشهور ام بالسنة التي قمنا بادخالها؟
لان الدالة هده لديها 3 متغيرات
3
entreé donc c'est logique qu'il depont de trois entreé
mais le nombre de jour pour fécrier depent delement de l'anneé
:confused:

لاننا عندما نقوم بتعريف دالة ويكون لديها مثلا 4 متغيرات فهنا يجب ان نستخدم 4متغيرات لاجراء امور الدالة
مثلا

f(x)-->x^3+2x+5
هده الدالة لديها متغير واحد وهو
x
يمكن تحويل نفس الدالة الى دالة بمتغيران
هكدا
f(x,y)-->x^3+2x+5+0y+0y/15+y-y+y^2-y^2

نتيجة الدالتين هي نفسها ولكن من المنطق ان نستعمل الدالة الاولى لانها تتعلق ب
x
نفس الامر بالنسبة لدالتنا



ادن من الاحسن ان تكون الدالة بالشكل التالي

function validj(annee:integer):boolean;


هدف الدوال او البروسيدور هو تلقيص حجم البرنامج وعدم تكرار الامور
مثلا
ادا كان لدي حرف اريد طباعته على الشاشة مرات متكررة
فيمكنني ان استعمل
العبارة
writeln
ادا اريد مثلا كتابة
x
5مرات في برنامجي الرئيسي
فيمكنني ان استعمل المبدا التالي

writeln(x);
writeln(x);
writeln(x);
writeln(x);
writeln(x);


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


procedure impr(c:char,n:integer);
var i:integer;
begin
for i:=1 to n do
writeln(x);
end;


فادا اردت طباعة حرف
y
100 مرة فلا يعقل ان ان استعمل
writeln
100 مرة
بل اقوم باستدعاء البروسيدور
بالشكل التالي


procedure impr('y',100);



فهدا البرنامج هدفه هو معرفة ادا كان شهر فيفري 29 يوم ام 28 يوم
بينما انك في الدوال الاخرى دائما تقومين بعمل فحص ادا كان عدد الايام 29 او 28
بدون استدعاء البروسيدور
كحال هده الدالة


function nbrj_d (jour,mois: Byte;annee : Word):longint;
var
i : Byte;nbr:integer;
begin
nbr := 0;
if annee_cornt > annee then
begin
if annee mod 4 = 0 then
les_mois[2] := 29;


لمادا قمت هنا بتكرار العمليات التي عرفتها في الدالة الاولى؟

3-


const les_mois : Array[1..12] of byte = (31,28,31,30,31,30,31,31,30,31,30,31);


حسنا هده الكتابة صحيحة ولكن الا يمكن تلخيصها؟
بحيث مثلا شهر
جانفي ومارس وماي جويلية واوت اكتوبر ديسمبر لديهام نفس عدد الايام 31
حاول تلخيص هده الدالة
ولكن لا يهم حاول في الاول تعديل البرنامج وبعدها نقوم بتعديل هده الامور وتقليصها
4-
لقد جربت ادخال التاريخ
0-0-0
يعني
السنة0
الشهر0
اليوم0
حاول القيام بعمل فحصوات لادخال تاريخ صحيح وسنة
يمكن مثلا اظهار تعليقف عند ادخال تاريخ اثل من 1950 او تاريخ اكبر من 2013

باقي الاخطاء الموجودة في الربنامج سيتم تصحيحها وشرحها ان شاء الله

ولكن ارجوا تصحيح البرنامج ووضع تنبيه لمعرفة عمل كل دالة او بروسيدور
والاهم عدم تكرار الاشياء واسخدام الدوال والبروسيدور التي عرفناهم من قبل
شكرا
الله يجازيك ويكثر من أمثالك الله يوفقك تشكر بعنف والله ...:d:d:d....جاري تصحيح البرنامج....سأعود باذن الله:19::19::19::19::19::19::19::19:

asma@
2013-04-27, 11:22
merci akhi yo92cef

ssissoume
2013-04-29, 20:11
salam 3likom cv?? bon plz 3awnouni f un algorithme en pascal de cryptage de balaise de vigénère meme fahmouni fih bark w jazakom lah khir

you92cef
2013-04-29, 22:07
salam 3likom cv?? bon plz 3awnouni f un algorithme en pascal de cryptage de balaise de vigénère meme fahmouni fih bark w jazakom lah khir

هده الطريقة المفروض انكم تدرسونها في السنة الثانية اعلام الي

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

يعني مثلا


Algorithmes et programmation en PascaL
هده الجملة الاصلية
كلمة التشفير هي مثلا
FORUM
الجملة السابقة فيها 34 حرف
طريقة التشفير هي التالي


ناخد الجملة التي نريد ان نشرفها
ناخد كلمة التشفير
نضع كل حرف من الجملة مع الحرف الدي يقابله من كلمة التشفير

سيتم وضع شرح مفصل ان شاء الله غدا
شكرا

you92cef
2013-04-30, 11:29
salam 3likom cv?? bon plz 3awnouni f un algorithme en pascal de cryptage de balaise de vigénère meme fahmouni fih bark w jazakom lah khir

اولا
ارجوا تحميل هدا البرنامج الخاص بتشفير بطريقة فجنر

http://www.gulfup.com/?YCl5G5
ثانيا الشرح موجود في الصور التالية
1/
http://im36.gulfup.com/DqxaW.png
http://im36.gulfup.com/DqxaW.png
2/
http://im36.gulfup.com/IxivU.png
http://im36.gulfup.com/IxivU.png
3/
http://im36.gulfup.com/3g1PQ.png
http://im36.gulfup.com/3g1PQ.png
4/
http://im36.gulfup.com/oXydU.png
http://im36.gulfup.com/oXydU.png
5/http://im36.gulfup.com/lsHAf.png
http://im36.gulfup.com/lsHAf.png
6/http://im36.gulfup.com/WlWWk.png
http://im36.gulfup.com/WlWWk.png

شكرا

you92cef
2013-04-30, 11:36
ارجوا مراجعة الرد 99 الموجود في هده الصفحة فيما يتعلق بكيفية ملء مصفوفة
http://www.djelfa.info/vb/showthread.php?t=1135321&page=7

ssissoume
2013-04-30, 21:38
rabi ywaf9ak ya khouya w ya3tik matetmena

سارق الأحزان
2013-05-01, 18:47
خاوتي كاامل الجامعات في السنة اولى تقرا بالباسكاال ؟؟

عندي صحيبي
قرا c et c ++

اسكو يسحق الباسكاال ؟؟

you92cef
2013-05-02, 19:04
خاوتي كاامل الجامعات في السنة اولى تقرا بالباسكاال ؟؟

عندي صحيبي
قرا c et c ++

اسكو يسحق الباسكاال ؟؟


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

الباسكال ايضا اقرب للخوارزميات لدلك جل الجامعات تعتمد عليه

السي ايضا معروف ومعتمد من طرف العديد من الجامعات
السي بلس بلس اقرب منه للسي وفيه ممزيات اخرى

ولكن ربما هده الجامعة تعتمد على
programmation orienteé objet
اكثر من
programmation procedurable /logique/

عموما قد يختلف الامر ربما من جامعة الى اخرى او في المعاهد
المفروض انه الجامعات
تحتاج 3 سوامستر لتعلم الباسكال /سوماستر1 2 3 /
بينما السي تستعملونه ابتداءا من السوامستر 4

سارق الأحزان
2013-05-02, 19:16
ايه يعني وااحد يعرف سي ميلقاش مشكل مع الباسكاال ؟؟

you92cef
2013-05-02, 19:53
ايه يعني وااحد يعرف سي ميلقاش مشكل مع الباسكاال ؟؟

ايه نورمالمو ميلقاش مشكل :confused:

سارق الأحزان
2013-05-02, 20:08
ملييح عندي
صديق قراا ب سي
وحب يبدل سنة ثانية اعلام الي

ASSIL92
2013-05-02, 20:26
ارجو المساعدة في حل هذا الالغوريتم لانني لم اعرف كيف انشئ المتغير i بحكم اني استخدم الغوريتم للاعداد المركبة
*rècrire l'algorithme prècèdent pour donner la solution dans le cas ou Delta est infèrieur de 0 c'est-àdire dans les nombres complexes.*.

you92cef
2013-05-02, 21:00
ملييح عندي
صديق قراا ب سي
وحب يبدل سنة ثانية اعلام الي

مي شوف اش كان يقرا؟
وكاش غادي يتعاملو معاه
ممكن ان المواد التي كانت مشتركة ;ونفسها تقريبا وكان مبلعها مغديش يقراها ولكن باقي المواد اظن انه عليه ان يدرسها
ولكن السي تختلف من تخصص الى تخصص
مثلا واحد كان يدرس رياضيات واعلام الي سنة الاولى
وبلع الكيمياء والكهرباء والميكانيك وبلع الجبر 1 واناليز1
فادا حول الى السنة الاولى علوم وتكنولوجيا فلن يدرس
physique1
/mecanique de mi/
physique2/electrique de mi/
chimie2/chimie de mi/
math1/anlyse1 et algebre 1

ولكن هده القوانين تختلف من جامعة الى اخرى ومن سنة الى اخرى
عموما يحاول مع الادارة وهما يعطوه الرسمي

you92cef
2013-05-02, 21:05
ارجو المساعدة في حل هذا الالغوريتم لانني لم اعرف كيف انشئ المتغير i بحكم اني استخدم الغوريتم للاعداد المركبة
*rècrire l'algorithme prècèdent pour donner la solution dans le cas ou Delta est infèrieur de 0 c'est-àdire dans les nombres complexes.*.

ساهلا استخدمي
les commentaire
برك
سؤال يتكرر بزاف في الامتحانات والناس متعرفش تحجاوب عليه
ادا كان عندك مثلا
x1:=-b+sqrt(delta)/2a

ففي الاعداد المركبة يبقى نفسه فيقط نضيف
i
ففي التعليق نكتب هكدا

r1:=b+sqrt(delta);
writeln(r1i/2a);



ادا كان مثلا
r1:=5
2a:=2
ففي الحالة التي يكون دالطا موجب النتيجة تكون 2.5
5/2
بينما عندما يكون دالطا سالب
النتيجة تكون
5i/2

فقط نضع
i
بين
+b+sqrt(delta)
و
2a

ASSIL92
2013-05-02, 21:15
شكراااااااااا اخي ذك نحاول نكمل نديرها ونشوف جزاك الله كل خير

marwa.dz
2013-05-04, 12:45
L’un des plus vieux code secret est le chiffre de César. Il consiste en un décalage circulaire de N
positions de l’alphabet utilise.
Exemple:
Lettres a coder : A B C D E F G . . . Y Z
Pour un décalage circulaire de 4 positions :
Lettres après codage : E F G H I J K . . . C D
Le mot “BAC” est code “FEG”.

ssissoume
2013-05-04, 15:39
اخي يوسف كي نعبي الجدول كيفاه وكيفاه نستعملو في التشفير وجزاك الله كل خير

you92cef
2013-05-04, 19:21
اخي يوسف كي نعبي الجدول كيفاه وكيفاه نستعملو في التشفير وجزاك الله كل خير

تم وضع الشرح بالصور

ارجوا مراجعة الصور ومتابعة الشرح خطوة خطوة

salemk
2013-05-05, 02:36
L’un des plus vieux code secret est le chiffre de César. Il consiste en un décalage circulaire de N
positions de l’alphabet utilise.
Exemple:
Lettres a coder : A B C D E F G . . . Y Z
Pour un décalage circulaire de 4 positions :
Lettres après codage : E F G H I J K . . . C D
Le mot “BAC” est code “FEG”.



program code;
uses wincrt;
var
ch:string;

procedure saisie(var s:string);
begin
repeat
writeln('donner le texte à coder');
readln(s);
until s<>'';
end;
(************* Début du travail à faire***************)
procedure cesar(var s:string);
var
i,nb:byte;
begin
repeat
writeln('de combien de positions faut-il le décalé');
readln(nb);
until (nb>=0);
for i:=1 to length(s) do
begin
if upcase(s[i])in ['A'..'Z'] then

if (ord(upcase(s[i]))+nb mod 26)>ord('Z') then
s[i]:=chr(ord(upcase(s[i])) - ord('Z')+ord('A')-1+ nb mod 26)
else
s[i]:=chr(ord(upcase(s[i]))+nb mod 26);


end;
end;
(************* Fin du travail à faire***************)

begin
saisie(ch);
cesar(ch);
writeln('La texte final est',chr(13),ch);
end.

marwa.dz
2013-05-07, 20:48
L'ISBN (International Standard Book Number) est un numéro qui permet d'identifier le titre d'un
livre.
Ce numéro est formé de 20 caractères regroupés en 4 parties :
- La première correspond à la zone linguistique qui est un nombre de 3 chiffres hexadécimaux
distincts, et qui commence obligatoirement par une lettre :
Exemples : A12 pour Arabe
FB2 pour Français
- Les deux autres parties (indiquant l'éditeur et le numéro d'ordre dans la production de l'éditeur)
sont formes uniquement par des chiffres : 8 chiffres par partie.
- La dernière partie (chiffre ou lettre) correspond à la clé de contrôle :
La clé est le reste de la division d'un nombre intermédiaire N par 11 en utilisant la règle de
divisibilité.
- Si ce reste est non nul est formé d’un seul chiffre, la clé sera égale au reste.
- Si ce reste est 10 la clé sera notée X.
- Si le reste est 0 la clé sera égale à la somme des chiffres de la représentation binaire de la première
partie, le nombre intermédiaire N est obtenu en regroupant les deux chiffres de même position de la
2eme et la 3eme partie de numéro de l'ISBN suivis des deux chiffres de la position suivante jusqu'à
ajouter les deux chiffres de la 8eme position.
Exemple1

you92cef
2013-05-08, 21:48
L'ISBN (International Standard Book Number) est un numéro qui permet d'identifier le titre d'un
livre.
Ce numéro est formé de 20 caractères regroupés en 4 parties :
- La première correspond à la zone linguistique qui est un nombre de 3 chiffres hexadécimaux
distincts, et qui commence obligatoirement par une lettre :
Exemples : A12 pour Arabe
FB2 pour Français
- Les deux autres parties (indiquant l'éditeur et le numéro d'ordre dans la production de l'éditeur)
sont formes uniquement par des chiffres : 8 chiffres par partie.
- La dernière partie (chiffre ou lettre) correspond à la clé de contrôle :
La clé est le reste de la division d'un nombre intermédiaire N par 11 en utilisant la règle de
divisibilité.
- Si ce reste est non nul est formé d’un seul chiffre, la clé sera égale au reste.
- Si ce reste est 10 la clé sera notée X.
- Si le reste est 0 la clé sera égale à la somme des chiffres de la représentation binaire de la première
partie, le nombre intermédiaire N est obtenu en regroupant les deux chiffres de même position de la
2eme et la 3eme partie de numéro de l'ISBN suivis des deux chiffres de la position suivante jusqu'à
ajouter les deux chiffres de la 8eme position.
Exemple1

--------------------
هدا النوع من الدروس خاص ب
system information
بالطبع نستطيع برمجة المطلوب سواء بلغة البرمجة باسكال او غيرها واكن هدا يحتاج الى وقت وجهد ودوال وامور اخرى
عموما هده النوع من التمارين الخاصة بهده المادة تتطلب القيام بتفعيل الالغوريتم يدويا بورقة وقلم والاصح هو ان هدا الالغوريتم نقوم ببرمجته بلغات البرمجة الخاصة بقاعدة البيانتا ولكن هدا لا يمنع ان نبرمجه بواسطة باسكال مثلا باستعمال
les enregistrement
et des foncrtion ou procedure
dans le pp on fait des appelle

algeriano9354
2013-05-10, 13:14
السلام عليكم خاوتي ، أرجو المساعدة في تطبيق خاصة بالقوائم LES LISTES
التطبيق هدفه حساب مجموع اثنين POLYNOMES من درجات مختلفة ، حيث ندخل كل polynome على شكل liste حيث كل عنصر من القائمة مقسم إلى 3 أجزاء [ المعامل coefficiant ، الأس la puissanse ، دليل العنصر الذي يلي Next ]

اما البرنامج يكون باستعمال 3 PROCEDURES : الأولى لإدخال الـ POLYNOME ، الثانية تقوم بالجمع ، الثالثة تقوم باظهار النتيجة

و بارك الله فيكم

you92cef
2013-05-10, 19:18
السلام عليكم خاوتي ، أرجو المساعدة في تطبيق خاصة بالقوائم LES LISTES
التطبيق هدفه حساب مجموع اثنين POLYNOMES من درجات مختلفة ، حيث ندخل كل polynome على شكل liste حيث كل عنصر من القائمة مقسم إلى 3 أجزاء [ المعامل coefficiant ، الأس la puissanse ، دليل العنصر الذي يلي Next ]

اما البرنامج يكون باستعمال 3 PROCEDURES : الأولى لإدخال الـ POLYNOME ، الثانية تقوم بالجمع ، الثالثة تقوم باظهار النتيجة

و بارك الله فيكم

تم البدا في برمجة بعض البرنامج

طالما لدينا
polynome
فقد تم برمجة البرنامج على اساس ان يكون اقل حد في
polynome de degre 1
donc s'ecrit comme sa ax^b
avec a,b >0
ولكن في الجبر*** بحسب ما اعرف يمكن تكون المعلومة خاطئة^_^*** يمكن ان نجد حد يكون
coefficiant<=0
or
puissance<=0
يكفي فقط تغير
les test et les condition pour la lecture
ايضا من الطبيعي ان الحدود تكون مرتبة لدلك
ادا كان الحد الاول مثلا من الشكل
ax^b
فالحد الثاني
cx^d
يجب ان يكون بحسب ما هو مبرمج
يحقق الشروط التالية
c>a
et
d>b
فلا يمكن مثلا ادخال
الحد الاول
8x^8
والحد الثاني
7x^7
البرنامج يحتوي على
deux procedure
lire et afficher
se sont deux procedure appliquant dans les liste en generalement
puisque
se sont des procedure ''speciale'' pour les pointeure

par example pour le tableau soit pour lire ou ecire en utilise une boucle
le meme choose ici
-------
il reste la fonction qui fait la somme
j'essaye de programmer plutard
essayer de comprendre ce programme
avec un papier et stylo
en respectanrt biensur l'architacture et l'organisation des pointeur

البرنامج



program sol;
uses wincrt;
type tpoint=^tval;
tval=record
coe:byte;
pui:byte;
suiv:tpoint;
end;
var prem:tpoint;
n,p,pp:integer;
c:char;
procedure lire(p:integer);
var prec,point:tpoint;
i:integer;
begin
write('conbien d''element pour le polynome n°',p,'?');
repeat
readln(n);
if n<1 then writeln('n doit etre >0 et puisque on utilise les pointeur il faut que n>=1');
until n>=1;
new (prem);
writeln('1er coefficient=');
repeat
readln(prem^.coe);
if(prem^.coe<=0) then writeln('Entrez un coefficiant>0');
until(prem^.coe>0);
writeln('1er puissance=');
repeat
readln(prem^.pui);
if(prem^.pui<=0) then writeln('Entrez un puissance>0');
until(prem^.pui>0);
prec:=prem;
for i:=2 to n do begin
new(point);
writeln(i,'ieme coefficient=');
repeat
readln(point^.coe);
if (point^.coe<=prec^.coe) then writeln('Entrez un coefficiant> a la coefficiant precedant');
until(point^.coe>0)and(point^.coe>prec^.coe);
writeln(i,'ieme puissance=');
repeat
readln(point^.pui);
if (point^.pui<=prec^.pui) then writeln('Entrez un puissance> a la puissance precedant');
until(point^.pui>0)and(point^.pui>prec^.pui);
prec^.suiv:=point;
prec:=point;
end;
prec^.suiv:=nil;
end;
procedure afficher(p:integer);
var point:tpoint;
i:integer;
begin
point:=prem;
writeln('le polynome n°',p,'s''ecrit comme :');
for i:=1 to n do begin
writeln(point^.coe,'x^',point^.pui);
point:=point^.suiv;
end;
end;
begin
writeln('Entrez le numero de polynome ex:poly n°1');
repeat
readln(p);
if p<0 then writeln('numero de polynome>=0');
until(p>=0);
lire(p);
afficher(p);
writeln('Entrez le numero de polynome ex:poly n°1');
repeat
readln(pp);
if (pp<=p)then writeln('numero de cette polynome doit etre> a la numero de polynome precedent');
until pp>p;
lire(pp);
afficher(pp);
end.

شكرا

algeriano9354
2013-05-10, 21:23
مشكوووووووووووووووووووووووووور أخي ،،،، لكن كيف تكون عملية الجمع ؟؟؟

you92cef
2013-05-10, 22:24
مشكوووووووووووووووووووووووووور أخي ،،،، لكن كيف تكون عملية الجمع ؟؟؟

بخصوص عملية الجمع نحتاج الى تعديل بسيط في البرنامج لمادا؟

لان الجمع يحتاج الى
2 listes
بينما نحن لدينا
une seul liste chaine
بالرغم من اننا ادخلنا
سلسلتين
لمادا؟
الامر بسيط جدا حاله كحال باقي المتغيرات

ex
soit la fonction suivant

function max (a,b:integer):integer;
begin
si a>b then
max :=a
else max:=b
end;


ادا استدعيت الدالة مرة واحدة فانها سوف تاخد
قيمة اما
a
او
b
ثم ادا استدعيتها مرة ثانية بالقميتن
c,d
فان الدالة سوف تاخد القيمة اما
c
او d
والقيمة التي كانت لديها في الاول التي هي اما
a
او
b
تفقدها
ecraser la valeur par la nouvelle valeur
نفس الامر بالنسبة لنا
السلسة الاولى والتي تبدا ب
prem
تاخد قيم
le plynome1
ثم استدعينا نفس البروسيدور بنفس الالخانة الاولى والتي هي
prem
فالسلة الاولى التي كانت تبدا ب
prem
سوف تاخد قيم
le polynome 2 qui commence aussi par prem
et on perdre le polynome n1

ecraser les valeur ///////////////

لحل هده المشكلة نحتاج الى تغير بداية كل
plynome
فادا غيرنا بداية كل واحد فاننا نظمن ان يكون لدينا
2 plynome
لفهم اكثر خد المثال التالي

t:=tableau
for i:=1 to 5 do begin
readln(t[i])

نقوم بادخال القيم التالية بالترتيب
1
2
3
4
5
الان الجدول يختوي القيم 1 2 3 4 5
ادا استعملت دالة اخرى مثلا
for i:=1 to 7 do begin
readln(t[i])
ولندخل القيم التالية
1
1
1
1
1
1
1

الان قيم الجدول
t
ما هي؟
بالطبع هي 1 1 1 1 1 1 1
والقيم الاولى نكون فقدناها
نفس الامر بالنسبة للسلاسل


من اجل هدا في بروسيدور ادخال القيم عندما نستدعيه نستدعيه بالخانة الاولى


procedure lire(n:integer,dp:tpoint);
ف
dp
هي الخانة الاولى للسلة

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

procedure somme(dp1,dp2:tpoint,n1,n2:integer);

فهدا البروسيدور ياخد الخانة الاولى للسلسة
dp1
ونفس الامر بالنسبة للسلة 2
ثم ياخد ايضا عدد خانات كل سلسلة
*-* يمكننا الاستغناء عنها ببوكل وايل
طالما اننا لم نصل للخانة الفرغة
nil

ثم نقوم بالجمع عادي
مثال

p1(x):=2x^2+3x^3+4x^5
p2(x):=3x^2+4x^3+8x^4+3x^9+10x^10
بالجمع
ax^b+cx^b:=(a+c)x^b
فهنا نعمل مقارنة لل
pui
لما يكون لدينا نفس القيمة نجمع ل
coe معا

المثال السابق بالجمع ينتج ما يلي
p3(x):=5x^2+7x^3+8x^4+4x^5+3x^9+10x^10

الامر بسيط
كل ما في الامر ان المجموع نضعه في سلسلة جديدة حتى لا نضيع قيم السلستين السابقيتن
وطالما ان الجمع لا يعتمد على
les pointeurs //on ne tient pas commpt les suivants de chaque case
بالعكس مثلا ادا كنا نريد الترتيب تصاعديا

مثلا
soit les deux liste suivant

l1:=1-->3--->5
l2:=2-->4-->6
فادا اردنا ترتيبهم ترتيب تصاعدي في سلسلة جديدة فاننا سوف نغير
le pointeure suivant pour des case
في المثال السابق
le pointeur est la signe
-->
فالسلسة الناتجة تكون كالتالي
l3:=1-->--2-->3--4>--5-->6
فنلاحظ اننا احدثنا تغيرات فيما يخص
-->
فسابقا كان لدينا التالي
1-->3
و
2-->4
ففي النتاج اصبحت
1-->2
2-->3
3-->4



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

10x^2+2x^3

هده الكتابة صحيحة
بينما في البرنامج كان عليك ان تددخل قيمة اكبر من 10 حتى يتقبلها يعني ادا ادخلت 2 يرفضها فاسف على الخطا

شكرا

algeriano9354
2013-05-11, 00:40
بـــــــــــــــــــــــــــارك الله فيك أخي ،،،

salemk
2013-05-11, 01:54
L'ISBN (International Standard Book Number) est un numéro qui permet d'identifier le titre d'un
livre.
Ce numéro est formé de 20 caractères regroupés en 4 parties :
- La première correspond à la zone linguistique qui est un nombre de 3 chiffres hexadécimaux
distincts, et qui commence obligatoirement par une lettre :
Exemples : A12 pour Arabe
FB2 pour Français
- Les deux autres parties (indiquant l'éditeur et le numéro d'ordre dans la production de l'éditeur)
sont formes uniquement par des chiffres : 8 chiffres par partie.
- La dernière partie (chiffre ou lettre) correspond à la clé de contrôle :
La clé est le reste de la division d'un nombre intermédiaire N par 11 en utilisant la règle de
divisibilité.
- Si ce reste est non nul est formé d’un seul chiffre, la clé sera égale au reste.
- Si ce reste est 10 la clé sera notée X.
- Si le reste est 0 la clé sera égale à la somme des chiffres de la représentation binaire de la première
partie, le nombre intermédiaire N est obtenu en regroupant les deux chiffres de même position de la
2eme et la 3eme partie de numéro de l'ISBN suivis des deux chiffres de la position suivante jusqu'à
ajouter les deux chiffres de la 8eme position.
Exemple1

La question SVP ???


L’énoncé est le suivant :




L’ISBN (International Standard Book Number) est un numéro qui permet d’identifier le titre d’un livre.
Ce numéro est formé de 20 caractères regroupés en 4 parties :
o La 1ère partie correspond à la zone linguistique qui est un nombre de 3 chiffres hexadécimaux distincts, qui commencent obligatoirement par une lettre :
Exemple :
A12 pour Arabe ;
FB2 pour Français ;
o Les deux autres parties (indiquant l’éditeur et le numéro d’ordre de la production de l’éditeur) sont formées uniquement par des chiffres : 8 chiffres par partie.
o La dernière partie (chiffre ou lettre) correspond à la clé de contrôle :
La clé est le reste de la division d’un nombre intermédiaire N par 11 en utilisant la règle de divisibilité par 11.
- Si ce reste est non nul et formé d’un seul chiffre, la clé sera égale au reste.
- Si ce reste est égale à 10, la clé sera noté X.
- Si ce reste est égal à 0, la clé sera égale à la somme des chiffres de la représentation binaire de la 1ère partie.
Le nombre intermédiaire N est obtenu en regroupant les deux chiffres de même position de la 2ème et la 3ème partie du numéro de l’ISBN suivis des deux chiffres de la position suivante jusqu'à ajouter les deux chiffres de la 8ème position.

Exemple :
- Numéro saisi : A12-41213104-92651027
Numéro affecté au livre : A12-41213104-92651027-5
- Numéro saisi : A12-41213104-92651022
Numéro affecté au livre : A12-41213104-92651022-4
- Numéro saisi : A12-11111113-05550005
Numéro affecté au livre : A12-11111113-05550005-X

Ecrire un programme Pascal qui permet d’affecter un numéro à un livre.



Une proposition d'un programme Pascal




program ISBN;
uses wincrt;


function verif(t:string):boolean;
var
r:boolean;
i:byte;
begin
r:=true;
if not(upcase (t[1]) in ['A'..'F']) then
begin
writeln('Xxx-xxxxxxxx-xxxxxxxx ,doit- être une lettre de A --> F');
r:=false;
end;
if ((t[1] = t[2]) or (t[2] = t[3]) or (t[1]=t[3])) then
begin
writeln('XXX-xxxxxxxx-xxxxxxxx ,doivent- être distincts');
r:=false;
end;
if not((upcase(t[2]) in ['0'..'9','A'..'F']) and (upcase(t[3]) in ['0'..'9','A'..'F'])) then
begin
writeln('xXX-xxxxxxxx-xxxxxxxx ,doivent- être de 1 --> F');
r:=false;
end;
if ((t[4] <>'-') or (t[13]<>'-')) then
begin
writeln('xxx - xxxxxxxx - xxxxxxxx , n''oubliez pas les - ');
r:=false;
end;
i:=5 ;
while ((t[i] in ['0'..'9'])and (i<=12)) do
begin
i:=i+1;
end;
if i<=12 then
begin
writeln('xxx-XXXXXXXX-xxxxxxxx , que des chiffres');
r:=false;
end;
i:=14 ;
while ((t[i] in ['0'..'9'])and (i<=21)) do
begin
i:=i+1;
end;
if i<=21 then
begin
writeln('xxx-xxxxxxxx-XXXXXXXX , que des chiffres');
r:=false;
end;
if length(t)>21 then
r:=false;
verif:=r;
end;

function regroupe(s:string):string;
function div11(s1:string):integer;
var
j,spair,simpr,d1,e1:integer;
begin
spair:=0;
simpr:=0;
for j:=1 to length(s1) do
begin
val(s1[j],d1,e1);
if j mod 2 =0 then
spair:=spair+d1
else
simpr:=simpr+d1
end;
div11:=abs(spair-simpr);
end;
var
x:extended;
e,i,d:integer;
c,ch1:string;
chiffre:string;

begin
chiffre:='0123456789ABCDEF';
x:=0;
for i:=5 to 12 do
begin
val(s[i],d,e);
x:=x*10+d;
val(s[i+9],d,e);
x:=x*10+d;
end;
str(x:16:0,ch1);
if (div11(ch1) mod 11) in [1..9] then
begin
str((div11(ch1) mod 11),c);
s:=s+'-'+c;
end
else if (div11(ch1) mod 11=10) then
s:=s+'-'+'X'
else
begin
d:=0;
for i:=1 to 3 do
d:=d*16 + (pos(upcase(s[i]),chiffre)-1);
e:=0;
while d<>0 do
begin
e:=e+(d mod 2);
d:=d div 2;
end;
str(e,c);
s:=s+'-'+c;
end;
regroupe:=s;
end;

var
ch:string;
begin
repeat
writeln('introduire un numéro qui à la forme XXX-XXXXXXXX-XXXXXXXX');
readln(ch);
until verif(ch);
writeln(regroupe(ch));
end.

Bakadis
2013-05-13, 08:52
هل لغة c مطلوبة منا رياضيات واعلام آلي سنة اولى؟

you92cef
2013-05-13, 20:11
هل لغة c مطلوبة منا رياضيات واعلام آلي سنة اولى؟

ليس بالضرورة جل الجامعات تدرس السنة الاولى باسكال والفصل الاول من السنة الثانية باسكال ايضا وبتداءا من الفصل الثاني سنة ثانية تتعاملون مع السي
او العكس
يمكن ان تتعالموا مع الباسكال السنة الاولى اما السنة الثانية فتتعاملون مع السي
وهناك حتى جامعات تدؤس الي ابتداءا من السنة الاولى
فهدا متعلق على الجامعة

kharbouche
2013-05-13, 20:50
السلام عليكم انا طالب في تسيير قاعدة المعطيات تريد شروحات على enregistrements غدا عندي فرض جزاكم الله خيرا اريد ان افهم جيدا

you92cef
2013-05-13, 21:33
السلام عليكم انا طالب في تسيير قاعدة المعطيات تريد شروحات على enregistrements غدا عندي فرض جزاكم الله خيرا اريد ان افهم جيدا

les type enregistrement est un type qui contient des champ de meme ou different type
le type enregistrement
se declare en pascal comme suit


type nom_enregistrement = record
nom_champ1:type
nom_champ2:type....
..
..
.end;





type note=record/pas de point virgule apres record
module:string;
note_controle:byte;
credit:integer;
end;/end; apres la fin de definition de type record




ex
for i:=1 to n do begin
writeln('entrez le module');
readln(note.module);
writeln('entrez la note controle')
readln(note.note_controle
end;


on peut declarez un tableau de type enregistrement
par exmaple


type module=record
nom_module:string;
credit:integer;
not_controle:integer;
note_examen:integer;
end;
type pp =array[1..10]of module
begin
for i:=1 to 10 do begin
writeln('entrez les information de module,i);
writeln('entrez le nom de modulen',i);
readln(module[i].nom_module)
writeln('entrez lle credit de module',i);
readln(module[i].creadit);
writeln('entrez la note de controle pour le module',i);
readln(mode[i].note_controle);
writeln('entrez la note d'examen pour le module',i);
readln(module[i].note_examen);
end;


chaque fois que la boucle tourne on obtient les information de chaque module
module1,2,3,..10

mode[i].nom_module signeifier
le nom de module pour le module i

ex



module[2].note_controle
veut dire
la note de controle pour le module2
la lecture se fait a paritir a droite de la poinr
.
on suit a gauche de la point

ent
on peut meme faire un tableau d'enregistrment dans un autre tableau d'enregistremt
ex

type structure= array[1..10] of departement
type departement =array[1..15] of module
type module=record
prof_module:string
notec:byte;
notee:byte;
end;
cela veut dire
que on a un tableau de departement
de 1 a 10
on peut avoir mois de 10 normale
ex
departement
math
info
chimie
bio
st
sm
gp
......
..
.
chaque departement est lui meme contient un tableau de module de 1 a15
on peut avoir moin de 15
example
math:
analyse
algebre
mec
ele
chimie
info1
info2
...

info:
info3
info4
base de donne
html
...
..
.
chaque module est un enregistrement
donc chaque module est lui meme contient des champ
par example
le chapmr*p analyse on a
prof1
12
13
dans les champ d'enregistremnt
on peut avoir un enregitrement
c.a.d
un champ d'enregistremt lui meme peut etre un enregitrement
merci

حذيفة بن اليمان
2013-05-15, 02:32
أخي إذا تقدر تعطيني معلوماتك أريد التواصل معك.

bhazar
2013-05-16, 11:09
السلام عليكم
ممكن اخي دروس و تمارين في enregistrements و liste et ficher
و بارك الله فيك مسبقا

adil40
2013-05-16, 12:34
ارجو منكم المساعدة في حل هذا التمرين عن البرمجة
التمرين موجود في المرفقات وجزاكم الله كل الخير

you92cef
2013-05-16, 18:59
أخي إذا تقدر تعطيني معلوماتك أريد التواصل معك.

لا توجد معلومات للاتصال للاسف

الوسيلة الوحيدة للاتصال هي منتديات الجلفة سواء بمواضيع او غبر الرسائل الخاصة
شكرا

you92cef
2013-05-16, 19:09
السلام عليكم
ممكن اخي دروس و تمارين في enregistrements و liste et ficher
و بارك الله فيك مسبقا

هدا موقع لدروس باسكال وكا طلبته هناك خاصية الصفحات السابقة والموالية للدروس السابقة او اللاحقة
http://www-ipst.u-strasbg.fr/pat/program/pascal12.htm
+
دروس وتمارين مع الحل
http://www.academia.edu/1906492/Algorithmique_et_Structures_de_Donnees_I
السنة الاولى 1
دروس مع الحل
http://www.academia.edu/1906505/Algorithmique_et_Structures_de_Donnees_II
السنة الثانية
قد تحتاج الى التسجيل في الموقع لتحميل الملفات ومشاهدتها بجودة عالية

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

you92cef
2013-05-16, 19:14
السلام عليكم
ممكن اخي دروس و تمارين في enregistrements و liste et ficher
و بارك الله فيك مسبقا

هدا ايضا درس كامل ووافي في الاغوريتم
http://www.ethnoinformatique.fr/mod/resource/view.php?id=2793
يمكنك تحميله عادي بنسخة
pdf
clic gauche enregistre sous
---------------
صفحة خاصة بطلاب الاعلام الالي
فيها روابط بعضها مهم والاخر غير مهم ارجوا ان تختار ما تريده انت بنفسك
http://www.ethnoinformatique.fr/course/view.php?id=52

you92cef
2013-05-16, 19:22
ارجو منكم المساعدة في حل هذا التمرين عن البرمجة
التمرين موجود في المرفقات وجزاكم الله كل الخير

التمرين غير واضح
+
حاول ان تبرمج هده التمارين بنفسك لكي تتعلم منها

وتكتشف اخطاءك

adil40
2013-05-17, 15:08
أرجو منك يا الخ المساعدة لأنني لم افهم التمرين

you92cef
2013-05-17, 18:07
ضع الترمين ونحن نساعدك ان شاء الله الترمين غير واضح !

بهاار
2013-05-19, 21:29
السلام عليكم

ارجوا مساعدتي في حل التمارين المرفقة
انا بامس الحاجة لها

boughaba mohamed
2013-05-19, 23:26
السلام عليكم
إخواني انا مطالب بإنجاز هذا التمرين الطويل ولقد بدأت فيه لكني توقفت في منتصف الطريق وذلك لأني لا أعرف بعض الأفكار التي تلزمني لإكماله
إليكم رابطين بهما صورة للتمرين وايضا بعض المساعدات حول كيفية إنجازه
وإذا لديكم اي فكرة اخبروني لأقوم بوضع محاولتي وإلى اين وصلت لنقوم بالتعاون لإكماله بإذن الله في عجاله
http://www5.0zz0.com/2013/05/14/14/781844431.jpg
http://www2.0zz0.com/2013/05/14/14/675090152.jpg
وشكرا سلفا

you92cef
2013-05-21, 18:48
بخصوص تمارين الباسكال
les tableaux
فيوجد الكثير من التمارين في هدا الموضوع مشابهة تماما للمطلوب يكفي فقط نقلها والتعديل فيها
+
بخصوص
les liste chaine
تم وضع برنامج خاص في الاول ولكن تبقى مشاكل
l'inserton ,supression
حاول مراجعة الرابطين
ففيهما بعض التمريان مميزة ومشابهة تماما للمطلوب
http://www.academia.edu/1906492/Algorithmique_et_Structures_de_Donnees_I
http://www.academia.edu/1906505/Algorithmique_et_Structures_de_Donnees_II

بسسب الامتحانات قد يتعدر معالجة بعض الطلبات
سنحاول وضع بعض الحلول اثناء الخميس الجمعة والسبت ان شاء الله

you92cef
2013-05-21, 19:10
بخصوص
les pointeures
هدا برنامج فيه جل
les procedure
التي نستعملها
يكفي فقط نسخ وتعديل على بعضها


program liste(input,output);
TYPE tpoint=^tval;
tval=record
valeur:integer;
suivant:tpoint
end;
VAR prem:tpoint; {variable globale}
n:integer;
c:char;

procedure lire;
var precedent,point:tpoint;
i:integer;
{ modifie N et PREM }
begin
write('combien d''éléments?');
readln(n);
new(prem);
write('1ère valeur ? ');
readln(prem^.valeur);
precedent:=prem;
for i:=2 to n do begin
new(point);
write(i,'ième valeur ? ');
readln(point^.valeur);
precedent^.suivant:=point;
precedent:=point
end;
precedent^.suivant:=NIL
(* le dernier ne pointe sur rien *)
end;

procedure afficher;
var point:tpoint;
i:integer;
begin
point:=prem;
for i:=1 to n do begin
writeln(point^.valeur);
point:=point^.suivant
end
end;

procedure supprimer;
var point,prec:tpoint;
rep:char;
begin
point:=prem;
repeat
write(point^.valeur,' à ôter ?');
readln(rep);
if rep='O' then begin
n:=n-1;
if point<>prem then begin
prec^.suivant:=point^.suivant;
dispose(point);
point:=prec^.suivant
(* se préparer pour la suite *)
end
else begin
prem:=prem^.suivant;
dispose(point);
(* ancien premier *)
point:=prem
end
end
else begin
(* pointer sur le suivant *)
prec:=point;
point:=point^.suivant
end
until point=nil
end;

procedure rajouter;
var p1,p2,prec:tpoint;
rep:char;
begin
p1:=prem;
repeat
write(p1^.valeur,' rajouter un
élément avant (O/N) ? ');
readln(rep);
if rep='O' then begin
n:=n+1;
if p1<>prem then begin
new(p2);
write('valeur ? ');
readln(p2^.valeur);
prec^.suivant:=p2;
p2^.suivant:=p1;
prec:=p2;
end
else begin
new(p1);
write('valeur ? ');
readln(p1^.valeur);
p1^.suivant:=prem;
prem:=p1
end
end
else begin
(* pointer sur le suivant *)
prec:=p1;
p1:=p1^.suivant
end
until p1=nil;
p1:=prec;
repeat
write('ajouter un élément en fin
de liste (O/N) ? ');
readln(rep);
if rep='O' then begin
n:=n+1;
new(p2);
write('valeur ? ');
readln(p2^.valeur);
p1^.suivant:=p2;
p2^.suivant:=nil;
p1:=p2
end
until rep<>'O'
end;

BEGIN {prog principal}
lire;
repeat
writeln('A:afficher, S:supprimer R:rajouter, F:fin');
write('votre choix ? ');
readln(c);
case c of
'A':afficher;
'S':supprimer;
'R':rajouter
end
until c='F'
end.

boughaba mohamed
2013-05-21, 20:20
بخصوص تمارين الباسكال
les tableaux
فيوجد الكثير من التمارين في هدا الموضوع مشابهة تماما للمطلوب يكفي فقط نقلها والتعديل فيها
+
بخصوص
les liste chaine
تم وضع برنامج خاص في الاول ولكن تبقى مشاكل
l'inserton ,supression
حاول مراجعة الرابطين
ففيهما بعض التمريان مميزة ومشابهة تماما للمطلوب
http://www.academia.edu/1906492/algorithmique_et_structures_de_donnees_i
http://www.academia.edu/1906505/algorithmique_et_structures_de_donnees_ii

بسسب الامتحانات قد يتعدر معالجة بعض الطلبات
سنحاول وضع بعض الحلول اثناء الخميس الجمعة والسبت ان شاء الله


شكرا اخي على ردك
رجاءا اريد رابط الصفحة اين اجد البرنامج الذي اشرت اليه اخي الكريم

you92cef
2013-05-21, 20:45
شكرا اخي على ردك
رجاءا اريد رابط الصفحة اين اجد البرنامج الذي اشرت اليه اخي الكريم

روابط الخاصة
les tabnleau
موجود في الرابطين السابقين مع ردود هدا الموضوع في الصفحات من 10 الى 20 تقريبا
الرابطين السابقين فيهما خوارزميات تنفعك يكفي فقط ترجمتها

boughaba mohamed
2013-05-21, 21:17
روابط الخاصة
les tabnleau
موجود في الرابطين السابقين مع ردود هدا الموضوع في الصفحات من 10 الى 20 تقريبا
الرابطين السابقين فيهما خوارزميات تنفعك يكفي فقط ترجمتها

بارك الله فيك أخي بفضلك اكتملت الفكرة واعدك اني سأضع البرنامج بإذن الله عند اتمامه في القسم
شكرا مجددا

salemk
2013-05-25, 17:52
البسملة1

الفاصلة1
Devoirs Bac TP pour Sciences d’informatique



الفاصلة3
Premier devoir

http://img4.hostingpics.net/pics/502118230520138HALGO.jpg
الفاصلة3


الفاصلة3
Le deuxième
http://img4.hostingpics.net/pics/4858562305201310HALGO.jpg
الفاصلة3


الفاصلة3
Le troisième
http://img4.hostingpics.net/pics/7904722305201314HALGO1.jpg
http://img4.hostingpics.net/pics/2034762305201314HALGO2.jpg
الفاصلة3

houssem.hammache
2013-05-25, 18:22
ecrire un algo que lit la diùonsion n d'un tableaux t de type
entier remplir le tableaux par des valeur entree au clavier et affiche le tableaux
**ranger ensuite les elemnt du tableux t dans l'ordre inverse sans utiliser se tableux
affiche le tableux r"sultat

you92cef
2013-05-25, 19:28
ecrire un algo que lit la diùonsion n d'un tableaux t de type
entier remplir le tableaux par des valeur entree au clavier et affiche le tableaux
**ranger ensuite les elemnt du tableux t dans l'ordre inverse sans utiliser se tableux
affiche le tableux r"sultat

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

you92cef
2013-05-25, 19:37
البسملة1

الفاصلة1
devoirs bac tp pour sciences d’informatique



الفاصلة3
premier devoir

http://img4.hostingpics.net/pics/502118230520138halgo.jpg
الفاصلة3


الفاصلة3
le deuxième
http://img4.hostingpics.net/pics/4858562305201310halgo.jpg
الفاصلة3


الفاصلة3
le troisième
http://img4.hostingpics.net/pics/7904722305201314halgo1.jpg
http://img4.hostingpics.net/pics/2034762305201314halgo2.jpg
الفاصلة3



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

شكرا على الموضوعات

boughaba mohamed
2013-05-26, 13:08
السلام عليكم

لقد قمت بإعداد برنامج به 12 عشر تعليمة وقد تمكنت من اتمام 9 تعليمات وباقي 3 فأرجو منكم مساعدتي في اتمامها وجزاكم الله الف خير



1) بروسيدور لحذف عنصر من الجدول supprission

2) بروسيدور إضافة عنصر للجدول insertion

3) بروسيدور عكس قيم الجدول أي قلبها فقط وليس ترتيبها inverser

طبعا بلغة الباسكال او الدلفي وشكرا

lataoui nouradine
2013-05-29, 19:51
d,i,z,j:integer;

t,f,n:string;
s:array[1..50]of string[1];
function rec(n:string):integer;
begin
d:=length(n);
for i:=1 to d do begin
t:=copy(n,1,1);
s[i]:=t;
n:=copy(n,2,d-i);
writeln('s[',i,']=',s[i]);
end;
end;
begin
readln(n);
rec(n);
end.
لقد حاولت جاهدا وهذا احسن ما قمت به بقي فقط جمع الاعداد لم اعرف كيف اجمعها بحيث اذا جمعت مثلا 8 و9 المفروض تكون النتيجة 17 الا انه يظهر النتيجة 98

لم افهم هذه النقطة جيدا

lataoui nouradine
2013-05-29, 19:54
merccccccccccccccccccc:mh92:cccccccccccccccccccccc cccccccccciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii

kharbouche
2013-05-29, 20:58
لسلام عليكم و رحمة الله ارجوا منكم المساعدة في حل هدا التمرين

objectif principal
r&akiser une application en pascal
objectif intermédiare
- controle des donnees à la saisie
-utilisation des accées séquentiel ou direct aux données
pour mettre à jour est consulter les données.

enoncé du sujet

la comune de constantine dispose du fichiet F_ELECT contenant les donnée concernant
les élécteurs dela commune , il se compose des champs suivant N°=ELECTEUR ,ADRESSE,NOM.PRENOM.DATE_NAISS.N°=CENTRE.N°+bureau

travail a faire

1- les traitements
-ajouter (créer) un nouvel électeur (s'inscrie)
-supprimé un élécteur(changement d'adresse)
-chercher un electeur par nom
-trie le fichier par ordrer alphabétique
2les controles de données
-les NOM et PRENOM ne doivent pas être des chaine.non vident et caractére majuscules.
-sexe('F','M').
-controle date.
3-
créer l'exécutable du programme et rédiger un rapport incluant les algorithme de l'application ainsi que le guide d'utilisation de votre programme.

la carte d'élécteur a le format suivant:


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

CARTE VOTE

N°=ELECTEUR ...........................

NOM.................................
PRENOM..............................

ADRESSE.............................

N°=CENTRE.......... N°=BUREAU........

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

kharbouche
2013-05-29, 21:09
السلام عليكم

لقد قمت بإعداد برنامج به 12 عشر تعليمة وقد تمكنت من اتمام 9 تعليمات وباقي 3 فأرجو منكم مساعدتي في اتمامها وجزاكم الله الف خير



1) بروسيدور لحذف عنصر من الجدول supprission

2) بروسيدور إضافة عنصر للجدول insertion

3) بروسيدور عكس قيم الجدول أي قلبها فقط وليس ترتيبها inverser

طبعا بلغة الباسكال او الدلفي وشكرا

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

program string_inverse_mot;
uses crt;
const n=13;
var mot1,mot2:string[n];
l,i :integer;
begin
clrscr;
write('taper un mot de ',n,' caracteres : ');
read (mot1);
l:=length(mot1);
mot2 := mot1[n];
for i:= (l-1) downto 1 do
mot2:=mot2+mot1[i];
writeln(' l"inverse du mot est : ',mot2);
readln;
readln;
end.

suuprission
procedure choix_menu2 (var f:fich; var tableau:tab;var tableau2:tab; var rep3:char);
var
pos_emp,i,j : byte;
begin

Clrscr;
writeln('MENU SUPPRESSION EMPLOYE');
writeln;
writeln;
writeln('Choisir la position de l''employé à supprimer : ');
readln(pos_emp);



reset(f);
for i:=1 to filesize(f) do
begin
read(f, tableau[i]);
tableau2[i].nom :=tableau[i].nom;
tableau2[i].salaire :=tableau[i].salaire;
tableau2[i].tache :=tableau[i].tache;
tableau2[i].journee :=tableau[i].journee ;
end;
for i:= 1 to pos_emp-1 do
begin
rewrite(f);
write(f,tableau2[i]);
end;

seek(f,pos_emp+1);

for i:=pos_emp+1 to filesize(f) do
begin
write(f,tableau2[i]);
end;
close(f);
repeat
write('Opération réussite, voulez-vous revenir au menu principale ? (O/N) : ');
readln(rep3);
until rep3 in ['o','O','N','n'];
clrscr;
end;

او برنامج اخر suppression كالتالي avec la recherche de ça position

PROCEDURE suppression(var f: fic);
var pos, i: integer;
r: enr;
temp: fic;
begin
pos:=saisiepos(f);
assign(temp, 'temp.fic');
rewrite(temp);
reset(f);
{Copie du fichier f dans le fichier temp jusqu'a la position pos-1}
for i:=0 to pos-1 do
begin
seek(f,i);
read(f,r);
write(temp,r);
end;
{Copie du fichier f dans le fichier temp de la position pos+1 a la fin}
for i:=pos+1 to filesize(f)-1 do
begin
seek(f,i);
read(f,r);
write(temp,r);
end;
close(f);
close(temp);
{Suppression de l'ancien fichier f et remplacement par temp}
erase(f);
rename(temp, 'rep.fic');
assign(f, 'rep.fic');
writeln;writeln('Ok.');
pause;
end;

boughaba mohamed
2013-05-30, 19:09
end;

السلام عليكم
شكرا أخي علىاستجابتك لطلبي ولكني وجدت الدوال من قبل وقد قمت بتقديم البرنامج اليوم والحمد لله كان كامل وبما انك جديد في تعلم البرمجة فأرجو ان نتعاون كلينا لإنجاز بعض البرامج

boughaba mohamed
2013-05-30, 19:38
بالمناسبة أخي kharbouche الدوال التي انجزتها انت تتعامل مع type string والأمر مختلف مع برنامجي لأني أعمل ب type integer

you92cef
2013-05-30, 20:26
d,i,z,j:integer;

t,f,n:string;
s:array[1..50]of string[1];
function rec(n:string):integer;
begin
d:=length(n);
for i:=1 to d do begin
t:=copy(n,1,1);
s[i]:=t;
n:=copy(n,2,d-i);
writeln('s[',i,']=',s[i]);
end;
end;
begin
readln(n);
rec(n);
end.
لقد حاولت جاهدا وهذا احسن ما قمت به بقي فقط جمع الاعداد لم اعرف كيف اجمعها بحيث اذا جمعت مثلا 8 و9 المفروض تكون النتيجة 17 الا انه يظهر النتيجة 98

لم افهم هذه النقطة جيدا

هدا لانك تتعامل
مع
type char ou type string
تدكير


a,b:integer;
a:=5
b:=2
a+b=7
b+a=7
c,d:string ou char
c:='4'
d:='5'
'c+d:='45
'd+c='54

a,b:integer
la somme
a+b=b+a=type integer
c,d char ou string
c+d<>d+c:=type char ou string
la longuer de resultatat
est la longuer de c + longeur de d


حاول تصحيح البرنامج

you92cef
2013-05-30, 20:31
لسلام عليكم و رحمة الله ارجوا منكم المساعدة في حل هدا التمرين

objectif principal
r&akiser une application en pascal
objectif intermédiare
- controle des donnees à la saisie
-utilisation des accées séquentiel ou direct aux données
pour mettre à jour est consulter les données.

enoncé du sujet

la comune de constantine dispose du fichiet F_ELECT contenant les donnée concernant
les élécteurs dela commune , il se compose des champs suivant N°=ELECTEUR ,ADRESSE,NOM.PRENOM.DATE_NAISS.N°=CENTRE.N°+bureau

travail a faire

1- les traitements
-ajouter (créer) un nouvel électeur (s'inscrie)
-supprimé un élécteur(changement d'adresse)
-chercher un electeur par nom
-trie le fichier par ordrer alphabétique
2les controles de données
-les NOM et PRENOM ne doivent pas être des chaine.non vident et caractére majuscules.
-sexe('F','M').
-controle date.
3-
créer l'exécutable du programme et rédiger un rapport incluant les algorithme de l'application ainsi que le guide d'utilisation de votre programme.

la carte d'élécteur a le format suivant:


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

CARTE VOTE

N°=ELECTEUR ...........................

NOM.................................
PRENOM..............................

ADRESSE.............................

N°=CENTRE.......... N°=BUREAU........

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

الاصح انها تبرمج بلغات برمجة اخرى
عموما يمكن برمجتها بالباسكال
باستعمال
enregistrement
et des tableau
باقي الاسئلة لا تختلف كثيرا عن التمارين الخاصة بالجداول
les tableau
تم وضح شرح وتمارين من هدا النوع هنا وموجود روابط خارجية
حاول البدء في برمجتها
ووضع الحل للمساعدة والمناقشة فيه
indication
on utilise des tableau de type record
ou des liste chaineé
les traitement pour resoudre les questiones sont les meme pour les tableau
la difference c'est l'utilissation des champ
t[i]
ou
t[i].nom_etu
par example

ghost_4d
2013-05-31, 14:41
في الاجراءات les procedure
متى نقوم بوضع var
ومتى لا نقوم بذلك ؟؟ هل هناك شرط معين ؟؟

صفوان مازيغ
2013-05-31, 15:51
Ecrire un sous pgm qui permet de convertir un nbr donné par l'utilisateur à représentation en hexadécimal en utilisant les chaines de caractères

you92cef
2013-05-31, 18:28
في الاجراءات les procedure
متى نقوم بوضع var
ومتى لا نقوم بذلك ؟؟ هل هناك شرط معين ؟؟

بخصوص البروسيدور فهناك نوعان يتعلقان بمناداته
1-pasage par parametre/*/ valeur/*/
2-pasage par variable
----------
Passage par valeur:

La valeur de l’expression passée en paramètre est copiée dans une variable locale. C’est cette variable qui est utilisée pour faire les calculs dans la fonction appelée.
Si l’expression passée en paramètre est une variable, son contenu est copié dans la variable locale. Aucune modification de la variable locale dans la fonction appelée ne modifie la variable passée en paramètre, parce que ces modifications ne s’appliquent qu’à une copie de cette dernière.

Passage par variable:

La deuxième technique consiste à passer non plus la valeur des variables comme paramètre, mais à passer les variables elles-mêmes. Il n’y a donc plus de copie, plus de variable locale. Toute modification du paramètre dans la fonction appelée entraîne la modification de la variable passée en paramètre.
---------------------

ففي الحالة الاولى
فادا تم مناداة بروسيدور بقيمة
فانه يقوم بنسخ هته القيمة في متغير جديد
مثلا
ننادي على بروسيدور بمتغير /*/س/*/ قيمته 5
ففي هده الحالة
يقوم البروسيدور باخد متغير جديد /*/ع/*/ بحيث تكون قيمته قيمة /*/س/*/
يقوم بكل العمليات التي تتعلق مثلا بالبروسيدور
وبالتالي قد تتغير قيمة /*/ع/*/ بححسب العمليات
عند الخروج من البروسيدور نلاحظ ان قيمة /*/س/*/ التي نادينا بها البروسيدور لم تتغير

هته الحالة تستعمل في عرض النتائج مثلا لاننا لا نحتاج الى تعديل

في الحالة الثانية
ادا نادينا بروسيدور بقيمة
فانه يقوم بكل عملياته على القيمة
فادا نادينا البروسيدور بالمتغير /*/س/*/
فان البروسيدور سوف يقوم بكل العمليات على المتغير /*/س/*/
والبتالي فعند الخروج من البروسيدور فان قيمة س قد تتغير

هده الحالة تستعمل مثلا في ترتيب جدول او مصفوفة

شكرا

you92cef
2013-05-31, 18:37
Ecrire un sous pgm qui permet de convertir un nbr donné par l'utilisateur à représentation en hexadécimal en utilisant les chaines de caractères

راجع الردود في هته لصفحة
http://www.djelfa.info/vb/showthread.php?t=1135321&page=27

ghost_4d
2013-05-31, 19:26
مثلا هذا الاجراء ،، هل من خطأفي ما يخص المتغيرات ؟
procedure triparbulles (t:tab,n:integer); var i,k:integer; var b:booleen;
k:=1; b:=vrai;
tanque b= vai faire
dtq
b:=faux;
pour i:=1 a n-k faire
dpour
si t[i]>t[i+1] alors
dsi
x:=t[i] ;
t[i]:=t[i+1] ;
t[i+1]:=x
b:=vrai
fsi
fpour
k:=k+1;
ftq

you92cef
2013-05-31, 23:37
مثلا هذا الاجراء ،، هل من خطأفي ما يخص المتغيرات ؟
procedure triparbulles (t:tab,n:integer); var i,k:integer; var b:booleen;
k:=1; b:=vrai;
tanque b= vai faire
dtq
b:=faux;
pour i:=1 a n-k faire
dpour
si t[i]>t[i+1] alors
dsi
x:=t[i] ;
t[i]:=t[i+1] ;
t[i+1]:=x
b:=vrai
fsi
fpour
k:=k+1;
ftq

نعم
لان البروسيدور يقوم بعمل
permutation
فالتغير يجب ان يكون على القيم الاصلية للمصفوفة وليس على نسخها
les changement ce sont sur les variable de tableau non pas sur leurs copie

-------------------
pour cela on doit choisir passage par valeur /*/ les changement se sont sur les variable
non pas sur les copie
donc
c'est le mot var qui indique sa





procedure triparbulles (var t:tab,n:integer); var i,k:integer; var b:booleen;
k:=1; b:=vrai;
tanque b= vai faire
dtq
b:=faux;
pour i:=1 a n-k faire
dpour
si t[i]>t[i+1] alors
dsi
x:=t[i] ;
t[i]:=t[i+1] ;
t[i+1]:=x
b:=vrai
fsi
fpour
k:=k+1;

abdoumatador
2013-06-06, 18:53
LA METHODE P.E.R.T
L’objet de la méthode P.E.R.T. est la planification dans le temps d’un certain nombre de tâches (par
exemple, les interventions des divers corps de métier participant dans un chantier) liées entre elles
par des contraintes de précédence du genre : « telle tâche ne peut être commencée que si telle autre
tâche a été entièrement exécutée ». Les données sont :
• l’ensemble des tâches auxquelles on s’intéresse. Nous supposerons les avoir numérotées et, dans
les explications suivantes, nous écrirons Ti pour signifier « la tâche numéro i » ;
• la durée Di de chaque tâche Ti ;
• un ensemble de couples (Ti, Tjà qu’on lit « la tâche Ti doit être terminée pour que la tâche Tj puisse
être commencée » définissant les relations de précédence.
Nous cherchons deux choses :
1. Un arrangement séquentiel des tâches qui respecte les contraintes de précédence.
2. Pour chaque tâche, une date de commencement au plus tôt, tenant compte des durées de
toutes les tâches qui doivent être achevées avant que la tâche en question puisse
commencer.
Notez bien que 1. Et 2. sont les réponses à deux questions très différentes :
Dans 1., on vous demande de trouver une des dispositions séquentielles possibles (il y en a
généralement plusieurs), comme si une seule personne ou équipe devait réaliser toutes les tâches.
On appelle cela le TRI TOPOLOGIQUE des tâches selon la relation de précédence, qui est une relation
d’ordre partiel.
Dans 2., il s’agit au contraire de trouver à quelle date chaque tâche pourrait commencer si celles
qui doivent la précéder étaient exécutées sans prendre aucun retard et en exploitant tous les
parallélismes possibles.
DONNEES INITIALES :
La lecture des données permet d’associer immédiatement à chaque tâche Ti:
• sa durée Di ;
• le nombre Pi de ses prédécesseurs immédiats (les tâches Tk qui figurent dans des couples (Tk, Ti)) ;
• l’ensemble des successeurs immédiats de Ti (les tâches Tj figurant dans des couples (Ti,Tj)).
• on calculera par la suite Ci ; la date de commencement au plus tôt de Ti. Cette valeur est
initialement égale à 0 et ensuite, à chaque tour de l’algorithme ci-dessous elle sera modifiée.
ALGORITHME. On gère un ensemble de taches sans prédécesseurs (TSP).
Placer dans TSP toutes les tâches sans prédécesseur.
Tant que TSP n’est pas vide :
- choisir une tâche Ti deTSP3 (peu importe laquelle), indiquer qu’elle peut être exécutée et l’enlever
de TSP. Sa date de commencement au plus tôt n’est autre que la valeur actuelle de Ci.
- parcourir l’ensemble des successeurs (Tj) de Ti. Pour chaque élément Tj faire
Cj  max {Cj, Ci + Di }
Pj  Pj - 1
si Pj = 0, faire entrer Tj dans TSP.
Informatique 1ère Année 2012-2013
2
- Les itérations s’arrêtent lorsque TSP est vide (cela finit toujours par arriver).
Alors :
- si toutes les tâches ont été exécutées, le programme a fini son travail ;
- sinon, c’est qu’il y a une boucle dans les relations de précédence ; il faut annoncer cette anomalie.
INTERFACE UTILISATEUR :
Pour réaliser les deux opérations expliquées et pouvoir arrêter la consultation, le programme doit
reconnaître et exécuter trois commandes (qu’on peut, par exemple, associer des nombres ou des
lettres) :
- Lire le nombre Q de tâches, puis la durée Di de chaque tâche Ti.
-Lire des couples de taches (Ti, Tj) jusqu’ à la rencontre d’une valeur conventionnelle
indiquant la fin. Chacun de ces couples exprime une contrainte de précédence.
- Exécuter l’algorithme décrit ci-dessus, afin de trouver la date de commencement au plus
tôt des différentes tâches. Affichez des couples (i, Ci) où i est un numéro de tâche et Ci sa
date de commencement au plus tôt. Cet affichage représente l’un des arrangements
séquentiels possibles des taches.
Pour terminer, affichez la date d’achèvement (au plus tôt) du projet tout entier.
PROGRAMME A REALISER :
Vous écrirez un programme principal offrant à l’utilisateur les fonctionnalités décrites ci-dessus.
Il est obligatoire d’utiliser :
- Les fichiers et / ou Les enregistrements.
- Les tableaux.
- Au moins une procédure ou une fonction.
EXEMPLE D’EXECUTION. Les interventions de l’utilisateur sont soulignées :
Nombre de taches : 5
Durée de la tache 0 : 20
Durée de la tache 1 : 15
Durée de la tache 2 : 30
Durée de la tache 3 : 10
Durée de la tache 4 : 25
Donne des couples i j (-1 pour terminer) :
3 1 1 0 1 4 0 2 4 2 -1
Tri et dates des taches :
Tache 3 (date : 0)
Tache 1 (date : 10)
Tache 4 (date : 25)
Tache 0 (date : 25)
Tache 2 (date : 50)
Date d'achèvement du projet : 80
Remarque : Ceci est un exemple, vous pouvez utiliser le format que vous voulez pour les données en

entrée et celles en sortie.

abdoumatador
2013-06-06, 18:54
اريد طريقة ترتيب les taches

you92cef
2013-06-07, 10:21
اريد طريقة ترتيب les taches

اولا
هدا النوع من الخوارزميات المفروض انها تتعلق بالدكاء الاصناعي والبتالي المفروض انها لا تدرس ابتداءا من السنة الاولى ولكن في الجزائر كل شيء مقبول /*/ يعني بالمختصر المفيد كان يمكن جلب تمرين اخر ولكن بطريقة اخرى وصياغة اكثر سهولة/*/

ثانيا
هدا النوع من الخوارزميات لديه مواد خاصة به وكان في السباق مادة وتخصص مستقل
ordonencement
ولكن حاليا مع النظام الجديد حدث خلط لدى البعض بين النظام الجديد والنظام القديم

ثالثا
يمكن تلخيص محتوى التمرين
سواءا برسم او بصياغة اخرى

حاول البداء في التمرين بقراءة وما يبقى بالترتيب سهل

كريم عربي
2013-06-07, 18:46
خويا يوسف، إذا تقدر تعطيني حسابك على الفـيسبوك أو الـسـكايب محتاجك في أمر خاص وضروري وعاجل.

ومستعد نخلصك فيه.

you92cef
2013-06-07, 23:01
يا أخي كي نقولك أمر خاص نورمالمون تفهمني.

ماهوش تع منتديات، لازم نكلمك في الخاص وجها لوجه.

مش مشكل في الفيسبوك أو السـكايب، اعطيني وسيلة تواصل حتى إيميل.

وبارك الله فيك.

او متحيرنيش خو:confused:

للاسف كيما قلت ليك

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

وسائل الاتصال لا احبد استعمالها ببساطة لانني ادا استعملتها سوف اخسر الكثير من الاصدقاء بسببها

ارسل ملخص لما تريده وبعدها يمكن نتواصل بطرق اخرى

حيرتني والله:confused: