بعض مسائل في الباسكال محلولة

achraf.mouni

  • Hero Member
  • *****
    • مشاركة: 2439
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
في: أيار 06, 2009, 09:49:35 مسائاً
اليكم بعض مسائل في الباسكال  محلولة


المسألة الأولى

اكتب برنامج يقوم بحساب المعدل A والانحراف المعياري (القياسي) STDDEV لمجموعة من القيم
X1,X2,…,Xn علماً أن عدد هذه القيم N وأن المعدل يحسب بالعلاقة :
 
 
     كود:
     = (X1+X2++Xn) / N
الحل :
 
 
     كود:
     
Program BST
;
Var  
I,x,N:integer;
Sum1,sum2,A,SD:real;
Begin
Read
(N);
Sum1 :=0;
Sum2 :=0;
For 
i:=1 to N do
begin
Readln
(x);
Sum1 := Sum1 x;
Sum2 := Sum2 +sqr(x);
end;
A:=Sum1/N;
SD:=sqrt(Sum2/sqr(A));
Writeln(A:5:5,SD:5:5);
End.

المسألة الثانية

مثلث قائم الزاوية طول كل من ضلعيه B,A اكتب برنامج يقرأ طولي الضلعين القائمين ويحسب طول الوتر ومساحة المثلث والزاويتين المقابلتين للضلعين ثم يطبع النتائج بحيث يطبع لك نتيجة العنوان المناسب
 
الحل :
 
     كود:
     
Program BST
;
Var 
A,B,C,area:real;
    
i,f:integer;
Begin
Read
(A,B);
:= sqrt(sqr(a)+sqr(b));
Area := A*B/2;
:= 0;
repeat
i
:=i+1;
until(round(cos(i))= round(B/C));
f:=90-i;
writeln(A,B,C,i,f);
End.
         
المسألة الثالثة

لتكن لدينا قائمة من الاعداد الصحيحة لا يتجاوز طولها حداً اعضمياً ما (وليكن 100 مثلاً) .ولنفترص ان العدد نفسه قد يرد اكثر من مرة في هذه القائمة ..
 
الحل :
 
     كود:
     
