2012-11-03, 21:49
|
رقم المشاركة : 8
|
معلومات
العضو |
|
إحصائية
العضو |
|
|
اقتباس:
المشاركة الأصلية كتبت بواسطة salemk
التمرين الاول
كود:
program suite;
uses wincrt;
var
n,i,u0,v0,w0,un,vn,wn:longint;
begin
u0:=1;
v0:=2;
w0:=3;
readln(n);
for i :=1 to n do
begin
un:=2*u0+3*v0+w0;
vn:=u0+v0+2*w0;
wn:=u0+4*v0+w0;
u0:=un;
v0:=vn;
w0:=wn;
end;
writeln('U(',n,')= ',u0);
writeln('V(',n,')= ',v0);
writeln('W(',n,')= ',w0);
end.
Les programmes de l’exercice1 et la solution précédant tournent bien.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Le programme qui suit est théorique car sous un éditeur Pascal lors de la déclaration des modules on s’assure de la visibilité des objets et de l’ordre des définitions qui doit être conformes aux appels des modules.
Dans U on appel V et W, pour calculer V on appel U et W et pour W on utilise U et V : c’est une récursivité croisée, l’éditeur Pascal ne permet pas une telle récursivité
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
كود:
program suite;
uses wincrt;
function u(n:longint):longint;
begin
if n=0 then
u:=1
else
u:= 2*u(n-1)+3*v(n-1)+w(n-1);
end;
function v(n:longint):longint;
begin
if n=0 then
v:=2
else
v:= u(n-1)+v(n-1)+2*w(n-1);
end;
function w(n:longint):longint;
begin
if n=0 then
w:=3
else
w:= u(n-1)+4*v(n-1)+w(n-1);
end;
var
n: longint;
begin
readln(n);
writeln('U(',n,')= ',u(n));
writeln('V(',n,')= ',v(n));
writeln('W(',n,')= ',w(n));
end.
|
الحل الاول يشتغل جيدا
الحل الثاني هناك خطا *-* باللون الاحمر
وهذا ما اشرت اليه سابقا بحيث انني اجد صعوبة في استدعاء دالة داخل دالة رغم ان الاستاذ قال انه يمكنك استدعاء دالة في اي مكان تريد
عموما سوف احتفظ بالحل عندي وسوف احالو القيام بحل بالطريقة الثانية اعتمادا على الطريقة الاولى
|
|
|