السلام عليكم مشاركة جديدة وارجو قبولي عضو بينكم وانا في السنة 1 رياضيات و الاعلام الالي واريد الاستفادة واريد مساعدتي في حل تماريني .
كتابة برنامج في الباسكال و الالغوريتم معادلة من الدرجة 2 و العاملي ارجو تقديم معلومات عن هده البرامج لاني لم ادرس الكثير لاني كنت غائبة ارجو المساعدة من فضلكم في اقرب وقت
le but du TP est d'implémenter les opérations de base sur les piles et évaluer des expressions arithmétiques au format préfixé.
dans une expression arithmétique au format préfixé, on trouve d'abord l'opérateur +,-,*,/,puis les opérandes.
par exemple, l'expression 10+2 sera écrite:+ 10 2
les opérandes peuvent etre eux memes des expressions
par exemple, l'expression (10+2)/3 sera écrite: /+ 10 2 3
هل هذا التحليل يطابق المطلوب؟
كود:
1) la liste des opérateurs et des opérandes correspond à une chaîne de caractères
2) les opérateurs forment la première partie de la chaîne
3) les opérandes forment la deuxième partie de la chaîne
4) deux opérandes sont limités par un seul espaces
5) nombre des opérandes = nombre des opérateurs + 1
6) avec plus qu’un opérateur on utilise les parenthèses pour le reste
7) le premier opérateur (à gauche) est celui à utiliser le dernier dans l’expression à évaluer
8) le dernier opérande (à droite) est celui à utiliser le dernier dans l’expression à évaluer
écrire les fonction qui retournent
la tangente d'un réel
la factorielle d'un nombre
فقط هتان
كود:
{faire attention, le type de fact est longint, ne depasser pas 16! }
function fact(n:integer):longint;
var
i:integer;
r:longint;
begin
r:=1;
for i:= 2 to n do
r:= r*i;
fact:=r;
end;
function tang(y:real):real;
begin
tang:=sin(y)/cos(y);
end;
السلام عليكم اريد مساعدة في حل هدا التمرين (langage c)
ecrire sous forme préfixée les expression suivantes: ((3-4)/(6-12))*((7+2)/6)
nous allons implémenter une methode permettant d'évaluer la valeur d'une expression préfixée entrée sous forme de chaine de caractére c'est a dire de calculer sa valeur .pour cela,nous utiliseronsune pile,appelée pile de résultats.
Nous parcourons la chaine contenant l'expression préfixée de droite a gauche.lorsque nous rencontrons un nombre, nous l'empilons .lorsque nous rencontrons un operateur nous dépilons deux nombres ,nous effectuons l'opération et nous empilons le resultat .a la fin la pile ne contient plus qu'un nombre:c'est le resultat de l'évaluation a retourner .
اقتباس:
المشاركة الأصلية كتبت بواسطة salemk
هل هذا التحليل يطابق المطلوب؟
كود:
1) la liste des opérateurs et des opérandes correspond à une chaîne de caractères
2) les opérateurs forment la première partie de la chaîne
3) les opérandes forment la deuxième partie de la chaîne
4) deux opérandes sont limités par un seul espaces
5) nombre des opérandes = nombre des opérateurs + 1
6) avec plus qu’un opérateur on utilise les parenthèses pour le reste
7) le premier opérateur (à gauche) est celui à utiliser le dernier dans l’expression à évaluer
8) le dernier opérande (à droite) est celui à utiliser le dernier dans l’expression à évaluer
شكرا جزيلا على التمرين
نظرا لأننا لا ندرس c في المعاهد، سأحاول أن أجد حلا باستعمال لغة باسكال بالاعتماد على المعطيات السالفة
le but du TP est d'implémenter les opérations de base sur les piles et évaluer des expressions arithmétiques au format préfixé.
dans une expression arithmétique au format préfixé, on trouve d'abord l'opérateur +,-,*,/,puis les opérandes.
par exemple, l'expression 10+2 sera écrite:+ 10 2
les opérandes peuvent etre eux memes des expressions
par exemple, l'expression (10+2)/3 sera écrite: /+ 10 2 3
اقتباس:
المشاركة الأصلية كتبت بواسطة salemk
كود:
1) la liste des opérateurs et des opérandes correspond à une chaîne de caractères
2) les opérateurs forment la première partie de la chaîne
3) les opérandes forment la deuxième partie de la chaîne
4) deux opérandes sont limités par un seul espaces
5) nombre des opérandes = nombre des opérateurs + 1
6) avec plus qu’un opérateur on utilise les parenthèses pour le reste
7) le premier opérateur (à gauche) est celui à utiliser le dernier dans l’expression à évaluer
8) le dernier opérande (à droite) est celui à utiliser le dernier dans l’expression à évaluer
هذه محاولة قد لا توافق المطلوب وتحتمل الكثير من التحسين لكن "هذاكة حد الجهيد "
كود:
program djelfa;
uses wincrt;
procedure lecture (var ch,operande,operateur:string);
function verif(ch:string):boolean;
var
i:integer;
begin
i:=1;
while ((i<=length(ch)) and (ch[i] in ['0'..'9','+','-','*','/',' '])) do
begin
i:=i+1;
end;
verif:=((ch<>'') and (i>length(ch)));
end;
var
i,j,nbespace:integer;
nombre:string;
begin
repeat
writeln('Saisir l''exprission à évaluer formée par des opérateurs et des opérandes');
writeln('----- opérandes puis opérateurs ---- (exemple /+ 10 2 3)');
readln(ch);
while ch[length(ch)] = ' ' do
begin
delete(ch,length(ch),1);
end;
j:=1;
while j<= length(ch) do
begin
while ((ch[j]=' ') and (not(ch[j+1] in ['0'..'9']))) do
begin
delete(ch,j,1);
end;
j:=j+1;
end;
i:=1;
nbespace:=0;
operateur:='';
operande:='';
nombre:='';
while ((ch[i] in ['+','-','*','/',' ']) and (i<=length(ch))) do
begin
if ch[i]<>' ' then
operateur:=operateur+ch[i];
i:=i+1;
end;
while ((ch[i] in ['0'..'9',' ']) and (i<=length(ch)))do
begin
while ((ch[i]<>' ') and (i<=length(ch))) do
begin
nombre:=nombre+ch[i];
i:=i+1;
end;
operande:=operande+' '+nombre;
i:=i+1;
nombre:='';
end;
for i:=1 to length(operande) do
if operande[i]=' ' then
nbespace:=nbespace+1;
until ((verif(ch)) and (length(operateur)+1=nbespace) and (length(operateur)+length(operande)=length(ch)));
end;
function evaluation(operande,operateur:string):real;
var
resultat:real;
operan:string;
i,erreur,d:integer;
begin
writeln;writeln;
resultat:=0;
delete(operande,1,1);
operan:=copy(operande,1,pos(' ',operande)-1);
delete(operande,1,pos(' ',operande));
val(operan,d,erreur);
resultat:=d;
operan:='';
for i:= length(operateur) downto 1 do
begin
repeat
operan:=operan+operande[1];
delete(operande,1,1);
until ((operande[1]=' ') or (operande=''));
val(operan,d,erreur);
operan:='';
case operateur[i] of
'+':resultat:=resultat+d;
'-':resultat:=resultat-d;
'*':resultat:=resultat*d;
'/':resultat:=resultat/d;
end;
end;
evaluation:=resultat;
end;
var
s,p1,p2:string;
begin
lecture (s,p1,p2);
writeln('le resultat de l''evaluation de l''exprission ',s,chr(13),'est', evaluation(p1,p2));
end.
السلام عليكم
الرجاء شرح مايلي :
le tri par comptage avec 3 tables
le tri par comptage avec 2 tables
أتمنى أن يكون الشرح بالتفصيل لأني لم أفهمهما بالاضافة الى الخوارزميات
وجزاكم الله كل خير
هذه محاولة قد لا توافق المطلوب وتحتمل الكثير من التحسين لكن "هذاكة حد الجهيد "
كود:
program djelfa;
uses wincrt;
procedure lecture (var ch,operande,operateur:string);
function verif(ch:string):boolean;
var
i:integer;
begin
i:=1;
while ((i<=length(ch)) and (ch[i] in ['0'..'9','+','-','*','/',' '])) do
begin
i:=i+1;
verif:=((ch<>'') and (i>length(ch)));
end;
var
i,j,nbespace:integer;
nombre:string;
begin
repeat
writeln('Saisir l''exprission à évaluer formée par des opérateurs et des opérandes');
writeln('----- opérandes puis opérateurs ---- (exemple /+ 10 2 3)');
readln(ch);
while ch[length(ch)] = ' ' do
begin
delete(ch,length(ch),1);
end;
j:=1;
while j<= length(ch) do
begin
while ((ch[j]=' ') and (not(ch[j+1] in ['0'..'9']))) do
begin
delete(ch,j,1);
end;
j:=j+1;
end;
i:=1;
nbespace:=0;
operateur:='';
operande:='';
nombre:='';
while ((ch[i] in ['+','-','*','/',' ']) and (i<=length(ch))) do
begin
if ch[i]<>' ' then
operateur:=operateur+ch[i];
i:=i+1;
end;
while ((ch[i] in ['0'..'9',' ']) and (i<=length(ch)))do
begin
while ((ch[i]<>' ') and (i<=length(ch))) do
begin
nombre:=nombre+ch[i];
i:=i+1;
end;
operande:=operande+' '+nombre;
i:=i+1;
nombre:='';
end;
for i:=1 to length(operande) do
if operande[i]=' ' then
nbespace:=nbespace+1;
until ((verif(ch)) and (length(operateur)+1=nbespace) and (length(operateur)+length(operande)=length(ch)));
end;
function evaluation(operande,operateur:string):real;
var
resultat:real;
operan:string;
i,erreur,d:integer;
begin
writeln;writeln;
resultat:=0;
delete(operande,1,1);
operan:=copy(operande,1,pos(' ',operande)-1);
delete(operande,1,pos(' ',operande));
val(operan,d,erreur);
resultat:=d;
operan:='';
for i:= length(operateur) downto 1 do
begin
repeat
operan:=operan+operande[1];
delete(operande,1,1);
until ((operande[1]=' ') or (operande=''));
val(operan,d,erreur);
operan:='';
case operateur[i] of
'+':resultat:=resultat+d;
'-':resultat:=resultat-d;
'*':resultat:=resultat*d;
'/':resultat:=resultat/d;
end;
end;
evaluation:=resultat;
end;
var
s,p1,p2:string;
begin
lecture (s,p1,p2);
writeln('le resultat de l''evaluation de l''exprission ',s,chr(13),'est', evaluation(p1,p2));
end.
شكرا اخي بارك الله فيك
لكنني لا اعرف كيف احول الحل من الباسكال الى c
مشكور على المحاولة
Début
TABL_ ç donnée
NBELEMENT ç donnée
Pour i de 1 à NBELEMENT-1 faire
Pour j de i+1 à NBELEMENT faire
Si TABL[i] > TABL[j]
alors TAMPON ç TABL[i]
TABL[i] ç TABL[j]
TABL[j] ç TAMPON
Fin Si
Fin pour j
Fin pour i
Fin
tri simple (croissant) de deux tableaux associés
Pour i de 1 à NBELEMENT-1 faire
Pour j de i+1 à NBELEMENT faire
Si TABL1[i] > TABL1[j]
alors TAMPON1 = TABL1[i]
TABL1[i] = TABL1[j]
TABL1[j] = TAMPON1
TAMPON2 = TABL2[i]
TABL2[i] = TABL2[j]
TABL2[j] = TAMPON2
Fin Si
Fin Pour j
Fin Pour i
On note que si l'on devait trier de nombreuses tables associées, il conviendrait d'utiliser une fonction d'inversion de deux éléments dans une table.
inversion d'une table
Pour i de 1 à division_entière(NBELEMENT,2) faire
TAMPON = TABL[i]
TABL[i] = TABL[NBELEMENT-i+1]
TABL[NBELEMENT-i+1] = TAMPON
Fin Pour i
Cet algorithme peut permettre de trier de façon décroissante un tableau au préalable trié de façon croissante (ou inversement) de façon beaucoup plus efficace que l'utilisation d'un nouveau tri. En effet les tris sont particulièrement consommateur en temps de traitement.
Tri Par Comptage
Algorithme Tri par comptage :
Cette méthode consiste a construire un vecteur , dans lequel on calcule la position que devrait avoir chaque élément pour que le vecteur soit trié:
soit la suite u dèfinie par un =0 , u2=9 et la relation de rècurrence :
pout tout n et n entier un+2=6un+1- 9un
on pose pour tout n entier , sn la somme des n premier termes de la suite
1 : ecrire un programme en turbo-pascal qui demande la valeur de n puis qui calcule et affiche un
2 : complèter le programme prècèdent , pour qu'il calcule et affiche sn
المشاركات المنشورة تعبر عن وجهة نظر صاحبها فقط، ولا تُعبّر بأي شكل من الأشكال عن وجهة نظر إدارة المنتدى
المنتدى غير مسؤول عن أي إتفاق تجاري بين الأعضاء... فعلى الجميع تحمّل المسؤولية