program BST
;
const 
maxN=100;
var
n,i:integer;
: array [1..maxNof integer;
begin
writeln
('input n <= ',maxN);
readln(n);
for 
i:=1 to n do
  
readln(a[i]);
end.
                                                                           
المسألة الرابعة

اكتب برنامج يقوم بقراءة هذه الاعداد وأوجد العدد الذي يكون تواتر وروده في هذه القائمة هو الاعلى ضمن تواترات الاعداد .
 
الكود :
     
كود:
      
 
program BST;
const 
maxN=100;
var 
a,: array [1..maxNof integer;
    
i,j,n,most,index:integer;
begin
writeln 
('input N <=',maxN);
readln (N);
for 
i:=1 to n do
begin
write
('input a[',i,']=');
readln(a[i]);
end;
for 
i:=1 to n do
begin
b
[i]:=0;
for 
j:=1 to n do
if (
a[i]=a[j]) then
 b
[i]:=b[i]+1;
end;
most:=b[1];
for 
i:=1 to n do
if 
b[i]>=most then
j
:=i;
writeln(a[j],' frequency ',b[j]);
readln;
end


             

المسألة الخامسة

اكتب برنامجاً يقوم بإيجاد جميع القواسم للعدد الصحيح N الذي يعطى مدخل للبرنامج ..
 
الحل:
 
     كود:
     
program BST;
var 
i,integer;
begin
readln
(n);
for 
i:=1 to n do
  if (
n mod i 0)then
  writeln 
(n/i:0:0);
readln;
end.
المسألة السادسة

اكتب برنامجاً يقوم بطباعة جدول الحقيقة للعمليات المنطقية على متحولين منطقيين ..والعلميات هي : التقاطع ، الاجتماع ، النفي ..
 
الحل :

     كود:
      
program BST6
;
var 
A,B:boolean;
begin
writeln
('A':8,'B':10,'A and B':12,'A or B':10,'not(A)':10);
for 
A:= false to true do
    for 
B:= false to true do
        
writeln(A:10,B:10,and B:10,or B:10,not(A):10);
readln
end
.
             
المسألة السابعة

اكتب برنامجاً يقوم بايجاد ناتج ضرب مصفوفة A أبعادها n*m بقيمة ثابتى K وتخزين النتائج في مصفوفة جديدة B ، ثم يطبع النتائج .
 
اكتب برنامجاً يقوم بقراءة عناصر مصفوفتين A و B ثم يحسب ناتج العملية التي يرغب بها المستخدم (جمع أو طرح أو ضرب) ، وتخزين الناتج في مصفوفة C وأخيراً طباعة النتائج .
 
الحل :
 
     كود:
     
program BST6
;

const 
maxN=100;maxM=100;
type mat=array[1..maxN,1..maxM]of integer;
var 
A,B,c:mat;
    
n,m,l,i,j,k:integer;
    
ch char;
 
procedure readMat(var A:mat;var m,n:integer);
begin
for i:=1 to m do
    for 
j:=1 to n do
        
begin
        write
('mat[',i,',',j,']=');
        
readln(A[i,j]);
        
end;
end;
 
procedure writeMat(A:mat;m,n:integer);
begin
for i:=1 to m do
    
begin
    
for j:=1 to n do
        
write(a[i,j]:4);
    
writeln;
    
end;
end;
 
function 
multK(A:mat;k:integer):mat;
begin
for i:=1 to n do
    for 
j:=1 to m do
        
begin
        B
[i,j]:= K*A[i,j];
        
end;
multK:=B;
end;
 
function 
minus(A,B:mat):mat;
begin
for i:=1 to m do
    for 
j:=1 to n do
        
C[i,j]:=A[i,j]-B[i,j];
minus:=C;
end;
 
function 
plus(A,B:mat):mat;
begin
for i:=1 to m do
    for 
j:=1 to n do
        
C[i,j]:=A[i,j]+B[i,j];
plus:=C;
end;
 
function 
mult(A,B:mat;m,l,n:integer):mat;
begin
for i:=1 to m do
    for 
j:=1 to n do
        for 
k:=1 to l do
            
c[i,j]:=c[i,j]+A[i,k]*B[k,j];
mult:=C;
end;
 
begin
write
('input m<=',maxM,'.. m=' );readln(m);
write('input n<=',maxN,'.. n=');readln(n);
readMat(A,m,n);
writeln('input the const K');readln(k);
B:=multK(A,K);
writeln('The matrix A : ');
writeMat(A,m,n);
writeln('The matrix B=K*A : ');
writeMat(B,m,n);
writeln('choose the operation + , - or * ');
readln(ch);
case 
ch of
'+' c:=plus(A,B);
'-' c:=minus(A,B);
'*' begin
      writeln
('input m<=',maxM,'input l<=',maxN);readln(m,l);readMat(A,m,l);
      
writeln('input l<=',maxN);readln(n);readMat(B,l,n);
      
c:=mult(A,B,m,l,n);
      
end;
end;
writeMat(c,m,n);
readln;
end.
             


المسألة الثامنة

اكتب برنامج يقوم بطباعة جدول ASCII بشكل عمودين : في العمود الاول يظهر ترتيب المحرف (أي الرقم المقابل له حسب الترميز المعتمد في شيفرة ASCII) ، وفي العمود الثاني يظهر المحرف نفسه .
 
الحل :
 
     كود:
     
program BST
;

uses crt;
var 
i:integer;

begin
for i:=1 to 256 do
    
begin
    writeln
(i:10,chr(i):10);
    
delay(150);
    
end;
readln;
end.
                                                             
المسألة التاسعة

اكتب برنامجاً بلغة باسكال بحيث تكون نتيجة تنفيذه هي جدولاً مؤلفاً من أربعة أعمدة .
  • يكتب في العمود الاول : العدد
  • وفي العمود الثاني جذر العدد
  • وفي العمود الثالث مربع العدد
  • وفي العمود الرابع لوغاريتم العدد وذلم منن أجل الاعداد الصحيحة الزوجية التي تنتمي للمجال
    كود:
     [20,2]

الحل :
 
     كود:
     
program BST;
 
var i:integer;

begin
writeln('N':15,'sqrt(N)':15,'sqr(N)':15,'ln(N)':15);
writeln;
for i:=1 to 10 do
writeln(2*i:15,sqrt(2*i):14:3,sqr(i):14,ln(2*i):17:3);
readln
end.


achraf.mouni

  • Hero Member
  • *****
    • مشاركة: 2439
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #1 في: أيار 06, 2009, 10:00:32 مسائاً
المسألة العاشرة

 
اكتب البرامج المطلوبة للمسألة التالية :
 
أ - برنامج جزئي يقوم بقراءة عناصر مصفوفة أعداد صحيحة A أبعادها n*m .
 
ب - برنامج جزئي يقوم بطباعة عناصر مصفوفة أعداد صحيحة A أبعادها n*m .
 
ج - برنامج جزئي يقوم بايجاد ناتج جداء مصفوفتين A : n*m و B : m*l علماً ان عناصر المصفوفتين هي اعداد صحيحة .
 
د - مستفيداً من البرمج الجزئية في الطلبات السابقة ، اكتب برنامجاً بلغة باسكال يحسب ناتج العبارة الآتية ويطبعه :
 
     كود:
      
Tn
*An*m × Bm*Cn*l × Dl*n

علماً ان جميع عناصر المصفوفات هي اعداد صحيحة.
 
الحل:
 
     كود
:
      
program BST;
 
const 
maxN=100;maxM=100;maxL=100;
type mat= array [1..maxN,1..maxMof integer;
var 
i,j,k,m,n,l:integer;
    
A,B,C,D,T1,T2,mat;
 
procedure readMat(var A:mat;var n,m:integer);
begin
for i:=1 to n do
    for 
j:=1 to m do
        
begin
        write
('mat[',i,',',j,']=');
        
readln(A[i,j]);
        
end;
end;
 
procedure writeMat(A:mat;n,m:integer);
begin
for i:=1 to n do
    
begin
    
for j:=1 to m do
        
write(a[i,j]:4);
    
writeln;
    
end;
end;
 
procedure mult(var A,B,C:mat;n,l,m:integer);
begin
for i:=1 to n do
    for 
j:=1 to m do
        for 
k:=1 to l do
            
c[i,j]:=c[i,j]+A[i,k]*B[k,j];
end;
 
begin
write
('input n<=',maxN,' .. n=' );readln(n);
write('input m<=',maxM,' .. m=');readln(m);
write('input L<=',maxL,' .. L=');readln(L);
readMat(A,n,m);
readMat(B,m,n);
readMat(C,n,l);
readMat(D,l,n);
mult(A,B,T1,n,m,n);
mult(C,D,T2,n,l,n);
for 
i:=1 to n do
  
begin
  
for j:=1 to n do
      
begin
      T
[i,j]:=T1[i,j]+T2[i,j];
      
write(T[i,j]:4);
      
end;
  
writeln;
  
end;
end.
                                               
المسألة 11

بفرض لدينا مجموعة من اعداد حقيقية عددها N ، اكتب برنامجاً بلغة باسكال يقوم بايجاد أكير عدد في هذه المجموعة وترتيبه بين عناصرها . ثم ايجاد أصغر عدد في هذه المجموعة وترتيبه بين عناصرها وطباعة النتائج .
 
الحل :
 
كود
	
 
program BST;

var 
n,i,T1,T2 :integer;
    
: array[1..100]of real;
    
max,min:real;
 
begin
readln
(n);
for 
i:=1 to n do
    
readln(a[i]);
max :=a[1];
T1:=1;
for 
i:=2 to n do
    if 
a[i]>max then
       begin
       T1
:=i;
       
max:=a[i];
       
end;
min :=a[1];
T2 :=1;
for 
i:=2 to n do
    if 
a[i]<min then
       begin
       T2
:=i;
       
min :=a[i]
       
end;
writeln('MAX = ',max,' T1 = ',T1);
writeln('MIN = ',min,' T2 = ',T2);
end.  
	
	
 
	



المسألة 12  ...
 

اكتبر برنامجاً بلغة باسكال (اي طبعاً باسكال .. ليش في غيرها بالسنة الاولى ؟؟؟) يقوم بقراءة عناصر مصفوفة حقيقية A ابعادها m*n ثم يوجد مجموع عناصر المصفوفة الواقعة تحت القطر الرئيسي ، ومجموع العناصر الواقعة فوق القطر الرئيسي .. ويقارن بين المجموعتين ..
 
الحل :
    كود:
    
program BST
;

var 
i,j,n,:integer;
    
: array[1..999,1..999of real;
    
sumUP,sumDOWN real;

begin
readln
(n,m);
for 
i:=1 to n do
    for 
j:=1 to m do
        
readln(a[i,j]);
sumDown :=0;
sumUp :=0;
for 
i:=1 to n do
    for 
j:=1 to m do
    
begin
    
if i<j then
       SumUP 
:= SumUp a[i,j];
    if 
i>j then
       SumDown 
:= SumDown a[i,j];
    
end;
if 
sumUp>sumDown then
   writeln
('UP aktar men DOWN')
else
    if 
sumUp=sumDown then
       writeln
('UP like Down !')
    else
        
writeln('UP small men DOWN !')
end.

           
المسألة 13

 
نقول عن مصفوفة مربعة بأنها ذات قطر مسيطر اذا كانت القيمة المطلقة لكل عنصر موجود على القطر الئيسي اكبر من مجموع القيم المطلقة للعناصر الموجودة معه في نفس السطر عدا العنصر القطري .
 
اكتب برنامج يقوم بقراءة عناصر مصفوفة C ابعادها n*n ثم يختبرها اذا كانت ذات قطر مسيطر أم لا .
 
الحل :
    كود:
    
program BST
;

label there;
var  
i,j,n,sum:integer;
     
a:array[1..100,1..100]of integer;

begin
readln
(n);
for 
i:=1 to n do
    for 
j:=1 to n do
        
readln(a[i,j]);
for 
i:=1 to n do
    
begin
    sum 
:=0;
    for 
j:=1 to n do
        if 
i<>j then
           sum 
:= sum abs(a[i,j]);
    if 
abs(a[i,i])>=abs(sumthen
       begin
       writeln
('the matrix doesn''t have a dominator QOTOR');
       goto 
there;
       
end;
    
end;
writeln('the marix has a DOMINATOR QOTOR');
there :
readln;
end.

           
المسألة 14

إن  مجموع مربعات الاعداد الصحيحة من 1 الى n يعطى بالعلاقة :
 
 
	
كود
	
 
2^+3^+4^2+...+n^n(n+1)*(2n+1)/6
اكتب برنامجاً بلغة باسكال يحتوي على برنامج جزئي يأخذ كوسيط شكلي القيمة n ويعطى نتيجة تدل على صحة العلاثة أو عدم صحتها . ثم يطبع النتائج .
 
الحل :
 
    كود:
     
program BST94
;

var 
n:integer;
procedure BST(n:integer);
var 
T1,T2 real;
    
:integer;

begin
T1
:=0;
for 
i:=1 to n do
    
T1:=T1 exp(2*ln(i));
T2:=n*(n+1)*(2*n+1)/6;
if 
T1=T2 then
   writeln
(true)
else
   
writeln(false);
end;
begin
readln
(n);
BST(n);
readln;
end.


المسألة 15

اكتب برنامج بلغة باسكال يقوم بحساب فيمة x المعرفة بالشكل :
 
    كود:
    
X   =   1/1/1/+ ...
من أجل n عدد صحيح مُعطى .
الحل :
 
    كود:
     
program BST
;
var 
i,n:integer;
    
x:real;
begin
readln
(n);
X:=0;
for 
i:=0 to n do
   
:=1/exp(i*ln(2));
writeln(X);
readln
end
.


achraf.mouni

  • Hero Member
  • *****
    • مشاركة: 2439
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #2 في: أيار 06, 2009, 10:13:01 مسائاً
مسالة
اكتب برنامج يستطيع قراءة أي ملف نصي، ويحسب المعلومات التالية الخاصة بهذا الملف:

· عدد الأسطر الكلي.
· عدد الأحرف الكلي.
· عدد الأحرف الأبجدية.
. جدول تواتر الأحرف الأبجدية (الحرف الكبير والصغير متكافئان) أي عدد مرات ورود الحرف في نص الملف مقسوماً على عدد الحروف الأبجدية فيه.       
var
c:char;
t:text;
i,lines,characters,letters:integer;
s:string;
letters_array:array[1..26]of integer;
begin {main}
             {***********
initializing***********}
for 
i:=1 to 26 do letters_array[i]:=0;
lines:=0;
characters:=0;
letters:=0;
write('Enter the name of your file with its path ');
write('if necessary or drag its icon by mouseinto this window: ');
readln(s);
assign(t,s);
reset(t);
           {**************
reading*************}
while(
not(eof(t))) do
begin {while 1}
    while(
not(eoln(t))) do
    
begin {while 2}
          
read(t,c);
          
characters:=characters+1;
          if ((
c>='a')and(c<='z'))then
           
{you can use sets to express this (if c in ['a'..'z']then)}
          
begin {if 1}
                
letters_array[ord(c)-96]:=letters_array[ord(c)-96]+1;
                
letters:=letters+1;
          
end;  {if 1}
          if ((
c>='A')and(c<='Z'))then   {you can use sets heretoo.}
          
begin {if 2}
                
letters_array[ord(c)-64]:=letters_array[ord(c)-64]+1;
                
letters:=letters+1;
          
end; {if 2}
    
end; {while 2}
    
readln(t);
    
lines:=lines+1;
end; {while 1}
close(t);
             {*************
results**************}
writeln('Total lines:      ',lines);
writeln('Total characters: ',characters);
writeln('Total letters:    ',letters);
writeln('Press ENTER to sea letters sequence table....');
readln;
for 
i:= 1 to 26 do writeln(chr(i+64),',',chr(i+96),' ':10,'Sequence: ',
letters_array[i]:3,' ':10,'Rate: ',letters_array[i]/letters:0:3);
readln;
end. {main}


achraf.mouni

  • Hero Member
  • *****
    • مشاركة: 2439
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #3 في: أيار 06, 2009, 10:17:48 مسائاً
مسألة

المطلوب كتابة اجرائية :
 
     كود
:
   
  
procedure GetLine(var f:text; var L:line; var n:integer); 
حيث line هو نمط جدول محرفي:
   

     type Line
=array[1..80of char
تقوم الإجرائية بقراءة السطر الحالي من الملف النصي f للجدول المحرفي L وتضع عدد الأحرف الفعلية للسطر في المعامل n.
والآن نريد استخدام الإجرائية السابقة لقراءة ملف نصي سطراً تلو الآخر، وحساب عدد الكلمات في كل سطر. حيث تعرف الكلمة بأنها تتالي أحرف لايتضمن الفراغ ولا أدوات التنقيط.
 
اكتب برنامجاً يقوم بحساب عدد الكلمات في كل من أسطر ملف نصي ، واختبره في عدة ملفات نصية
program text2;
type
line
=array[1..80]of char;
var
b:boolean;
i,j,n,words:integer;
ln:line;
t:text;
s:string;
 
procedure getline(var f:text; var l:line; var n:integer);
begin {procedure 1}
     
n:=0;
     while (
not(eoln(f)))do
     
begin {while 1}
          
n:=n+1;
          
read(f,l[n]);
     
end; {while 1}
     
readln(f);
end; {procedure 1}

begin {main}
     
write('Enter the name of your file with its path');
     
write(' if necessary or drag its icon by mouseinto this window: ');
     
readln(s);
     
assign(t,s);
     
reset(t);
     
j:=0;
     while (
not(eof(t)))do
     
begin {while 2}
          
j:=j+1;
          
getline(t,ln,n);
          
words:=0;
          
b:=true;
          for 
i:=1 to n do
          
begin {for 1}
               if 
ln[iin ['a'..'z','A'..'Z']then
               begin 
{if 1}
                    if 
b=true then
                    begin 
{if 2}
                         
words:=words+1;
                         
b:=false;
                    
end; {if 2}
               
end  {if 1}
               else {if 
1}
                   
b:=true;
          
end; {for 1}
          
writeln('Line ',j:3,' ':10,'Total words: ',words);
          
writeln('Go to the next line if found?!!!....Press ENTER');
          
readln;
     
end; {while 2}
     
close(t);
end. {main}


lucky girl

  • Hero Member
  • *****
    • مشاركة: 1151
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #4 في: أيار 06, 2009, 10:29:37 مسائاً
شكراااااااا اخي على العمل الرائع ................الله يجازيك كل الخير


achraf.mouni

  • Hero Member
  • *****
    • مشاركة: 2439
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #5 في: أيار 06, 2009, 10:33:27 مسائاً
لا شكر على واجب اختي دليلة
شكر لمرورك الطيب جزاك الله خير



achraf.mouni

  • Hero Member
  • *****
    • مشاركة: 2439
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #6 في: أيار 07, 2009, 09:07:31 مسائاً
Exercice 1
  Ecrire un algorithme qui réalise la copie d'une matrice d'entiers de taille n x m dans une autre matrice d'entiers de taille n x m.
  001  Copie d'une matrice d'entiers             }
002  
003  action copieMatrice
(src,dst)
004    Donnees             src tableau [N][Mde entier  tableau source         }
005    Donnees Resultat  dst tableau [N][Mde entier  tableau destination    }
006    Locales  i,entier                               indices de boucle      }
007    pour i de 0 à N-1 faire
008      pour j de 0 à M
-1 faire
009        dst
[i][j] := src[i][j]
010      fait
011    fait
012  fin action
   
CopieMatrice.lda
  Exercice 2
  a) Ecrire un algorithme qui calcul la somme des valeurs de la diagonale principale d'une matrice de réels carrée de taille n x n.
  001  Calcul de la somme des valeurs            }
002  de la diagonale principale                }
003  d'une matrice de reels                    }
004  
005  fonction sommeDiagonalePrincipale(t) : reel
006    Donnees t : tableau [N][N] de reel   { tableau de recherche                  }
007    Locales i : entier                   { indice de boucle pour                 }
008            cumul : reel                 { variable maximum resultat             }
009    cumul := 0.0
010    pour i de 0 à N-1 faire
011      cumul := cumul + t[i][i]
012    fait
013    Resultat : cumul
014  fin fonction


   SommeDiagonalePrincipaleMatrice.lda
  b) Ecrire un algorithme qui calcul la somme des valeurs de la diagonale secondaire d'une matrice de réels carrée de taille n x n.

  001  
Calcul de la somme des valeurs            }
002  de la diagonale secondaire                }
003  d'une matrice de reels                    }
004  
005  fonction sommeDiagonaleSecondaire(t) : reel
006    Donnees t : tableau [N][N] de reel   { tableau de recherche                  }
007    Locales i : entier                   { indice de boucle pour                 }
008            cumul : reel                 { variable maximum resultat             }
009    cumul := 0.0
010    pour i de 0 à N-1 faire
011      cumul := cumul + t[i][N-1-i]
012    fait
013    Resultat : cumul
014  fin fonction

   SommeDiagonaleSecondaireMatrice.lda

 
Exercice 3
  Ecrire un algorithme de recherche de la valeur maximale d'une

matrice de réels de taille n x m.
  001  Calcul de la valeur maximale contenue     }


002  dans une matrice de reels                 }
003  
004  fonction valeurMaximaleMatrice
(t) : reel
005    Donnees t 
tableau [N][Mde reel   tableau de recherche                  }
006    Locales i,entier                 indices de boucle pour                }
007            max reel                   variable maximum resultat             }
008    max := t[0][0]
009    pour i de 0 à N-1 faire
010      pour j de 0 à M
-1 faire
011        si t
[i][j] > max alors
012          max 
:= t[i][j]
013        fsi
014      fait
015    fait
016    Resultat 
max

017  fin fonction

   
ValeurMaximaleMatrice.lda
 
Exercice 4

  a) Ecrire un algorithme qui calcule le produit d'une matrice de réels de taille 4 x 4 par une matrice de réels de taille 4 x 4.

  001  
Calcul de la matrice 4x4 obtenue          }
002  par produit de deux matrices 4x4 de reels }
003  
004  action produitMatrices4x4
(t1,t2,t)
005    Donnees             t1,t2 tableau [4][4de reel  tableaux a multiplier  }
006    Donnees Resultat  t tableau [4][4de reel      tableau resultat       }
007    Locales i,j,entier                  indices de boucle pour             }
008            aux tableau [4][4de reel    tableau auxiliaire de calcul       }
009    pour i de 0 à 3 faire
010      pour j de 0 à 3 faire
011        aux
[i][j] := 0.0
012        pour k de 0 à 3 faire
013          aux
[i][j] := aux[i][j] + t1[i][k]*t2[k][j]
014        fait
015      fait
016    fait
017    copieMatrice
(aux,t);
018  fin action

   On utilise l'action de copie de matrice développée à l'exercice 1 adaptée aux tableaux de réels.
  ProduitMatrices4x4.lda
  b) Ecrire un algorithme qui calcule le produit d'une matrice de réels de taille n x m par une matrice de réels de taille m x p.

  001  
Calcul de la matrice nxp obtenue          }
002  par produit de deux matrices nxm et mxp   }
003  
004  action produitMatrices
(t1,t2,t)
005    Donnees             t1 tableau [N][Mde reel     tableau a multiplier   }
006                        t2 tableau [M][Pde reel     tableau a multiplier   }
007    Donnees Resultat  t tableau [N][Pde reel      tableau resultat       }
008    Locales i,j,entier                  indices de boucle pour             }
009            aux tableau [N][Pde reel    tableau auxiliaire de calcul       }
010    pour i de 0 à N-1 faire
011      pour j de 0 à P
-1 faire
012        aux
[i][j] := 0.0
013        pour k de 0 à M
-1 faire
014          aux
[i][j] := aux[i][j] + t1[i][k]*t2[k][j]
015        fait
016      fait
017    fait
018    copieMatrice
(aux,t);
019  fin action


روبن

  • Full Member
  • ***
    • مشاركة: 144
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #7 في: أيار 10, 2009, 02:23:18 مسائاً
عمل رائع بارك الله فيك
كل ما نحتاجه في مادة إعلام آلي 2
الله يخليك....



mimik

  • Hero Member
  • *****
    • مشاركة: 1607
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #8 في: أيار 16, 2009, 09:18:43 مسائاً
شكراعلى هدا العمل


^ice^

  • Newbie
  • *
    • مشاركة: 4
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #9 في: كانون الثاني 10, 2011, 07:38:58 مسائاً
السلام عليكم ورحمة الله وبركاته

أشكر الأخ achraf.mouni جـزيل الشكر على هذه المسائل الرائعه
ولكن هناك تسأول ؟
في المسأله السابعه اريد منك ان تشرح لي كيف تعمل عمليه الضرب لانني لم اتمكن منها

وسأكون لك شـاكرة


^ice^

  • Newbie
  • *
    • مشاركة: 4
    • مشاهدة الملف الشخصي
    • البريد الالكتروني
رد #10 في: كانون الثاني 10, 2011, 07:44:13 مسائاً
الرجـاء المسـأعدة العاجلة لأني اريد أن افهم هذا  الكـود